OpenTelemetry実践 はじめの一歩
by
taxin
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
OpenTelemetry実践 はじめの一歩 id:taxintt / @taxin_tt 2024/03/25 OpenTelemetry Casual Talk 1
Slide 2
Slide 2 text
自己紹介 ● 西川 拓志 ○ id: taxintt / @taxin_tt ● Mackerel開発チーム SRE 2
Slide 3
Slide 3 text
今日の話 ● OpenTelemetry 入門 ● 自社サービスでのOpenTelemetry実践について ○ OpenTelemetry 導入の進め方 ○ 導入にあたっての考慮事項 3
Slide 4
Slide 4 text
4 1.OpenTelemetry 入門
Slide 5
Slide 5 text
OpenTelemetryとは? ● テレメトリデータの計装・収集の標準化を 目的としたプロジェクト ○ e.g.) Log, Trace, Metric ● 特定のベンダーに依存しないAPI、SDK、 ツール群を提供している 5
Slide 6
Slide 6 text
6 🧐
Slide 7
Slide 7 text
OpenTelemetry “以前” の世界 ● シンプルで少ないコンポーネントで構成 されたシステム ● Known-unknowns ○ 既知の (もしくは予期できる) 問題に対して 監視を設定していた 7
Slide 8
Slide 8 text
世界の変化 ● ビジネス要件の複雑化に比例して、システム / アプリケーションの複雑度が高まる ● “Unknown”-unknowns ○ 未知の (予期できない) 問題に向き合う必要がある 8
Slide 9
Slide 9 text
世界の変化 9 https://blog.twitter.com/engineering/en_us/a/2013/observability-at-twitter
Slide 10
Slide 10 text
OpenTelemetry のコンセプト ● make a system observable ○ システムの内部状態を理解・把握する能力 = Observability ○ 「動いている / 動いていない」 ○ 「何がどのように動いてるのか」 テレメトリを活用しObservabilityを高める 10
Slide 11
Slide 11 text
OpenTelemetry のコンセプト ● “Unknown”-unknownsへの対応 ○ システムの内部状態を表現するテレメトリデータを 生成すること= 計装 (Instrumentation) ○ 「どう動いている」がわかると未知の事象に対する 解像度があがる テレメトリを計装し内部状態を表現する 11
Slide 12
Slide 12 text
OpenTelemetry のコンセプト 12 https://opentelemetry.io/docs/what-is-opentelemetry/#what-is-observability
Slide 13
Slide 13 text
OpenTelemetry のコンセプト ● vendor-neutral ○ テレメトリごとに仕様が定義 ■ ツールごとに異なるフォーマットのデータを突き合わせて... みたいなことを避けられる ○ 学習コストも抑えられる 共通フォーマットのテレメトリを扱う 13
Slide 14
Slide 14 text
14 「勘と経験」 から脱却する
Slide 15
Slide 15 text
OpenTelemetry のコンセプト 15 https://opentelemetry.io/community/mission/
Slide 16
Slide 16 text
16 2.自社サービスでの OpenTelemetry実践について
Slide 17
Slide 17 text
概要 ● MackerelではOTel対応を進めています ○ Mackerel = テレメトリ (Metric) の送信先の一つ ● 社内検証(dogfooding)の一環でブックマーク チームのシステムにOTelを導入する ○ ブックマークチームのSREと共同で実施 17
Slide 18
Slide 18 text
18 OpenTelemetry 導入の進め方
Slide 19
Slide 19 text
OpenTelemetry 導入の進め方 ● 小さく実装のサイクルを回す ○ 監視 ≠ Observability ■ 「既存のアラート設定をただ移行する」では不十分 ○ 最小構成でOTelの登場人物や全体像を把握する ■ 初手でテレメトリ送信のための仕組みを整備する ■ その上で、計装やテレメトリ間の連携に 19
Slide 20
Slide 20 text
OpenTelemetry 導入の進め方 ● 実際の進め方 ○ 1. 事前準備 ■ テレメトリの取得対象であるシステムの確認 ■ テレメトリの取得方法を決める ■ OpenTelemetry Collector / maprobeのデプロイ (ECS sidecar / stand-alone) ○ 2. テレメトリデータ (Metric) の確認 ○ 3. アラート・ダッシュボードの作成 20
Slide 21
Slide 21 text
21 https://opentelemetry.io/docs/
Slide 22
Slide 22 text
OpenTelemetry Collector ● データの受信、加工、送信を行うproxy ○ アプリケーションはCollectorにデータを送る = 送信先を意識せずに済む ○ コンテナとしてデプロイもできるので、ECSなら sidecar構成にできる 22
Slide 23
Slide 23 text
23
Slide 24
Slide 24 text
24 導入にあたっての考慮事項
Slide 25
Slide 25 text
導入にあたっての考慮事項 ● とにかく小さく始める ○ 小さく始めるための方法を調べる ■ OpenTelemetry Collector (w/ ECS sidecar) ■ 自動計装 (Auto Instrumentation) ○ 徐々にテレメトリでカバーする範囲を増やす ■ Collectorで取得するMetricを増やす → receiverを調べる 25
Slide 26
Slide 26 text
自動計装 (Auto Instrumentation) ● 自動計装用の Java-Agent を導入 ○ アプリケーションを触らずに、response timeやDB へのクエリ時間、 JVMの情報などを計装できた 26
Slide 27
Slide 27 text
receiver ● テレメトリデータを 受信するためのコン ポーネント e.g.) OTLP receiver, awsecscontainermetr ics, redis, mysql etc… 27
Slide 28
Slide 28 text
28 OpenTelemetry導入後の変化
Slide 29
Slide 29 text
導入後の変化 ● 原因調査が低コストで解像度高くできる ○ ラベルを利用した絞り込み、集計ができる ■ e.g.) request path, zone etc… ○ 「どのリクエストがどう遅いか」のような粒度で見れる ■ ALBのログをAthenaでクエリ叩かなくても良い ○ 逆にラベルの数が多く、有用なラベルを見つけて絞る際 には苦労した 29
Slide 30
Slide 30 text
実践できていないこと ● Traceなど他のテレメトリも計装する ○ “connect metrics to other signals” ● OTel Collectorも自前でビルドしたい ○ ref: OpenTelemetry Collector Antipatterns ● OTel Collector自体の監視も考える必要がある 30
Slide 31
Slide 31 text
31 終わり (OTelの実践は続く)