OpenTelemetry Collectorでtelemetryが流れないときは、送信先、Collectorの起動設定、exporterの宛先、出力の順に確認します。最初に見るべきなのは「どこにエラーが出ているか」です。送信側だけが失敗するならreceiverより前、Collectorが起動しないなら設定、HTTP 200でも最終出力がないならexporter以降を疑います。
以下は、自ラボの既存Docker検証で記録した設定ミスとログをもとにした、最短の切り分け手順です。新たな実機検証はしていません。
確認手順1:送信先のホスト・ポートを確認する
送信コマンドが接続できず、Collectorログにも受信の痕跡が増えない場合は、宛先のホストまたはポートを確認します。既存検証では、Collectorが4318で待ち受ける状態で4319へ送ると、http_code=000となり、curlの接続エラーが送信側に現れました。
curl -sS -o /dev/null -w 'http_code=%{http_code}\n' --max-time 5 \
-X POST http://127.0.0.1:4319/v1/traces \
-H 'Content-Type: application/json' -d @span.json
まず送信先とreceiverの待受設定を突き合わせます。ここで失敗する場合、pipelineやexporterを先に調べても切り分けは進みません。
確認手順2:Collectorが設定エラーで停止していないか確認する
コンテナがすぐ終了するなら、送信前に起動ログを確認します。pipelineが未定義のexporterを参照すると、既存検証ではinvalid configurationと、問題のpipeline・exporter名が表示されました。
docker logs otelcol-lab
receiver、processor、exporterの定義名と、service.pipelinesから参照する名前を一致させます。起動完了のログが確認できる状態になってから送信試験へ進みます。
確認手順3:HTTP 200でもexporterログを確認する
http_code=200はCollectorが受信したことを示しますが、最終的な宛先への配送完了までは示しません。既存検証では、到達不能なexporter宛先でも受信は成功し、Collectorログにはconnection refusedが記録されました。
docker logs otelcol-lab 2>&1 | tail -n 100
exporterの接続失敗があれば、宛先サービスの起動状態、接続先、ポートを確認します。認証やTLSを使う構成では、それらの条件も要確認です。
確認手順4:batch後の出力を確認する
受信も起動も正常なら、debug exporterのコンテナログとfile exporterの出力を見ます。既存検証の正常系では、HTTP 200、debug出力、出力ファイルの3点で同一スパンを確認しました。batch processorを含む構成では、送信直後の一時的な未表示だけで失敗と断定せず、出力が現れるかを確認します。
docker logs otelcol-lab 2>&1 | tail -n 100
tail -n 1 output/traces.json
症状別の確認先
| 症状 | 主な原因層 | 最初の確認先 |
|---|---|---|
| HTTP 000・送信側だけが接続失敗 | receiver前の宛先不一致 | 送信先ホスト・ポート |
| コンテナが起動直後に停止 | pipeline構成ミス | 起動ログ先頭 |
| HTTP 200だが届かない | exporterの到達性 | Collectorのexporterログ |
| 受信後すぐに表示されない | batch後の出力確認 | debugログと出力ファイル |
復旧後は、壊す前と同じ確認基準へ戻します。起動完了、送信時のHTTP 200、debugまたはファイルへの出力の3点がそろえば、送信側からCollector、exporterまでの確認線を再び通せます。
よくある質問
HTTP 200なのにGrafanaでNo dataになるのはなぜですか?
200はCollectorの受信成功であり、backendへの配送やGrafanaのクエリ結果を保証しません。まずCollectorのexporterログを確認し、その後に可視化側を切り分けます。GrafanaがNo dataになる時のOTel確認手順も参照してください。
Collectorログに何も出ない場合は何を確認しますか?
送信先のホスト・ポートとreceiverの待受設定です。送信側で接続エラーが出ているなら、Collector内部ではなくreceiverへ届く前で止まっています。
最小構成で復旧を確認するにはどうしますか?
debug exporterとfile exporterを使い、HTTP応答、Collectorログ、出力ファイルを同時に確認します。再現時の設定と戻し方は既存のCollector検証記事、表示側の一般的な確認はGrafanaで「No data」が出るときに確認する4つの手順で整理しています。
この検証を回している環境
この検証は、自宅の常設ラボ(使い捨てVM/LXCを回す母艦+GPU+VLAN分離ネットワーク)で動かしています。使っている機材と選定理由、全体構成は1本にまとめています。
ラボ構成のまとめを見る →