OpenTelemetry Protocol (OTLP) を受ける endpoint を開発する際、デバッグのために簡単にテレメトリデータを送りたいという需要があります。OpenTelemetry Collector をいちいち立てたり、何らかのアプリケーションを作ってそれを計装したりするのは、デバッグのためにする手順として手間がかかります。
そこで、コマンドラインで一発叩くだけでテレメトリデータを送れるツールを作ってみました。現段階では Metrics のみに対応しています。
インストール
macOS や Linux であれば、 Homebrew で簡単にインストールできます。
brew install Arthur1/tap/otlc
また、以下のような設定ファイルを適当なところに置いてください。
# 送り先 endpoint: localhost:4317 # 認証のためなどでヘッダが必要であれば設定 headers: Authorization: Bearer your_secret_key
Metrics の投稿
以下のようなコマンドで、awesome_gauge という名前のメトリックが 123.45 という値で投稿されます。--resource-attrs
や --datapoint-attrs
オプションでメトリックに属性をつけることもできます。
otlc metrics post --conf ./otlc.yaml --name awesome_gauge --value 123.45 \ --resource-attrs service.name=otlc --datapoint-attrs hoge=poyo,fuga=1
実装の中身
otlc/metrics/post.go at 27866d6f826d6aa267f1f0de1687fddfe50b89b9 · Arthur1/otlc · GitHub
実際に計装する時に利用する OpenTelemetry の API や SDK を呼んで実現しています。より低いレイヤーのメソッドを利用して組み立てるとより自由なコマンドラインツールに仕上げられるかもしれません。
まとめ
仕事で使う道具が揃っていないと感じたら、手作りして OSS にすると良いと思います。Go 言語はコマンドラインツールを作ってさまざまな環境に向けて公開するためのエコシステムが整っていて、こういった用途に向いています。