OpenTelemetry Collector 開発
ビジネスロジックの構築
この時点で、現在何もしないカスタムコンポーネントがあるため、Jenkins からこのデータをキャプチャするために必要なロジックを追加する必要があります。
ここから、実行する必要があるステップは以下の通りです
- Jenkins に接続するクライアントを作成する
- 設定されたすべてのジョブをキャプチャする
- 設定されたジョブの最後のビルドのステータスを報告する
- コミットのタイムスタンプとジョブ完了の時間差を計算する
変更は scraper.go に対して行われます。
Jenkins サーバーに接続できるようにするために、“github.com/yosida95/golang-jenkins” パッケージを使用します。このパッケージは、Jenkins サーバーからデータを読み取るために必要な機能を提供します。
次に、“go.opentelemetry.io/collector/receiver/scraperhelper” ライブラリのヘルパー関数を利用して、コンポーネントの起動が完了した後に Jenkins サーバーに接続できるように start 関数を作成します。
これで Jenkins レシーバーを初期化するために必要なすべてのセットアップコードが完了しました。
ここからは、入力を待っていた scrape メソッドに焦点を当てます。このメソッドは、設定で構成された間隔(デフォルトでは毎分)で実行されます。
設定されたジョブの数をキャプチャしたい理由は、Jenkins サーバーの成長を確認し、オンボードしたプロジェクトの数を測定できるようにするためです。これを行うために、Jenkins クライアントを呼び出してすべてのジョブをリストし、エラーが報告された場合はメトリクスなしでそれを返し、そうでなければメトリクスビルダーからデータを出力します。
前のステップでは、すべてのジョブをキャプチャし、ジョブの数を報告することができました。このステップでは、各ジョブを調べ、報告された値を使用してメトリクスをキャプチャします。
最後のステップは、コミットからジョブ完了までにかかった時間を計算し、DORA メトリクスを推測するのに役立てることです。
これらのステップがすべて完了すると、カスタム Jenkins CI レシーバーの構築が完了です!
次のステップ
コンポーネントから欲しい機能がおそらくもっとあるでしょう。例えば
- ジョブが使用したブランチ名を含めることはできますか?
- ジョブのプロジェクト名を含めることはできますか?
- プロジェクトの累積ジョブ期間をどのように計算しますか?
- 変更が機能することをどのように検証しますか?
この時間を使って、遊んでみたり、壊してみたり、変更したり、ビルドからログをキャプチャしてみたりしてください。