はじめに
皆さんこんにちは、asmgです。今回は、GitHub Actionsの実行時間、実行結果をDatadog Monitorに仕込む作業を行なったのでそのまとめをQiitaにできればと思います。
背景
普段、我々はMySQLのパーティション作成と削除のコマンドをスクリプト化し、そのスクリプトをKubernetesのPodで実行するためにGitHub ActionsのWorkflow Cronを使用しています。今まで実行結果が失敗した通知のみを受け取っており、実行時間の計測は行っていませんでした。実行時間の計測が行われていなかったことが、今回RDSの障害の一因になってしまいました。
※ RDSの障害については今回の記事とは関係ないので詳細には触れません。
結果を受けた対応策
そこで、Datadog Continuous Integration Visibility (以降文章の中ではDatadog CI Visibilityと呼びます。)を利用してCronの実行時間 + 実行結果(successかfailed)をMonitor化して計測できるように追加を行いました。
その方法を軽く以下で紹介したいなと思います。
Datadog CI Visibilityの紹介と作業したこと
Datadog CI Visibilityとは?
Datadog CI Visibilityは、CIのパフォーマンスや傾向、パイプラインの結果などを可視化してくれる機能です。
詳細については以下のページをご覧ください。
Datadog continuous_integration Visibility
monitorの作成
計測したい内容
今回は、Datadog CI Visibilityを用いて、
- workflowの実行時間
- workflowの成功の可否
のMonitor作成を行いたいと思います。
実際のモニターの作成
workflowの実行時間
@git.repository.id:"<repository_name>" @ci.pipeline.name:"<workflow_name>" @git.branch:<branch_name>
↑参考の画像
workflowの時間を計測したい場合には、最低限上記に示したQueryを書きShowをAvg of
:Durationにすることでworkflowの時間を計測を計測することができると思います。
workflowの成功の可否
@git.repository.id:"<repository_name>" @ci.pipeline.name:"<workflow_name>" @git.branch:<branch_name> @ci.status:error
↑参考の画像
workflowの成功の可否を計測したい場合には、最低限上記に示したQueryを書きShowをcount
:*にすることでworkflowの成功の可否を計測することができると思います。
※ 今回は失敗を計測したいので@ci.status:error
を追加しています。
終わりに
本記事では、GitHub Actions Workflowの実行結果と実行時間をDatadog Monitorで仕込む方法についてまとめました。
Gihub ActionsのWorkflowを用いて作業の自動化を行う場合、実行結果や実行時間を計測することは障害や問題部分に気づくため必要なことです。(自分は今回の障害を通してすごく感じました。)
この記事がGitHub Actions Workflowの実行結果や実行時間をDatadog Monitorで計測したいという人の参考になると幸いです。