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
マイクロサービスにおける ログ収集の課題と取り組み
Search
Ryo Okubo
January 18, 2019
Programming
7
2.8k
マイクロサービスにおける ログ収集の課題と取り組み
データとML周辺エンジニアリングを考える会 #1 2019 / 01 / 18 の資料です
https://data-engineering.connpass.com/event/111658/
Ryo Okubo
January 18, 2019
Tweet
Share
More Decks by Ryo Okubo
See All by Ryo Okubo
UbieのAIパートナーを支えるコンテキストエンジニアリング実践
syucream
3
1.4k
メルカリ・メルペイの成長を支える データ基盤とはどんなものか
syucream
7
7.2k
バッチとストリーミング、それぞれの障害に立ち向かう
syucream
3
3.8k
How Scala works at Mercari
syucream
2
1.1k
Production-ready stream data pipeline in Merpay, Inc
syucream
2
13k
データとML周辺エンジニアリン グを考える会 #2 イントロ
syucream
0
660
Stream Data Pipeline for Microservices in Merpay
syucream
6
1.3k
メルペイにおける、マイクロサービスに寄り添うログ収集基盤 / Microservices-frendly Data Pipeline
syucream
0
18k
Merpay のデータ収集基盤
syucream
5
1.1k
Other Decks in Programming
See All in Programming
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
190
文字コードの話
qnighy
43
16k
20260228_JAWS_Beginner_Kansai
takuyay0ne
3
280
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
500
CSC307 Lecture 10
javiergs
PRO
1
690
Event Storming
hschwentner
3
1.3k
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
170
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
900
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
170
CSC307 Lecture 13
javiergs
PRO
0
310
CSC307 Lecture 11
javiergs
PRO
0
580
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
2
400
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Odyssey Design
rkendrick25
PRO
2
520
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Code Review Best Practice
trishagee
74
20k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Agile that works and the tools we love
rasmusluckow
331
21k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
240
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.7k
[SF Ruby Conf 2025] Rails X
palkan
2
790
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
140
Transcript
データとML周辺エンジニアリングを考える会 #1 2019 / 01 / 18 @syu_cream マイクロサービスにおける ログ収集の課題と取り組み
2 • @syu_cream • Data Engineer @ merpay, Inc. •
いちおうこのイベントの主催の1人 • 仕事で使ってる言語: Go, Scala • 学びたい言語: Rust whoami Copyright © Merpay, Inc. All Rights Reserved.
3 • メルカリログ収集前史 • マイクロサービスにおけるログ収集 • メルペイのデータパイプライン構成 • 今後の課題 agenda
Copyright © Merpay, Inc. All Rights Reserved.
メルカリログ収集前史 © Merpay, Inc. 4
5 全体構成 Copyright © Merpay, Inc. All Rights Reserved. https://speakerdeck.com/cubicdaiya/mercari-data-analysis-infrastructure
6 • バックエンドの API やバッチサーバのローカルファイルにログを蓄積 • fluentd でログを逐次送信 ◦ 負荷分散や転送効率化の都合、中継用
fluentd も存在 • hourly batch で BigQuery や GCS にログを送信 • それとは別にストリーム処理のため Norikra にも送信 メルカリにおけるログ収集 Copyright © Merpay, Inc. All Rights Reserved.
7 • モノリシックなサービスを支えるのに特化していると言える ◦ 幾つかの限られた種類の App サーバからログを収集する前提 ◦ 出力されるログのスキーマも限られている ◦
App サーバや周辺インフラ含めて SRE チームが管理 • マイクロサービスにするとどうなってしまうのか...? メルカリにおけるログ収集とマイクロサービス Copyright © Merpay, Inc. All Rights Reserved.
マイクロサービスにおけるログ収集 © Merpay, Inc. 8
9 メルカリにおけるマイクロサービス Copyright © Merpay, Inc. All Rights Reserved. https://speakerdeck.com/mercari/mtc2018-microservices-platform-at-mercari
10 • モノリスを避けて、機能を多数のマイクロサービスに分割 ◦ DB もマイクロサービスごとに持つ ◦ 実装言語や DB の種類はマイクロサービス毎に選択可能にする
▪ とはいえ、 Go + MySQL or Cloud Spanner が大多数 ◦ マイクロサービスのコンテナは Kubernetes (GKE) 上で動作 • チームもマイクロサービスに従って分割 ◦ なるべく各マイクロサービスチームが独自に意思決定可能にする メルカリにおけるマイクロサービス Copyright © Merpay, Inc. All Rights Reserved.
11 • マイクロサービスにするとどうなってしまうのか...? ◦ ログ送信元が 10+, 100+, … 種類に増えることは考慮されていない ▪
さらに言うと Kubernetes に乗ることも考慮されていない ◦ ログのスキーマを限定するのは難しくなる ▪ 各マイクロサービスが担う機能が異なれば、出力するログも異なるはず ◦ SRE チームがインフラを支え続けるのが難しくなる ◦ ログの利用者の多様化も進むかも? ▪ 送信されたログを活用するマイクロサービスが登場したり ▪ BigQuery, GCS にだけ転送すればいい時代が終わるかも Re: メルカリにおけるログ収集とマイクロサービス Copyright © Merpay, Inc. All Rights Reserved. マイクロサービスになるなら それに特化したログ収集基盤が必要!
メルペイのデータパイプライン構成 © Merpay, Inc. 12
13 マイクロサービスのためのログ収集パイプライン Copyright © Merpay, Inc. All Rights Reserved. https://tech.mercari.com/entry/2018/12/03/162618
14 • 多数のマイクロサービスからログを受け付けるインタフェースを提供 ◦ 現在は Cloud Pub/Sub を想定 • ログを集約して
GCS に保存するパスと、パースして BigQuery, GCS に保存するパスを用意 ◦ パースに失敗した際でも GCS にはログが保持される ◦ スキーマは Protocol Buffer で事前定義する ◦ ETL 処理は Cloud Dataflow で行う マイクロサービスのためのログ収集パイプライン Copyright © Merpay, Inc. All Rights Reserved.
15 • ログ収集パイプラインの Pub/Sub に送信する方法が欲しい • いくつかのオプションが Kubernetes の Doc
で提示されている ◦ ノードの Logging Agent を使う ◦ Logging Agent を持った Sidecar Container をアプリケーション Pod に含める ◦ ログ出力する Sidecar Container をアプリケーション Pod に含める ▪ ログ送信は別 Pod で行う ◦ アプリケーションから直接ログ収集のバックエンドにログを送信する ◦ ref. https://kubernetes.io/docs/concepts/cluster-administration/logging/ Kubernetes 上のサービスからのログ収集 Copyright © Merpay, Inc. All Rights Reserved.
16 • 現在は「アプリケーションから直接ログ収集のバックエンドにログを送信する」を選択 ◦ Go のロガーライブラリを実装して配布している ◦ Pub/Sub Topic や
IAM の管理は別途設定する ◦ マイクロサービスの実装言語毎にライブラリ開発が必要なリスクは存在 ... • 秋頃までは「ノードの Logging Agent を使う」を選択していた ◦ GKE なら Stackdriver Logging へ送信する Agent がデフォルトで動作する! ▪ 実態は Google 提供の fluentd コンテナが動作する DaemonSet ◦ 文字列しか扱えない、障害点が増える、コスト大 ...の理由から上記を選択し直した Kubernetes 上のサービスからのログ収集 Copyright © Merpay, Inc. All Rights Reserved.
今後の課題 © Merpay, Inc. 17
18 • スキーマハンドリング ◦ 現在は Protocol Buffer の定義から事前にスキーマを生成してリリース ◦ 柔軟かつスピーディーにスキーマ更新するために
Schema Registory が必要? ◦ しかし送信されるログのパターンが見えない今は過剰な投資かも ◦ 皆さんがどうやっているか知りたい! • Kubernetes 上のサービスからのログ収集、もっと良いソリューションが欲しい! ◦ Pub/Sub にログを送信する Logging Agent があると良い? ◦ Logging Agent のチューニングや運用コストが生じるデメリットは発生するが ◦ 皆さんがどうやっているか知り(ry 今後の課題 Copyright © Merpay, Inc. All Rights Reserved.
19 • データガバナンスどうにかする(?) ◦ データを蓄積してもその意味が分からなければ活用は進まない ◦ Apache Atlas とか WhereHows
とか AWS Glue の Catalog とかはあるが... ◦ 統制の取れたメタデータ管理なんて幻想な気がする • アクセス制御どうにかする ◦ 現状は GCP の IAM で whitelist 的に管理 ◦ どんな粒度で誰がどう管理するかは中長期的にも課題 今後の課題 Copyright © Merpay, Inc. All Rights Reserved.
おしまい © Merpay, Inc. 20