テレメトリーの活用 には、個別だけではなく、関連性(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: 同上)
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
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング 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 今回構築した基盤
ログ・メトリクスをトレースと紐付ける基盤構成(一部抜粋) ※ 時間の都合上、各モニタリング 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 を付与すれば良いかをお話しします。
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”
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 を持っている
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 と紐付けることができた!