の続編です。今回はrunnによるシナリオテストの結果を投稿するツールをOpenTelemetry CollectorのReceiver (Scraper)として作ってみました。
リポジトリ
以下のリポジトリで id:arthur-1 によるOpenTelemetry Collectorの自作Component群を公開しています。
使い方
ビルド
ocb (builder)によってOpenTelemetry Collectorをカスタムビルドする必要があります。カスタムビルドの方法は公式のドキュメントBuilding a custom collector | OpenTelemetryを参照してください。
runnreceivcerをビルドに含める場合には、ocbのconfig YAMLのreceivers部分に、以下のように行を追加しましょう。
receivers:
+ - gomod: github.com/Arthur1/opentelemetry-collector-arthur1/receiver/runnreceiver v0.2.0
exporters:
- gomod: go.opentelemetry.io/collector/exporter/otlpexporter v0.101.0
config
利用する際は以下のようにOpenTelemetry Collectorのconfigを記述します。runbooksにはrunnのYAMLの文字列の配列を記述してください。
receivers: runn: runbooks: - | desc: blog.arthur1.dev's test runners: req: https://blog.arthur1.dev steps: test1: req: '/': get: body: null test: current.res.status == 200 test2: req: '/hoge': get: body: null test: current.res.status == 404 collection_interval: 1m exporters: otlp/mackerel: endpoint: otlp.mackerelio.com:4317 compression: gzip headers: Mackerel-Api-Key: ***censored*** service: pipelines: metrics: receivers: - runn exporters: - otlp/mackerel
これで./otelcol-custom .--config ./otelcol-config.yaml
のようにしてOpenTelemetry Collectorを実行すると、以下のように、テストが成功したかどうかと、テストに含まれる各ステップの所要時間をメトリックとして投稿します。(以下のグラフはMackerelのOpenTelemetry対応機能によって生成されたグラフを公開したものです。)
将来的にはメトリックだけでなくトレースとしても投稿できるようにする予定です。
おまけ:Receiver自作に関する情報
先日、Pepabo Tech Conference #22 春のSREまつりに登壇させていただき、「otelcol receiver 自作RTA」というタイトルでLT(というよりライブコーディング実演)しました。
こちらのスライドでは、OpenTelemetry CollectorのReceiverを自作する際の流れや気をつけたいTIPSをご紹介しています。ぜひご覧ください。
日本語で書かれた他のエントリにはないおもしろポイントは、
- mdatagenは現在単純なgo installでインストールできないのでソースコードを持ってくる必要がある
- mdatagenで記述するYAMLをVSCodeで快適に書くためにJSONスキーマを自作した https://github.com/Arthur1/otelcol-metadata-schema
あたりです。