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
300
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
140
巨大 tfstate に立ち向かう技術
fohte
1
430
RubyKaigi で LT 初登壇したきっかけと感想
fohte
1
1.1k
Datadog Logs を活用して SLO 監視基盤を構築する
fohte
3
1.7k
The Journey of rubocop-daemon into RuboCop
fohte
1
1.2k
Ruby as Shell script
fohte
1
560
rubocop-daemon 裏話: OSS の苦悩
fohte
2
630
RuboCop Server Mode の仕組み
fohte
1
320
Ruby を使ったプロダクト開発を支えるオブザーバビリティ基盤
fohte
2
170
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Code Review Best Practice
trishagee
67
18k
Music & Morning Musume
bryan
46
6.4k
The Language of Interfaces
destraynor
157
24k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Adopting Sorbet at Scale
ufuk
75
9.3k
Optimizing for Happiness
mojombo
377
70k
Why Our Code Smells
bkeepers
PRO
336
57k
Producing Creativity
orderedlist
PRO
344
40k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
30k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Site-Speed That Sticks
csswizardry
4
460
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 でも同様の監視ができる