この記事はMackerel Advent Calendar 2022の5日目の記事です。3年ぶりのMackerel Advent Calendarへの参加です。
4日目は id:buty4649 さんで、サーバの温度を監視するmackerel-plugin-thermalを作った - ぶていのログでぶログでした。自宅サーバ、私にはまだ未知の領域です。自宅にサーバがあるということは自宅がDCになるわけで、温度管理も必要ということか...。
octocovとは
octocovはOSSのコードメトリクス計測ツールです。
コードメトリクス(コードカバレッジやCode To Test Ratio、テスト実行時間など)を計測するだけでなく、取得したメトリクスをPull Requestへのレポートしたり、サポートしている任意のデータストアにメトリクスを送信したりすることができます。
私が所属するGMOペパボではデータストアとしてBigQueryを選択し各リポジトリで計測したコードメトリクスを集約しています。 さらに独自のダッシュボードを作成して、集約したコードメトリクスを可視化できるようにしています。
詳しくは以下のエントリをご覧ください。
データストアとしてMackerelをサポート
octocovにおけるデータストアとは取得したコードメトリクスを保存したり取得する先を指します。
サポートしているデータストアとしては次のようなものがあります。
そして、今回(コードメトリクスの保存先として)Mackerelにも対応しました。
具体的には次のようにMackerelのサービスメトリクスとして、各リポジトリのコードメトリクスを可視化することができます。
各リポジトリのコードメトリクスがMackerelで確認できています。
test-execution-timeのグラフはグラフ定義をsecondsにするとわかりやすいです。
設定方法
設定方法は2パターンあります。
今回は例として、 octocov
という名前のサービスにコードメトリクスを送信することにします。
1. 各リポジトリから直接Mackerelにメトリクスを送信するパターン
一番単純な方法です。
MackerelのAPIキーは環境変数 MACKEREL_API_KEY
もしくは OCTOCOV_MACKEREL_API_KEY
で読める必要があります。
事前にリポジトリのSecretsに登録しておきます。
octocov-actionを呼び出す際に環境変数を設定します。
- uses: k1LoW/octocov-action@v0 env: MACKEREL_API_KEY: ${{ secrets.MACKEREL_API_KEY }}
今回は octocov
というサービスにメトリクスを登録するので、.octocov.yml
の設定には report.datastores:
に mackerel://octocov
を追加します。
report: datastores: - mackerel://octocov
これで終わりです。
2. Central repoで一旦各リポジトリのメトリクスを収集して、まとめてMackerelに送信するパターン
パターン1は、各リポジトリに MACKEREL_API_KEY
を設置する必要があります。
これを解決するのが、Central repoからまとめてMackerelに送信するパターンです。
Central repo、Central modeについては次のエントリをご覧ください。
Central modeで収集したメトリクスをまとめて別のデータストアに送信する方法として、central.reReport:
を使います。
具体的には私のOSSのCentral repoである k1LoW/octocovs に設定があります。
定期的に各リポジトリの Github Actions Artifactsに保存されているコードメトリクスレポートをpullして収集した後、各最新のコードメトリクスをまとめてMackerelに送信しています。
これで終わりです。
メトリクス情報の値だけを送信して可視化するのは便利そう
octocovとMackerelを連携させるアイデアは半年以上前からアドベントカレンダーネタとして構想していたのですが、これ、実は便利ですね。
時系列にみるデータはカジュアルにそれの可視化が得意なところに渡してしまうのが便利なのかー。
勉強になりました。
明日6日目は @tomotomobooksさんです!