Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Trace Metrics と Istio Metrics でサービス健全性を監視する

Hayato Kawai
February 26, 2025
47

Trace Metrics と Istio Metrics でサービス健全性を監視する

Japan Datadog User Group Meetup#7 での登壇資料です
イベントページ: https://datadog-jp.connpass.com/event/343144/

Hayato Kawai

February 26, 2025
Tweet

Transcript

  1. © 2025 Wantedly, Inc. Trace Metrics と Istio Metrics で

    サービス健全性を監視する Japan Datadog User Group Meetup #7 2025-02-26 - Hayato Kawai (@fohte)
  2. © 2025 Wantedly, Inc. 自己紹介 名前 Fohte (ふぉーて) 本名: 川井

    颯人 (Hayato Kawai) 所属 ウォンテッドリー株式会社 Infra Squad 趣味 🎮 🎹
  3. © 2025 Wantedly, Inc. 持ち帰ってほしいこと • エラーレートやレイテンシーは APM の trace

    metrics で監視できる • Istio metrics でも同様の監視ができる
  4. © 2025 Wantedly, Inc. 特定の機能のエラーレートとレイテンシーを監視したい • 例: GET https://wantedly.com/id/:user_id の

    エラーレートが xx % になったら or レイテンシーが xx 秒以上のリクエストが多くなったら アラート
  5. © 2025 Wantedly, Inc. かつアプリケーションのバージョンごとに監視したい • canary release で canary

    へのリクエストだけ区別し エラーレートやレイテンシーを監視したい (参考) canary release を実現する仕組み → https://speakerdeck.com/fohte/duan-jie-de-ririsuw oshi-xian-suru-kube-canary
  6. © 2025 Wantedly, Inc. ウォンテッドリーの Datadog にあるこれに満たせそうなもの • Datadog Logs

    に ALB のアクセスログを入れている • Datadog APM を使っている
  7. © 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
  8. © 2025 Wantedly, Inc. Datadog APM • 💡 Datadog APM

    でもクエリできる ◦ 取りたいエラーレートやレイテンシー (duration) をクエリできる ◦ これで良さそう => 大きなハマりどころがあった
  9. © 2025 Wantedly, Inc. Datadog APM でクエリするときのハマりどころ • 🆖 クエリは

    Indexed Spans に対して計算される ◦ Indexed Spans はサンプリングされた後のデータ ◦ 期待すること: サンプリングされていないデータで計算したい ▪ 実際、意図したエラーレートやレイテンシーが算出できなかった https://docs.datadoghq.com/tracing/trace_pipeline/
  10. © 2025 Wantedly, Inc. Metrics Summary からメトリクス一覧が見られる Metrics Summary から

    今回の用途で使えそうな メトリクスを発見した • Trace Metrics ◦ trace.<SPAN_NAME>.hits など • Istio Metics ◦ istio.*
  11. © 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/
  12. © 2025 Wantedly, Inc. Trace Metrics • Ingested Spans から生成されるメトリクス

    ◦ Indexed Spans ではないのでサンプリングされない ! https://docs.datadoghq.com/tracing/trace_pipeline/
  13. © 2025 Wantedly, Inc. Trace Metrics の実用例 APM の Service

    Summary のグラフは Trace Metrics で クエリされている
  14. © 2025 Wantedly, Inc. Trace Metrics で実現できるのか • ✅ エラーレートを取りたい

    ◦ trace.<SPAN_NAME>.errors / trace.<SPAN_NAME>.hits で実現できる • ✅ レイテンシーを取りたい ◦ trace.<SPAN_NAME> で duration を取れる • ❌ canary release かどうかを区別したい ◦ version タグはあるものの、それが canary release された version なのかは 判別できない
  15. © 2025 Wantedly, Inc. Istio Metrics • Istio が提供するメトリクスを Datadog

    でも見られる ◦ 例: istio.mesh.request.count (リクエスト数) • (補足) Wantedly はほぼ全てが k8s cluster に乗っている & pod の通信はすべて Istio を通している
  16. © 2025 Wantedly, Inc. Istio Metrics で実現できるのか • ✅ レイテンシーを取りたい

    ◦ istio.mesh.request.duration.milliseconds.sum.total で実現できる
  17. © 2025 Wantedly, Inc. Istio Metrics で実現できるのか • ✅ canary

    release かどうかを区別したい ◦ ウォンテッドリーの canary release の仕組みでは Deployment 名が必ず -canary で終わるので、それをもとにクエリできた ◦ Trace Metrics には kube_deployment tag がない
  18. © 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 でできる) • 結論: 使い分けよう
  19. © 2025 Wantedly, Inc. 持ち帰ってほしいこと • エラーレートやレイテンシーは APM の trace

    metrics で監視できる • Istio metrics でも同様の監視ができる