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
Trace Metrics と Istio Metrics でサービス健全性を監視する
Search
Hayato Kawai
February 26, 2025
0
47
Trace Metrics と Istio Metrics でサービス健全性を監視する
Japan Datadog User Group Meetup#7 での登壇資料です
イベントページ:
https://datadog-jp.connpass.com/event/343144/
Hayato Kawai
February 26, 2025
Tweet
Share
More Decks by Hayato Kawai
See All by Hayato Kawai
段階的リリースを実現する kube canary
fohte
1
69
巨大 tfstate に立ち向かう技術
fohte
1
400
RubyKaigi で LT 初登壇したきっかけと感想
fohte
1
990
Datadog Logs を活用して SLO 監視基盤を構築する
fohte
3
1.5k
The Journey of rubocop-daemon into RuboCop
fohte
1
1.2k
Ruby as Shell script
fohte
1
540
rubocop-daemon 裏話: OSS の苦悩
fohte
2
610
RuboCop Server Mode の仕組み
fohte
1
310
Ruby を使ったプロダクト開発を支えるオブザーバビリティ基盤
fohte
2
160
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
65k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
133
33k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
How STYLIGHT went responsive
nonsquared
98
5.4k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Transcript
© 2025 Wantedly, Inc. Trace Metrics と Istio Metrics で
サービス健全性を監視する Japan Datadog User Group Meetup #7 2025-02-26 - Hayato Kawai (@fohte)
© 2025 Wantedly, Inc. 自己紹介 名前 Fohte (ふぉーて) 本名: 川井
颯人 (Hayato Kawai) 所属 ウォンテッドリー株式会社 Infra Squad 趣味 🎮 🎹
© 2025 Wantedly, Inc. 持ち帰ってほしいこと • エラーレートやレイテンシーは APM の trace
metrics で監視できる • Istio metrics でも同様の監視ができる
© 2025 Wantedly, Inc. やりたいこと • 特定の機能のエラーレートとレイテンシーを監視したい • かつアプリケーションのバージョンごとに監視したい
© 2025 Wantedly, Inc. 特定の機能のエラーレートとレイテンシーを監視したい • 例: GET https://wantedly.com/id/:user_id の
エラーレートが xx % になったら or レイテンシーが xx 秒以上のリクエストが多くなったら アラート
© 2025 Wantedly, Inc. かつアプリケーションのバージョンごとに監視したい • canary release で canary
へのリクエストだけ区別し エラーレートやレイテンシーを監視したい (参考) canary release を実現する仕組み → https://speakerdeck.com/fohte/duan-jie-de-ririsuw oshi-xian-suru-kube-canary
© 2025 Wantedly, Inc. ウォンテッドリーの Datadog にあるこれに満たせそうなもの • Datadog Logs
に ALB のアクセスログを入れている • Datadog APM を使っている
© 2025 Wantedly, Inc. Datadog Logs にある ALB のアクセスログで監視できないか •
💡 Logs から custom metrics を生成できるので それで計測できそう ◦ が、Logs Pipeline つらい問題が… ▪ 詳しくは → • 🆖 アプリケーションの バージョン情報が ALB 単体では取れない https://speakerdeck.com/fohte/datadog-logs-wohuo-yong-site- slo-jian-shi-ji-pan-wogou-zhu-suru
© 2025 Wantedly, Inc. Datadog APM • 💡 Datadog APM
でもクエリできる ◦ 取りたいエラーレートやレイテンシー (duration) をクエリできる ◦ これで良さそう => 大きなハマりどころがあった
© 2025 Wantedly, Inc. Datadog APM でクエリするときのハマりどころ • 🆖 クエリは
Indexed Spans に対して計算される ◦ Indexed Spans はサンプリングされた後のデータ ◦ 期待すること: サンプリングされていないデータで計算したい ▪ 実際、意図したエラーレートやレイテンシーが算出できなかった https://docs.datadoghq.com/tracing/trace_pipeline/
© 2025 Wantedly, Inc. Metrics Summary からメトリクス一覧が見られる Metrics Summary から
今回の用途で使えそうな メトリクスを発見した • Trace Metrics ◦ trace.<SPAN_NAME>.hits など • Istio Metics ◦ istio.*
© 2025 Wantedly, Inc. 今回話す metrics 2 種類ざっくり紹介 Trace Metrics
• Datadog APM のトレースをもとに生成される メトリクス ◦ https://docs.datadoghq.com/tracing/metrics/metrics_namespace/ Istio Metrics • Istio 自体が生成するメトリクスが Datadog の Istio integration で送られる ◦ https://docs.datadoghq.com/integrations/istio/
© 2025 Wantedly, Inc. Trace Metrics • Ingested Spans から生成されるメトリクス
◦ Indexed Spans ではないのでサンプリングされない ! https://docs.datadoghq.com/tracing/trace_pipeline/
© 2025 Wantedly, Inc. Trace Metrics の実用例 APM の Service
Summary のグラフは Trace Metrics で クエリされている
© 2025 Wantedly, Inc. Trace Metrics で実現できるのか • ✅ エラーレートを取りたい
◦ trace.<SPAN_NAME>.errors / trace.<SPAN_NAME>.hits で実現できる • ✅ レイテンシーを取りたい ◦ trace.<SPAN_NAME> で duration を取れる • ❌ canary release かどうかを区別したい ◦ version タグはあるものの、それが canary release された version なのかは 判別できない
© 2025 Wantedly, Inc. Istio Metrics • Istio が提供するメトリクスを Datadog
でも見られる ◦ 例: istio.mesh.request.count (リクエスト数) • (補足) Wantedly はほぼ全てが k8s cluster に乗っている & pod の通信はすべて Istio を通している
© 2025 Wantedly, Inc. Istio Metrics で実現できるのか • ✅ エラーレートを取りたい
◦ istio.mesh.request.count.total で実現できる
© 2025 Wantedly, Inc. Istio Metrics で実現できるのか • ✅ レイテンシーを取りたい
◦ istio.mesh.request.duration.milliseconds.sum.total で実現できる
© 2025 Wantedly, Inc. Istio Metrics で実現できるのか • ✅ canary
release かどうかを区別したい ◦ ウォンテッドリーの canary release の仕組みでは Deployment 名が必ず -canary で終わるので、それをもとにクエリできた ◦ Trace Metrics には kube_deployment tag がない
© 2025 Wantedly, Inc. Trace Metrics vs Istio Metrics •
すべて Istio Metrics でよいのでは? => 部分的にそう • Trace Metrics は span の情報でクエリできるのが強み ◦ もともと要件として「ある機能のエラーレート等を監視したい」があった ▪ 例: Rails のある controller のエラーレート・レイテンシーを監視したい ◦ Trace Metrics ではこれが実現できる (resource name が取れる) ▪ Istio Metrics では request path などの情報はない (含めようと思えば Telemetry API でできる) • 結論: 使い分けよう
© 2025 Wantedly, Inc. 持ち帰ってほしいこと • エラーレートやレイテンシーは APM の trace
metrics で監視できる • Istio metrics でも同様の監視ができる