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の実践は続く)