SlideShare a Scribd company logo
1 of 32
© 2022 NTT DATA Corporation
実践!
OpenTelemetry と OSS を使った Observability 基盤の構築
#CNDT2022_F
2022/11/22 15:20~15:40
逆井 啓佑 @k6s4i53rx
© 2022 NTT DATA Corporation
CLOUDNATIVE DAYS TOKYO2022
Who AM I ??
逆 井 啓 佑
さかさい
belongs: ”NTT DATA”
kind: ”スクラムチームの Product Owner(PO)”
# CloudNative な技術スタックたくさん
metadata:
CloudNative 歴: ”1年くらい”
# 社内の研修制度「CloudNative・k8s 塾」で修行
最近の関心事: ”Observability(O11y), CI/CD”
twitter: @k6s4i53rx
intro_po.yaml
1
2
3
4
5
6
7
8
9
10
11
12
© 2022 NTT DATA Corporation
今回 20分 でお話しすること
CLOUDNATIVE DAYS TOKYO2022
留意点
- 構築には一部 feature flag の有効化 や Optional な機能を用いています
Ex.:MetricsGenerator(Grafana Tempo), Remote Write Receiver(Prometheus)
本日お話しできないこと
- Observability や OpenTelemetry の詳しいお話しは を参考!
- 基盤の “非機能” の紹介 / モニタリング OSS の比較
本日お話しすること
実践! OpenTelmetry と OSS を使った Observability 基盤の 構築 ということで、
- 構築した 基盤の紹介・デモンストレーション メイン
- 基盤の “機能” の紹介
- 構築に用いたモニタリング OSS の軽い紹介
© 2022 NTT DATA Corporation
(参考) 検証環境
CLOUDNATIVE DAYS TOKYO2022
- loki-stack : 2.8.3
- tempo-distributed : 0.26.8
- kube-prometheus-stack : 41.5.1
- opentelemetry-operator : 0.16.0
※ Kubernetes : 1.22 on EKS : eks.6
※ EKS:Elastic Kubernetes Service
Observability 基盤の構築に用いたモニタリング OSS。
以下の Helm Chart を用いてインストールし動作確認 をしています。
© 2022 NTT DATA Corporation
Agenda
1. Introduction
● Observability 〜 OpenTelemetry の基本のみ
2. Observability 基盤の紹介
3. Demonstration
● シナリオ ❶:ログエラーを検知した場合
● シナリオ ❷:目標を下回るシステム挙動を検知した場合
4. (発展) Custom OpenTelemetry Collector
5. まとめ
CLOUDNATIVE DAYS TOKYO2022
© 2022 NTT DATA Corporation
Introduction
© 2022 NTT DATA Corporation
Introduction
CLOUDNATIVE DAYS TOKYO2022
・kubernetes Observability入門 (@yosshi_ san)
・Grafana Loki getting started (@polar3130 san)
クラウドネイティブ環境 において システムは動的に変化 する
プラットフォームの回復力・管理力/堅牢な自動化
変化し続けてもなお、
継続的 に システムの 信頼性 を証明 できる必要がある (Observability, 可観測性)
Dev の場合:AP の動作や、画面遷移の挙動など...
Ops の場合:プラットフォームや CI/CD の正常性など...
信頼性を測る要素として Primary Signals がある
Logging, Tracing, Metrics, Profiles, Dumps
=> Telemetry と呼ぶ
© 2022 NTT DATA Corporation
metrics
Introduction
CLOUDNATIVE DAYS TOKYO2022
Service
Input
❶ 計装やエクスポータ−は
(基本的に) アプリに実装する必要がある
Output
計
装
Exp.
Telemetry
logging
tracing
1/3
Ref: O11yCon2022
・OpenTelemetryのこれまでとこれから (@ymotongpoo san)
(今回は logging, tracing, metrics の3つのテレメトリーに着目)
テレメトリの収集/解析には、計装 (instrumentation) と エクスポーター (と ダッシュボード) が必要
※ バックエンドは一例
© 2022 NTT DATA Corporation
tracing
logging
metrics
Introduction
CLOUDNATIVE DAYS TOKYO2022
Service
Input Output
計
装
Exp.
Telemetry
2/3
Ref: O11yCon2022
・OpenTelemetryのこれまでとこれから (@ymotongpoo san)
(今回は logging, tracing, metrics の3つのテレメトリーに着目)
テレメトリの収集/解析には、計装 (instrumentation) と エクスポーター (と ダッシュボード) が必要
※ バックエンドは一例
Jaeger は例です。Jaeger Clients は既に Deprecated となり、
OpenTelemetry への移行を推奨しています。
❷ 計装や Exp. は各種 OSS やサービスが
API / SDK を提供している
=> Proprietary (ベンダ依存) に繋がる
© 2022 NTT DATA Corporation
metrics
logging
tracing
Introduction
CLOUDNATIVE DAYS TOKYO2022
Service
Input Output
計
装
Exp.
Telemetry
3/3
Ref: O11yCon2022
・OpenTelemetryのこれまでとこれから (@ymotongpoo san)
(今回は logging, tracing, metrics の3つのテレメトリーに着目)
テレメトリの収集/解析には、計装 (instrumentation) と エクスポーター (と ダッシュボード) が必要
※ バックエンドは一例
❸ OpenTelemetry は
テレメトリの 計装・エクスポーター の標準仕様
ライブラリやエージェントも提供
OpenTelemetry は言語やテレメトリーによって
対応状況が異なります。最新のステータスは公式で参照できます。
© 2022 NTT DATA Corporation
(参考) Introduction
CLOUDNATIVE DAYS TOKYO2022
OpenTelemetry は
アプリの 計装ライブラリ
(API, SDK, ・・・など)
バックエンドへの
送信プロトコル (OTLP)
Otel Collector (プロキシ)
を挟んでエクスポートをする
の仕様を定めている
Ref: O11yCon2022
・入門 OpenTelemetry Collector (@katzchang san)
図:https://opentelemetry.io/docs/
© 2022 NTT DATA Corporation
Introduction
CLOUDNATIVE DAYS TOKYO2022
(計装・エクスポーターを使い、テレメトリーを取得できることがわかったが、)
テレメトリーの活用 には、個別だけではなく、関連性(correlate)を持たせる ことも重要
- テレメトリーからテレメトリーに移る際に、コンテキストを維持する必要 (後述: trace id, exemplar)
- 個別の場合、特にトレースにおいては、欲しいトレースを膨大なトレースの中から探し出すのは
''めっちゃ難しい''(''Avoid the needle-in-haystack.'') (Ref: Grafana Labs Paper)
なので...理想的には...
Logs
Metrics
✔ Status OK
✔ Status OK
✔ Status OK
✔ Status OK
❌ ERROR
Traces
Trace
Span A
Span B
Span C で ERROR & 遅延
「ログのエラーや、メトリクスの異常値は、
なぜそのトレースが興味深いかを教えてくれている。
=> トレースを見る時点でなぜ探しているかを知っている」 (Ref: 同上)
© 2022 NTT DATA Corporation
Introduction
CLOUDNATIVE DAYS TOKYO2022
(logging, tracing, metrics は無事取れたが...)
テレメトリーの活用 には、個別だけではなく、関連性を持たせる ことも重要
- テレメトリーからテレメトリーに移る際に、コンテキストを維持する必要 (後述: trace id, exemplar)
- 特にトレースにおいては、欲しいトレースを膨大なトレースの中から探し出すのは
''めっちゃ難しい''(''Avoid the needle-in-haystack.'') (Ref: Grafana Labs Paper)
なので...理想的には...
Logs
Metrics
✔ Status OK
✔ Status OK
✔ Status OK
✔ Status OK
❌ ERROR
Traces
Trace
Span A
Span B
Span C で遅延
「ログのエラーや、メトリクスの異常値は、
なぜそのトレースが興味深いかを教えてくれている。
=> トレースを見る時点でなぜ探しているかを知っている」 (Ref: 同上)
Grafana Labs
要するに...
ログ や メトリクス を トレース と紐付けたい
Tempo や Loki Prometheus を
使って実現できるみたいなのでやってみる。
© 2022 NTT DATA Corporation
Observability 基盤の紹介
© 2022 NTT DATA Corporation
Grafana Labs のドキュメントによると、
どうやら ログやメトリクスにトレース ID を付与 すれば、Grafana 上で ログ・メトリクス -> トレースが可能
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
Traces
Logs
Metrics
Trace
ID
Trace
ID
Trace
ID
✔ Status OK
✔ Status OK
✔ Status OK
✔ Status OK
❌ ERROR
Trace
Span A
Span B
Span C で遅延
Trace
ID
Grafana Dashboard
Data
Source
© 2022 NTT DATA Corporation
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋)
※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。
BFF
User
API
Todo
API
Todo App
Collector Tempo
Promtail Loki
Traces
Logs
Traces
Logs
Traces
Logs
Trace
ID
Trace
ID Trace
ID
Metrics
Metrics
今回構築した基盤
© 2022 NTT DATA Corporation
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋)
※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。
BFF
User
API
Todo
API
Todo App
Collector Tempo
Promtail Loki
Traces
Logs
Traces
Logs
Traces
Logs
Trace
ID
Trace
ID Trace
ID
Metrics
Metrics
各テレメトリー(ログ・メトリクス)に
どのようにトレース ID を付与すれば良いかをお話しします。
© 2022 NTT DATA Corporation
Metrics
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
BFF
User
API
Todo
API
Todo App
Collector Tempo
Promtail Loki
{
“msg”: “ABC.”,
“method”: “GET”,
…
“trace_id”: “XXX”
}
Traces
Logs
Traces
Logs
Traces
Logs
Metrics
Trace
ID
Trace
ID Trace
ID
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋)
※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。
❶ Loki に保存されるログのラベルセットに、トレース ID を付与すれば良い
・{method=”GET”, trace_id=”XXX”,…} “Start Service A”
・{method=”GET”, trace_id=”XXX”,…} “Start Service B”
❷ Grafana で、どのラベルを トレース ID として解釈 するかを設定
・今回は ”trace_id” の Value (“XXX”) をトレース ID と設定
{method=”GET”, trace_id=”XXX”,…} “ABC”
© 2022 NTT DATA Corporation
Metrics
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
BFF
User
API
Todo
API
Todo App
Collector Tempo
Promtail Loki
Traces
Logs
Traces
Logs
Traces
Logs
Metrics
Trace
ID
Trace
ID Trace
ID
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋)
※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。
Traces はトレース ID を持っている
© 2022 NTT DATA Corporation
Metrics
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
BFF
User
API
Todo
API
Todo App
Collector
Tempo
Promtail
Loki
Traces
Logs
Traces
Logs
Traces
Logs
Metrics
Trace
ID Trace
ID Trace
ID
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋)
※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。
右図の Metrics は 、
SpanMetrics = Span 情報から Tempo が生成するメトリクス。以下の4つ。
❶ traces_spanmetrics_calls_total
❷~❹ traces_spanmetrics_latency_{bucket or count or sum}
ある断面で以下のレスポンスタイムのデータ(一例)
Request A : 0.1
Request B:0.04
Request C:0.3
Request D:0.6
Request E:1.2
traces_spanmetrics_latency = (*) とすると
(*)_count 5
(*)_sum 2.24
(*)_bucket{“le”=0.05} 1
(*)_bucket{“le”=0.5} 3
(*)_bucket{“le”=1} 4
(*)_bucket{“le”=INF} 5
※ le (less or equal) は
histogram_buckets: [0.1, 0.5, 1, INF]
Metrics
Tempo → Promethesu は
remote_write:/api/v1/write の
エンドポイントにメトリクスを POST
© 2022 NTT DATA Corporation
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
BFF
User
API
Todo
API
Todo App
Collector
Tempo
Promtail
Loki
Traces
Logs
Traces
Logs
Traces
Logs
Trace
ID Trace
ID Trace
ID
以下の Feature を有効化。Tempo: MetrisGenerator
Prometheus: remote-write-receiver, exemplar-strage
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋)
※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。
右図の Metrics は 、
SpanMetrics = Span 情報から Tempo が生成するメトリクス。以下の4つ。
❶ traces_spanmetrics_calls_total
❷~❹ traces_spanmetrics_latency_{bucket or count or sum}
ある断面で以下のレスポンスタイムのデータ(一例)
Request A : 0.1
Request B:0.04
Request C:0.3
Request D:0.6
Request E:1.2
traces_spanmetrics_latency = (*) とすると
(*)_count 5
(*)_sum 2.24
(*)_bucket{“le”=0.05} 1
(*)_bucket{“le”=0.5} 3
(*)_bucket{“le”=1} 4
(*)_bucket{“le”=INF} 5
{*}_bucket{“le”=0.05} # {trace_id="BBB"} 0.04
{*}_bucket{“le”=0.5} # {trace_id="AAA"} 0.1
{*}_bucket{“le”=1} # {trace_id="CCC"} 0.3
各 le に対して
Exemplar(模範値) を発行
※ le (less or equal) は
histogram_buckets: [0.1, 0.5, 1, INF]
Metrics
Metrics
(Exemplar)
Metrics
(Exemplar)
Trace
ID
Trace
ID
Exemplar {trace_id="AAA"}
Exemplar {trace_id="BBB"}
Exemplar により メトリクスをトレースと紐づける ことができる
Tempo → Promethesu は
remote_write:/api/v1/write の
エンドポイントにメトリクスを POST
© 2022 NTT DATA Corporation
Observability 基盤の紹介
CLOUDNATIVE DAYS TOKYO2022
BFF
User
API
Todo
API
Todo App
Collector Tempo
Promtail Loki
Traces
Logs
Traces
Logs
Traces
Logs
Trace
ID
Trace
ID Trace
ID
Trace
ID
Trace
ID
Trace
ID
Metrics
(Exemplar)
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋)
※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。
Metrics
(Exemplar)
Trace
ID
Trace
ID
ログ・メトリクス を トレース ID と紐付けることができた!
© 2022 NTT DATA Corporation
Demonstration
© 2022 NTT DATA Corporation
Demonstration
CLOUDNATIVE DAYS TOKYO2022
ここからは実際に Grafana 上でどのような動きになるのかを
デモをしながら簡単にご紹介いたします。
© 2022 NTT DATA Corporation
以下の2シナリオを想定してデモを実施します。
Demonstration
CLOUDNATIVE DAYS TOKYO2022
❶コ目
❷コ目
Todo サンプルアプリで擬似エラーを発生。
エラーログ から、関連する トレース へ遷移してみる。
Todo サンプルアプリの目標値として、
「全リクエストで 90%ile 20ms の レスポンスタイムを満たす(デモ用例)」
に反する メトリクスを検知し、関連するトレースへ遷移 してみる。
Traces
Logs
Metrics
(Exemplar)
Traces
© 2022 NTT DATA Corporation
Demonstration
CLOUDNATIVE DAYS TOKYO2022
https://drive.google.com/file/d/13nmdxek97arMzQaQ3BEiBle_StF_gDDt/view?usp=sharing
© 2022 NTT DATA Corporation
発展:Custom OpenTelemetry Collector
© 2022 NTT DATA Corporation
発展として の取得を OpenTelemetry Collector(Otel Collector) で実施する方法について紹介します。
発展:Custom OpenTelemetry Collector
Exporter
CLOUDNATIVE DAYS TOKYO2022
Metrics
(Exemplar)
- 今回 Grafana Tempo で用いた MetricsGenerator は、
Otel Collector の部品 である spanmetricsprocessor のミラーリング (参考: Grafana Labs)
- spanmetricsprocessor は標準の Otel Collector distro. には現段階では含まれず、 In Development ステータス
- Otel Collectrcontrib distro. には含まれている ( :GitHub )
- OpenTelemetry Collector Builder ( :ocb) を用いて spanmetricsprocessor を使える
Otel Collector をリビルドすることで、Tempo と同様 SpanMetrics を Prometheus に書き込むことが可能
yaml
Receiver Processor
spanmetrics
processor
otelreceiver otelexporter
ocb を
使ってビルド
Tempo
Traces
Metrics
(Exemplar)
Trace
ID
Collector
(Custom)
Collector
(Custom)
Trace
ID
よりシンプルな構成に
❌
© 2022 NTT DATA Corporation
まとめ
© 2022 NTT DATA Corporation
● OpenTelemetry と OSS を使ってテレメトリー (ログ、トレース、メトリクス) を取得できた
● テレメトリー同士を関連付けることは Observability において重要
● 今回は一例として Grafana Tempo などの OSS を用いることで実現 できる
● 実際のダッシュボードなどの動きを見て、
Observability について簡単にでもイメージいただければ幸いです!
まとめ
CLOUDNATIVE DAYS TOKYO2022
© 2022 NTT DATA Corporation
引き続き楽しんでいきましょう〜
© 2022 NTT DATA Corporation
記載されている会社名、商品名、
またはサービス名は、各社の商標登録または商標です。

More Related Content

What's hot

What's hot (20)

マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
 
AWSではじめるMLOps
AWSではじめるMLOpsAWSではじめるMLOps
AWSではじめるMLOps
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 

Similar to 実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発表資料)

Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナー
openrtm
 

Similar to 実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発表資料) (20)

OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
OpenTelemetryを用いたObservability基礎の実装 with AWS Distro for OpenTelemetry(Kuberne...
 
物流・社会インフラWG 活動内容のご紹介 Live Video Analytics は「カメラ+AI」ソリューション開発をどう変える?
物流・社会インフラWG 活動内容のご紹介 Live Video Analytics は「カメラ+AI」ソリューション開発をどう変える?物流・社会インフラWG 活動内容のご紹介 Live Video Analytics は「カメラ+AI」ソリューション開発をどう変える?
物流・社会インフラWG 活動内容のご紹介 Live Video Analytics は「カメラ+AI」ソリューション開発をどう変える?
 
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Nedo講座・rtmセミナー
Nedo講座・rtmセミナーNedo講座・rtmセミナー
Nedo講座・rtmセミナー
 
JAWS-UG IoT専門支部 講演資料 IoT Analyticsによる構築事例説明
JAWS-UG IoT専門支部 講演資料 IoT Analyticsによる構築事例説明JAWS-UG IoT専門支部 講演資料 IoT Analyticsによる構築事例説明
JAWS-UG IoT専門支部 講演資料 IoT Analyticsによる構築事例説明
 
1.コース概要
1.コース概要1.コース概要
1.コース概要
 
2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF2015 0227 OSC-Spring Tokyo NETMF
2015 0227 OSC-Spring Tokyo NETMF
 
OpenEL for Robot(Japanese)
OpenEL for Robot(Japanese)OpenEL for Robot(Japanese)
OpenEL for Robot(Japanese)
 
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
注目の最新技術「WebRTC」とは? -技術概要と事例紹介-
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Prometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdfPrometheus超基礎公開用.pdf
Prometheus超基礎公開用.pdf
 
OpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR OpsOpenStack Summit Vancouver YVR Ops
OpenStack Summit Vancouver YVR Ops
 
IoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL EdgeIoT のシナリオを変える Azure SQL Edge
IoT のシナリオを変える Azure SQL Edge
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
 
SkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaSSkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaS
 
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
 
インフラチームの歴史とこれから
インフラチームの歴史とこれからインフラチームの歴史とこれから
インフラチームの歴史とこれから
 
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
 

More from NTT DATA Technology & Innovation

More from NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Recently uploaded

Recently uploaded (11)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発表資料)

  • 1. © 2022 NTT DATA Corporation 実践! OpenTelemetry と OSS を使った Observability 基盤の構築 #CNDT2022_F 2022/11/22 15:20~15:40 逆井 啓佑 @k6s4i53rx
  • 2. © 2022 NTT DATA Corporation CLOUDNATIVE DAYS TOKYO2022 Who AM I ?? 逆 井 啓 佑 さかさい belongs: ”NTT DATA” kind: ”スクラムチームの Product Owner(PO)” # CloudNative な技術スタックたくさん metadata: CloudNative 歴: ”1年くらい” # 社内の研修制度「CloudNative・k8s 塾」で修行 最近の関心事: ”Observability(O11y), CI/CD” twitter: @k6s4i53rx intro_po.yaml 1 2 3 4 5 6 7 8 9 10 11 12
  • 3. © 2022 NTT DATA Corporation 今回 20分 でお話しすること CLOUDNATIVE DAYS TOKYO2022 留意点 - 構築には一部 feature flag の有効化 や Optional な機能を用いています Ex.:MetricsGenerator(Grafana Tempo), Remote Write Receiver(Prometheus) 本日お話しできないこと - Observability や OpenTelemetry の詳しいお話しは を参考! - 基盤の “非機能” の紹介 / モニタリング OSS の比較 本日お話しすること 実践! OpenTelmetry と OSS を使った Observability 基盤の 構築 ということで、 - 構築した 基盤の紹介・デモンストレーション メイン - 基盤の “機能” の紹介 - 構築に用いたモニタリング OSS の軽い紹介
  • 4. © 2022 NTT DATA Corporation (参考) 検証環境 CLOUDNATIVE DAYS TOKYO2022 - loki-stack : 2.8.3 - tempo-distributed : 0.26.8 - kube-prometheus-stack : 41.5.1 - opentelemetry-operator : 0.16.0 ※ Kubernetes : 1.22 on EKS : eks.6 ※ EKS:Elastic Kubernetes Service Observability 基盤の構築に用いたモニタリング OSS。 以下の Helm Chart を用いてインストールし動作確認 をしています。
  • 5. © 2022 NTT DATA Corporation Agenda 1. Introduction ● Observability 〜 OpenTelemetry の基本のみ 2. Observability 基盤の紹介 3. Demonstration ● シナリオ ❶:ログエラーを検知した場合 ● シナリオ ❷:目標を下回るシステム挙動を検知した場合 4. (発展) Custom OpenTelemetry Collector 5. まとめ CLOUDNATIVE DAYS TOKYO2022
  • 6. © 2022 NTT DATA Corporation Introduction
  • 7. © 2022 NTT DATA Corporation Introduction CLOUDNATIVE DAYS TOKYO2022 ・kubernetes Observability入門 (@yosshi_ san) ・Grafana Loki getting started (@polar3130 san) クラウドネイティブ環境 において システムは動的に変化 する プラットフォームの回復力・管理力/堅牢な自動化 変化し続けてもなお、 継続的 に システムの 信頼性 を証明 できる必要がある (Observability, 可観測性) Dev の場合:AP の動作や、画面遷移の挙動など... Ops の場合:プラットフォームや CI/CD の正常性など... 信頼性を測る要素として Primary Signals がある Logging, Tracing, Metrics, Profiles, Dumps => Telemetry と呼ぶ
  • 8. © 2022 NTT DATA Corporation metrics Introduction CLOUDNATIVE DAYS TOKYO2022 Service Input ❶ 計装やエクスポータ−は (基本的に) アプリに実装する必要がある Output 計 装 Exp. Telemetry logging tracing 1/3 Ref: O11yCon2022 ・OpenTelemetryのこれまでとこれから (@ymotongpoo san) (今回は logging, tracing, metrics の3つのテレメトリーに着目) テレメトリの収集/解析には、計装 (instrumentation) と エクスポーター (と ダッシュボード) が必要 ※ バックエンドは一例
  • 9. © 2022 NTT DATA Corporation tracing logging metrics Introduction CLOUDNATIVE DAYS TOKYO2022 Service Input Output 計 装 Exp. Telemetry 2/3 Ref: O11yCon2022 ・OpenTelemetryのこれまでとこれから (@ymotongpoo san) (今回は logging, tracing, metrics の3つのテレメトリーに着目) テレメトリの収集/解析には、計装 (instrumentation) と エクスポーター (と ダッシュボード) が必要 ※ バックエンドは一例 Jaeger は例です。Jaeger Clients は既に Deprecated となり、 OpenTelemetry への移行を推奨しています。 ❷ 計装や Exp. は各種 OSS やサービスが API / SDK を提供している => Proprietary (ベンダ依存) に繋がる
  • 10. © 2022 NTT DATA Corporation metrics logging tracing Introduction CLOUDNATIVE DAYS TOKYO2022 Service Input Output 計 装 Exp. Telemetry 3/3 Ref: O11yCon2022 ・OpenTelemetryのこれまでとこれから (@ymotongpoo san) (今回は logging, tracing, metrics の3つのテレメトリーに着目) テレメトリの収集/解析には、計装 (instrumentation) と エクスポーター (と ダッシュボード) が必要 ※ バックエンドは一例 ❸ OpenTelemetry は テレメトリの 計装・エクスポーター の標準仕様 ライブラリやエージェントも提供 OpenTelemetry は言語やテレメトリーによって 対応状況が異なります。最新のステータスは公式で参照できます。
  • 11. © 2022 NTT DATA Corporation (参考) Introduction CLOUDNATIVE DAYS TOKYO2022 OpenTelemetry は アプリの 計装ライブラリ (API, SDK, ・・・など) バックエンドへの 送信プロトコル (OTLP) Otel Collector (プロキシ) を挟んでエクスポートをする の仕様を定めている Ref: O11yCon2022 ・入門 OpenTelemetry Collector (@katzchang san) 図:https://opentelemetry.io/docs/
  • 12. © 2022 NTT DATA Corporation Introduction CLOUDNATIVE DAYS TOKYO2022 (計装・エクスポーターを使い、テレメトリーを取得できることがわかったが、) テレメトリーの活用 には、個別だけではなく、関連性(correlate)を持たせる ことも重要 - テレメトリーからテレメトリーに移る際に、コンテキストを維持する必要 (後述: trace id, exemplar) - 個別の場合、特にトレースにおいては、欲しいトレースを膨大なトレースの中から探し出すのは ''めっちゃ難しい''(''Avoid the needle-in-haystack.'') (Ref: Grafana Labs Paper) なので...理想的には... Logs Metrics ✔ Status OK ✔ Status OK ✔ Status OK ✔ Status OK ❌ ERROR Traces Trace Span A Span B Span C で ERROR & 遅延 「ログのエラーや、メトリクスの異常値は、 なぜそのトレースが興味深いかを教えてくれている。 => トレースを見る時点でなぜ探しているかを知っている」 (Ref: 同上)
  • 13. © 2022 NTT DATA Corporation Introduction CLOUDNATIVE DAYS TOKYO2022 (logging, tracing, metrics は無事取れたが...) テレメトリーの活用 には、個別だけではなく、関連性を持たせる ことも重要 - テレメトリーからテレメトリーに移る際に、コンテキストを維持する必要 (後述: trace id, exemplar) - 特にトレースにおいては、欲しいトレースを膨大なトレースの中から探し出すのは ''めっちゃ難しい''(''Avoid the needle-in-haystack.'') (Ref: Grafana Labs Paper) なので...理想的には... Logs Metrics ✔ Status OK ✔ Status OK ✔ Status OK ✔ Status OK ❌ ERROR Traces Trace Span A Span B Span C で遅延 「ログのエラーや、メトリクスの異常値は、 なぜそのトレースが興味深いかを教えてくれている。 => トレースを見る時点でなぜ探しているかを知っている」 (Ref: 同上) Grafana Labs 要するに... ログ や メトリクス を トレース と紐付けたい Tempo や Loki Prometheus を 使って実現できるみたいなのでやってみる。
  • 14. © 2022 NTT DATA Corporation Observability 基盤の紹介
  • 15. © 2022 NTT DATA Corporation Grafana Labs のドキュメントによると、 どうやら ログやメトリクスにトレース ID を付与 すれば、Grafana 上で ログ・メトリクス -> トレースが可能 Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 Traces Logs Metrics Trace ID Trace ID Trace ID ✔ Status OK ✔ Status OK ✔ Status OK ✔ Status OK ❌ ERROR Trace Span A Span B Span C で遅延 Trace ID Grafana Dashboard Data Source
  • 16. © 2022 NTT DATA Corporation Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。 BFF User API Todo API Todo App Collector Tempo Promtail Loki Traces Logs Traces Logs Traces Logs Trace ID Trace ID Trace ID Metrics Metrics 今回構築した基盤
  • 17. © 2022 NTT DATA Corporation Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。 BFF User API Todo API Todo App Collector Tempo Promtail Loki Traces Logs Traces Logs Traces Logs Trace ID Trace ID Trace ID Metrics Metrics 各テレメトリー(ログ・メトリクス)に どのようにトレース ID を付与すれば良いかをお話しします。
  • 18. © 2022 NTT DATA Corporation Metrics Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 BFF User API Todo API Todo App Collector Tempo Promtail Loki { “msg”: “ABC.”, “method”: “GET”, … “trace_id”: “XXX” } Traces Logs Traces Logs Traces Logs Metrics Trace ID Trace ID Trace ID ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。 ❶ Loki に保存されるログのラベルセットに、トレース ID を付与すれば良い ・{method=”GET”, trace_id=”XXX”,…} “Start Service A” ・{method=”GET”, trace_id=”XXX”,…} “Start Service B” ❷ Grafana で、どのラベルを トレース ID として解釈 するかを設定 ・今回は ”trace_id” の Value (“XXX”) をトレース ID と設定 {method=”GET”, trace_id=”XXX”,…} “ABC”
  • 19. © 2022 NTT DATA Corporation Metrics Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 BFF User API Todo API Todo App Collector Tempo Promtail Loki Traces Logs Traces Logs Traces Logs Metrics Trace ID Trace ID Trace ID ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。 Traces はトレース ID を持っている
  • 20. © 2022 NTT DATA Corporation Metrics Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 BFF User API Todo API Todo App Collector Tempo Promtail Loki Traces Logs Traces Logs Traces Logs Metrics Trace ID Trace ID Trace ID ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。 右図の Metrics は 、 SpanMetrics = Span 情報から Tempo が生成するメトリクス。以下の4つ。 ❶ traces_spanmetrics_calls_total ❷~❹ traces_spanmetrics_latency_{bucket or count or sum} ある断面で以下のレスポンスタイムのデータ(一例) Request A : 0.1 Request B:0.04 Request C:0.3 Request D:0.6 Request E:1.2 traces_spanmetrics_latency = (*) とすると (*)_count 5 (*)_sum 2.24 (*)_bucket{“le”=0.05} 1 (*)_bucket{“le”=0.5} 3 (*)_bucket{“le”=1} 4 (*)_bucket{“le”=INF} 5 ※ le (less or equal) は histogram_buckets: [0.1, 0.5, 1, INF] Metrics Tempo → Promethesu は remote_write:/api/v1/write の エンドポイントにメトリクスを POST
  • 21. © 2022 NTT DATA Corporation Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 BFF User API Todo API Todo App Collector Tempo Promtail Loki Traces Logs Traces Logs Traces Logs Trace ID Trace ID Trace ID 以下の Feature を有効化。Tempo: MetrisGenerator Prometheus: remote-write-receiver, exemplar-strage ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。 右図の Metrics は 、 SpanMetrics = Span 情報から Tempo が生成するメトリクス。以下の4つ。 ❶ traces_spanmetrics_calls_total ❷~❹ traces_spanmetrics_latency_{bucket or count or sum} ある断面で以下のレスポンスタイムのデータ(一例) Request A : 0.1 Request B:0.04 Request C:0.3 Request D:0.6 Request E:1.2 traces_spanmetrics_latency = (*) とすると (*)_count 5 (*)_sum 2.24 (*)_bucket{“le”=0.05} 1 (*)_bucket{“le”=0.5} 3 (*)_bucket{“le”=1} 4 (*)_bucket{“le”=INF} 5 {*}_bucket{“le”=0.05} # {trace_id="BBB"} 0.04 {*}_bucket{“le”=0.5} # {trace_id="AAA"} 0.1 {*}_bucket{“le”=1} # {trace_id="CCC"} 0.3 各 le に対して Exemplar(模範値) を発行 ※ le (less or equal) は histogram_buckets: [0.1, 0.5, 1, INF] Metrics Metrics (Exemplar) Metrics (Exemplar) Trace ID Trace ID Exemplar {trace_id="AAA"} Exemplar {trace_id="BBB"} Exemplar により メトリクスをトレースと紐づける ことができる Tempo → Promethesu は remote_write:/api/v1/write の エンドポイントにメトリクスを POST
  • 22. © 2022 NTT DATA Corporation Observability 基盤の紹介 CLOUDNATIVE DAYS TOKYO2022 BFF User API Todo API Todo App Collector Tempo Promtail Loki Traces Logs Traces Logs Traces Logs Trace ID Trace ID Trace ID Trace ID Trace ID Trace ID Metrics (Exemplar) ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング OSS の概要は Appendix に盛り込みます。 Metrics (Exemplar) Trace ID Trace ID ログ・メトリクス を トレース ID と紐付けることができた!
  • 23. © 2022 NTT DATA Corporation Demonstration
  • 24. © 2022 NTT DATA Corporation Demonstration CLOUDNATIVE DAYS TOKYO2022 ここからは実際に Grafana 上でどのような動きになるのかを デモをしながら簡単にご紹介いたします。
  • 25. © 2022 NTT DATA Corporation 以下の2シナリオを想定してデモを実施します。 Demonstration CLOUDNATIVE DAYS TOKYO2022 ❶コ目 ❷コ目 Todo サンプルアプリで擬似エラーを発生。 エラーログ から、関連する トレース へ遷移してみる。 Todo サンプルアプリの目標値として、 「全リクエストで 90%ile 20ms の レスポンスタイムを満たす(デモ用例)」 に反する メトリクスを検知し、関連するトレースへ遷移 してみる。 Traces Logs Metrics (Exemplar) Traces
  • 26. © 2022 NTT DATA Corporation Demonstration CLOUDNATIVE DAYS TOKYO2022 https://drive.google.com/file/d/13nmdxek97arMzQaQ3BEiBle_StF_gDDt/view?usp=sharing
  • 27. © 2022 NTT DATA Corporation 発展:Custom OpenTelemetry Collector
  • 28. © 2022 NTT DATA Corporation 発展として の取得を OpenTelemetry Collector(Otel Collector) で実施する方法について紹介します。 発展:Custom OpenTelemetry Collector Exporter CLOUDNATIVE DAYS TOKYO2022 Metrics (Exemplar) - 今回 Grafana Tempo で用いた MetricsGenerator は、 Otel Collector の部品 である spanmetricsprocessor のミラーリング (参考: Grafana Labs) - spanmetricsprocessor は標準の Otel Collector distro. には現段階では含まれず、 In Development ステータス - Otel Collectrcontrib distro. には含まれている ( :GitHub ) - OpenTelemetry Collector Builder ( :ocb) を用いて spanmetricsprocessor を使える Otel Collector をリビルドすることで、Tempo と同様 SpanMetrics を Prometheus に書き込むことが可能 yaml Receiver Processor spanmetrics processor otelreceiver otelexporter ocb を 使ってビルド Tempo Traces Metrics (Exemplar) Trace ID Collector (Custom) Collector (Custom) Trace ID よりシンプルな構成に ❌
  • 29. © 2022 NTT DATA Corporation まとめ
  • 30. © 2022 NTT DATA Corporation ● OpenTelemetry と OSS を使ってテレメトリー (ログ、トレース、メトリクス) を取得できた ● テレメトリー同士を関連付けることは Observability において重要 ● 今回は一例として Grafana Tempo などの OSS を用いることで実現 できる ● 実際のダッシュボードなどの動きを見て、 Observability について簡単にでもイメージいただければ幸いです! まとめ CLOUDNATIVE DAYS TOKYO2022
  • 31. © 2022 NTT DATA Corporation 引き続き楽しんでいきましょう〜
  • 32. © 2022 NTT DATA Corporation 記載されている会社名、商品名、 またはサービス名は、各社の商標登録または商標です。