Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ETL処理をServerlessにしてみた件
Search
Recruit Technologies
March 20, 2019
Technology
7.5k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ETL処理をServerlessにしてみた件
2019/3/20 JAWS-UG コンテナ支部 #14での、日比野の講演資料になります
Recruit Technologies
March 20, 2019
More Decks by Recruit Technologies
See All by Recruit Technologies
障害はチャンスだ! 障害を前向きに捉える
rtechkouhou
1
800
Flutter移行の苦労と、乗り越えた先に得られたもの
rtechkouhou
3
12k
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
rtechkouhou
1
1.6k
大規模環境をAWS Transit Gatewayで設計/移行する前に考える3つのポイントと移行への挑戦
rtechkouhou
1
2k
【61期 新人BootCamp】TOC入門
rtechkouhou
3
43k
【RTC新人研修 】 TPS
rtechkouhou
1
42k
Android Boot Camp 2020
rtechkouhou
0
42k
HTML/CSS
rtechkouhou
10
52k
TypeScript Bootcamp 2020
rtechkouhou
9
46k
Other Decks in Technology
See All in Technology
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
340
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
680
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
300
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
190
When Does a Local Qwen Start to Break
morshoto
0
160
AIエージェントを雇う前に決める5つのこと
knishioka
1
150
Guerilla InnerSource in enterprises, during the AI hype
onenashev
PRO
0
150
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
610
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
220
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.2k
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
6
6.7k
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Ruling the World: When Life Gets Gamed
codingconduct
0
320
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Cult of Friendly URLs
andyhume
79
7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
440
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
470
Fireside Chat
paigeccino
42
4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
180
Transcript
2019年03月20日(水) 株式会社リクルートテクノロジーズ 日比野 恒 ETL処理をServerlessにしてみた件 【JAWS-UGコンテナ支部#14】
2 名前: 日比野 恒 (ひびの ひさし) 所属: 株式会社リクルートテクノロジーズ ITソリューション本部 サイバーセキュリティ部
(CISSP、CISA、情報処理安全確保支援士) 志向: オープンSIEM構想を推進 オープンな技術 オープンな環境 × 「オープンな技術」や「オープンな環境」でSIEMを作りたい!! 「個人の知見やスキルは、社会の利益のために使われるべき」というマインド 自己紹介 後日スライド公開予定
3 本日のテーマ
4 これじゃないよ!
Queuing 5 大規模なセキュリティログ分析プラットフォーム Data Enrichment Data Collector Data Store Data
Analyze Container Task (ETL) オンプレ ログ処理サーバ (Shipper) SFPログ 各種 ログ Security Analysts ログ処理サーバ (Shipper) SFPログ イベント ログ AWS Region Data Lake Log A Log Z ・ ・ ・ ・ ・ ・ Container Task (ETL) Container Task (Collector) ・ ・ ・ Container Task (Collector) AWS Cloud Data Archive Instances (Data Store) Instances (BI/Search) CI/CD Stream A Stream Z ・ ・ ・
動的なエンリッチ 6 ログと一言で言っても色々あるよね 定型 非定型 長期 短期 監視業務 (SIEM) 監査業務
(Reporting) フォレンジック調査業務 ハンティング 業務 柔軟なサブクエリ リアルタイム性 多様な検知ロジック 高速な集計処理 迅速なリストア
7 ETL処理とは... DWH ETL Collector Log Log Log Data Lake
Log UseCase1 UseCase2 UseCase3 Extract Transform Load
8 ElasticStack on AWSで組んでみた Elastic search Logstash Logstash Log Log
Log S3 Log UseCase1 UseCase2 UseCase3 Extract Transform Load
9 ボトルネックになるのは Elastic search Logstash Logstash Log Log Log S3
Log UseCase1 UseCase2 UseCase3 Extract Transform Load 複雑な処理になるほどCPUがきつい
10 やっぱし、スケールさせないとね! ん!?
11 ということで、そろそろ本題!
12 ×
Lostash(ノード) 13 まずはシンプルに... input Firewall IDS/IPS WAF if 分岐 if
分岐 filter output filter処理1 filter処理2 filter処理3 filter処理1 filter処理2 filter処理3 Firewall ID/IPS filter処理1 filter処理2 WAF Elasticsearch filter { if "firewall" in [tags] { grok { match => { "message" => ... } date { match => ... } } if "ids" in [tags] { grok { match => { "message" => ... } date { match => ... } } ・ ・ ・ logstash.confの例
Lostash(ノード) 14 Multi pipeline機能を使ってみる input Firewall IDS/IPS WAF filter output
filter処理1 filter処理2 filter処理3 filter処理1 filter処理2 Elasticsearch input input output output filter filter filter処理1 filter処理2 filter処理3 - pipeline.id: firewall pipeline.batch.size: 125 path.config: "/etc/logstash/conf.d/firewall.conf" pipeline.workers: 1 - pipeline.id: ids pipeline.batch.size: 125 path.config: "/etc/logstash/conf.d/ids.conf" pipeline.workers: 1 - pipeline.id: waf pipeline.batch.size: 125 path.config: "/etc/logstash/conf.d/waf.conf" pipeline.workers: 1 pipeline.ymlの例 id: firewall id: ids id: waf
15 Fargateにすることでスケールを手に入れる Images タスク(Logstash) input filter1 filter2 filter3 output サービス:
Firewall タスク(Logstash) input filter1 filter2 filter3 output サービス2: IDS タスク(Logstash) input filter1 filter2 filter3 output サービス3: WAF タスク 定義 タスク 定義 タスク 定義 Fargate 設定 ファイル 設定 ファイル 設定 ファイル ①ぷっしゅ ②さくせい ③きどう ④よみこみ ⑤とりこみ Elasticsearch Firewall IDS/IPS WAF
Logstash 16 世の中そう簡単にはいかないらしい(;´Д`) ログ保存先 (S3) Backup先 (S3) input s3 メモリキュー
EVENT EVENT filter ファイル処理 オブジェクトリスト (key名で昇順ソート) ログ処理 オブジェクト ファイル /tmp/logstash オブジェクトコピー処理 オブジェクト削除処理 ローカルファイル削除処理 ①オブジェクトリスト生成 ②オブジェクトリスト 単位でダウンロード ③イベント格納 ④s3.copy_object ⑤オブジェクト削除 AWS API (COPY) オブジェクトリスト毎に ログ処理実行 ⑥ローカルファイル削除 ※②失敗時も実行 Fargateのタスク並列処理で一番最初に 処理が完了したLogstash以外は ローカルが削除されずに蓄積されてしまう (並列処理を前提にした作りではない...)
17 並列分散しても同じ処理の重複がはげしかった Logstashタスク1 filter1 Elasticsearch filter2 filter3 filter4 output Logstashタスク2
filter1 filter2 filter3 filter4 output Logstashタスクxxx filter1 filter2 filter3 filter4 output ・ ・ ・ CPU使用率 取り込むファイルサイズを小さくしても、Logstashのポーリング間隔次第で 多くのログデータにおいて重複処理してしまい、無駄なログのDDoS攻撃状態... ログDDoS攻撃(笑) 重複処理 ログ (10MB)
Logstash タスクストレージ (10GB) 18 さらにストレージにWriteしてしまっているのも良くない ログ保存先 (S3) input s3 メモリキュー
EVENT EVENT filter オブジェクト ファイル /tmp/logstash Elasticsearch output elasticsearch Dead Letter Que ファイル /var/lib/logstash/dlq Write/Read Write
19 【参考】Fargateのタスク制約 No CPU メモリ ストレージ 1 0.25 vCPU 0.5GB、1GB、および2GB
10GBのDockerレイヤーストレージ ボリュームマウント用にさらに4GB 2 0.5 vCPU 1GB~4GB(1GB単位) 3 1 vCPU 2GB~8GB(1GB単位) 4 2 vCPU 4GB~16GB(1GB単位) 5 4 vCPU 8GB~30GB(1GB単位) 参考1: AWS Fargateの料金 https://aws.amazon.com/jp/fargate/pricing/ 参考2: Fargateタスクストレージ https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/fargate-task-storage.html
20 ElasticStack on AWSだとこうなるのか... Kinesis Elasticsearch (3ヶ月) Fargate (Back) Fargate
(Front) 生ログ NLB S3 Bucket (Data Lake) リスナ Filebeat Logstash Logstash Index オンプレ環境 AWS環境 加工処理 Index’ ③ S3 Bucket (12ヶ月) Snapshot Security Analysts Kibana 生ログ Filebeat 加工処理 エンリッチ 処理 生ログ Filebeat Dead Letter Que Logstash (EC2) ② ① エンリッチ処理 Prefix 【凡例】 Curator Elasticsearch (フォレンジック用) Index’ Curator Kibana Daily Daily インシデント対応時 Logstash (EC2) Lookup DB Stream Kinesis Data Streamsを利用して ETL処理を行うFargate(Logstash)の リソースを無駄なくスケールさせる。
21 まとめ ✓ EC2の管理不要で嬉しい!でも、4vCPUだとつらたん(*´ω`) ✓ S3-input-pluginとFargateとの相性があまり良くなかった... ✓ 次回はAmazon EKSを評価してみるべし!
ご清聴ありがとうございました