Diary of a Perpetual Student

Perpetual Student: A person who remains at university far beyond the normal period

OpenTelemetry Metrics をコマンド一発で投稿できるツール、作りました

OpenTelemetry Protocol (OTLP) を受ける endpoint を開発する際、デバッグのために簡単にテレメトリデータを送りたいという需要があります。OpenTelemetry Collector をいちいち立てたり、何らかのアプリケーションを作ってそれを計装したりするのは、デバッグのためにする手順として手間がかかります。

そこで、コマンドラインで一発叩くだけでテレメトリデータを送れるツールを作ってみました。現段階では Metrics のみに対応しています。

github.com

インストール

macOSLinux であれば、 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 の APISDK を呼んで実現しています。より低いレイヤーのメソッドを利用して組み立てるとより自由なコマンドラインツールに仕上げられるかもしれません。

まとめ

仕事で使う道具が揃っていないと感じたら、手作りして OSS にすると良いと思います。Go 言語はコマンドラインツールを作ってさまざまな環境に向けて公開するためのエコシステムが整っていて、こういった用途に向いています。