【おーてぃーえるぴー】

OTLP(OpenTelemetryプロトコル) とは?

公開:
💡 観測データを共通の約束で運ぶ

OpenTelemetryの観測データを送るためのプロトコル。トレース・メトリクス・ログなどの種類ごとに送信し、gRPCやHTTPの通信方式を使える。

📌 このページのポイント
OTLP — 観測データを運ぶ2つの通信路 アプリ OpenTelemetry SDK OTLP/gRPC 既定ポート 4317 Protobuf(unary リクエスト) OTLP/HTTP 既定ポート 4318 Protobuf バイナリ / JSON /v1/traces ・ /v1/metrics ・ /v1/logs Collector / 監視バックエンド HTTPの429 / 503等は再試行対象。部分成功の要求は再送しない
OTLPはgRPC(既定4317)とHTTP(既定4318)の2通りでテレメトリを運ぶ
ひよこ ひよこ
OpenTelemetryで集めた情報は、どうやって送るの?
ペンギン先生 ペンギン先生
共通の送信規約であるOTLPを使えるよ。SDKからCollectorへ送ったり、対応するバックエンドへ直接送ったりできる。トレース・メトリクス・ログは種類ごとの要求で送るので、全部を1つの混在した要求に詰める意味ではないよ。
ひよこ ひよこ
HTTPで送ればよいのかな?
ペンギン先生 ペンギン先生
OTLP/HTTPとOTLP/gRPCがあるよ。既定ポートはHTTPが4318、gRPCが4317。送信先と方式を合わせる必要があるんだ。ポート番号だけ変えれば方式が自動で一致するとは限らないよ。
ひよこ ひよこ
HTTPで200が返れば全部届いたんだね?
ペンギン先生 ペンギン先生
部分成功もHTTP 200で返るよ。応答本文のpartial_successに拒否件数などが入るので、状態コードだけでは足りない。このフィールドが設定された部分成功の要求は、仕様上そのまま再送してはいけないんだ。
ひよこ ひよこ
通信が失敗したときは再送していいの?
ペンギン先生 ペンギン先生
接続不能などの一時的な障害では、待ち時間を増やすバックオフなどで再試行するよ。OTLP/HTTPの再試行対象には429・502・503・504がある。形式の誤りなど恒久的な失敗と区別し、gRPCならそちらの応答規則に従うんだ。
ひよこ ひよこ
再試行すれば、欠けたり重複したりしないの?
ペンギン先生 ペンギン先生
受信側が受理したあと応答だけが失われると、再送で重複する可能性があるよ。逆にキューの容量や再試行の制限で失う場合もある。OTLP対応だけで完全配送は保証されないので、拒否件数や送信失敗、キューの状態も監視しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「OTLP(OpenTelemetryプロトコル)」は「観測データを共通の約束で運ぶ」と押さえておこう!
📖 おまけ:英語の意味
「OpenTelemetry Protocol」 = OpenTelemetryの通信プロトコル
💬 OpenTelemetry Protocolは「OpenTelemetryの通信プロトコル」という意味の表現だよ。

参考資料

← 用語集にもどる