このページの本文へ

FIXER Tech Blog - Development

Grafana TempoとLokiの連携で進化するログ解析とトレーシング

2023年11月01日 10時00分更新

文● FIXER/秋山 直輝

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Grafana TempoとLokiの連携で進化するログ解析とトレーシング」を再編集したものです。

 この記事はOpentelemetryシリーズの続編です。

Opentelemetryを楽に導入するAutomatic Instrumentation

Opentelemetry×Grafana Tempo

 今回はGrafana TempoをLokiと連携させTrace to Logsという機能を実装していきます。

構成図

 前回の構成にGrafana Lokiを追加しました。Lokiはざっくりいうとログデータを管理するシステムです。Promtailがログデータを収集しLokiに送信します。

バージョン
・grafana:6.58.6
・Loki:5.5.3
・Tempo:1.6.0

前準備

 以下の準備が必要です。様々なドキュメントがありますがこの部分の解説が無く、実装に手間取りました。

・アプリケーションにTraceIDを出力させること
・そのTraceIDがOpentelemetryCollectorが収集するTraceIDと同一であること

 そもそもTraceIDって何?についてはこちらの記事が大変わかりやすかったです。

 まずはOpentelemetryCollectorが収集するTraceIDについて確認します。

 以前のインストルメンテーションの記事で、下記のコードでアプリケーションが出力する観測データの設定を書いていました。

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  namespace: default
  name: instrumentation
spec:
  exporter:
    endpoint: http://otel-collector:4318
  propagators:
    - tracecontext
    - baggage
  sampler:
    type: parentbased_traceidratio
    argument: '0.25'

 注目するのはpropagatorsの部分です。こちらはデフォルトの設定をそのまま使っているのですが、公式ドキュメントによるとW3CTraceContextが使われています。

 つまりアプリケーションにW3CTraceContextのログを吐かせればいいわけです。

 ASP.NET Coreで実装する場合は、System.DiagnosticsクラスのActivity.CurrentでTraceIDを取得することができます。

Trace to Logの実装

 前準備も済んだのでTempoとLokiの連携を実装していきます。基本的にはGrafanaの設定になります。

 GrafanaTempoのデータソースの設定を開き、Trace to logsの項目に行きます。

 データソースにLokiを設定します。

 Tagsはある程度自由に設定できるのですが、今回はコンテナ名で検索する設定にしました。

 Filter by trace IDをオンにします。これによってトレースIDでさらに絞り込むことができます。

 すると下記のようなクエリが作られます。

{container="コンテナ名"} |="トレースID"

 Tempoにこのようなボタンが出現すればOKです。

 注意点として、DB通信のトレースなどはアプリケーションログに出力されないのでLokiでNotFoundが表示されます。

ログからトレースへの遷移

 おまけでLokiのログからトレースを開く方法を紹介します。

 実装するにはLokiで派生フィールドを設定する必要があります。

 GrafanaLokiのデータソースの設定を開き、Derived fieldsの項目に行きます。

 NameとRegexの「TraceID」という文字列は出力されるログのフォーマットに合わせる必要があります。リンクにTempoを設定することでログからトレースに飛ぶことができます。

 Lokiにこのようなボタンが出力すればOKです。

最後に

 今回はGrafanaTempoの利点であるLokiとの連携について解説しました。最近業務でGrafanaを触ることが多いのですが、かっこいいダッシュボードを作るのにハマっていたりします。また、GrafanaTempoはそこそこ新しいので高スパンでアップデートされているため日々アンテナを張っていければと思います。こちらの記事が実装の助けになれば幸いです。

秋山 直輝/FIXER
HAL東京を卒業し、2023年度入社しました。朝食は元気の源

カテゴリートップへ

この連載の記事