OpenTelemetry実践 はじめの一歩
by
taxin
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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の実践は続く)