松田です!
最近Codeシリーズ系のブログ投稿が多いです!
本日もCodeシリーズの内容になります!
なんとCodePipelineがCloudWatchメトリクスを発行するようになったとのアップデート情報がありました!
このアップデート情報についてと、どのようなメトリクスが発行されているかを実際に確認したいと思います!
アップデート情報
AWS CodePipeline adds CloudWatch Metrics support
以下、アップデート情報の日本語抜粋になります。
AWS CodePipeline now provides Amazon CloudWatch metrics integration for V2 pipelines, enabling you to monitor both pipeline-level and account-level metrics directly in your AWS account. The integration introduces a pipeline duration metric that tracks the total execution time of your pipeline completions, and pipeline failure metric that monitors the frequency of pipeline execution failures. You can now track these metrics through both the CodePipeline console and the CloudWatch Metrics console to actively monitor your pipeline health.
To learn more about this feature, please visit our documentation. For more information about AWS CodePipeline, visit our product page. This feature is available in all regions where AWS CodePipeline is supported, except the AWS GovCloud (US) Regions and the China Regions.
CodePipelineが以下メトリクスを発行するようになりました。
- パイプライン失敗回数
- パイプライン完了の実行時間
なお対応しているのはV2なので、V1のパイプラインはメトリクスを発行しないはずです。
(すでにV1パイプラインは作成できないので、実際にメトリクスが発行されないかは確認していません)
何が嬉しいのか?
CodePipelineはAWSリソースでは珍しいCloudWatchメトリクスを発行しないサービスでした。
CI/CDパイプラインをCodePipelineで実装している場合、パイプラインが失敗したいことを検知したいというニーズがあるかと思います。
今までは通知ルールを利用したり、EventBridgeのイベントを拾って、パイプラインの失敗を検知する必要がありました。
実際のシステムではCloudWatchやサードパーティのDatadog/New Relicを利用して、システム監視を行うということのがセオリーです。CloudWatch/Datadog/New Relicに通知の仕組みがあるのに、CodePipelineの失敗を検知するために別で通知のメカニズムを実装する必要がありました。
今回のアップデートでCodePipelineの失敗回数のメトリクスが発行されるようになったので、このメトリクスを利用すればCloudWatch/Datadog/NewRelicでCodePipelineの失敗を検知することができます。
ただ、あくまでCodePipeline全体の失敗回数なので、もう少しきめ細かい失敗(たとえばパイプライン内のステージごとの失敗など)を監視したい場合は、従来通り通知ルールなどを利用する必要があります。
実際にメトリクスを見てみる
CodePipeline CloudWatch metrics
発行できるメトリクスはPipelineDuration
とFailedPipelineExecutions
です。
マネージメントコンソールから実際にメトリクスを見てみます。
パイプライン毎とアカウント毎で区分けされています。PipelineDurationはアカウント毎のメトリクスがないようです。
FailedPipelineExecutions
パイプライン毎のFailedPipelineExecutionsを見ます。
FailedPipelineExecutionsはパイプラインの実行失敗回数です。
パイプラインをわざと失敗させてました。その際にアクションが1回再施行され、2回ともアクションが失敗した形になりました。どうやらそのケースではそれぞれが1カウントされるようです。
ドキュメントにも以下の記載があります。
このメトリクスには、失敗したアクションの再試行によるパイプライン実行の個別のカウントが含まれます。つまり、パイプラインで失敗したアクションが再試行されると、これは個別のパイプライン実行メトリクスとしてカウントされます。たとえば、S3 ソースアクションを含むパイプラインの場合、S3 ソースアクションが初めて失敗すると、1 回の実行が行われ、その後ソースアクションが再試行されて再び失敗します。この例では、メトリクスは次のようになります。
FailedPipelineExecutionAttempts: 2
つまりFailedPipelineExecutionsはパイプライン内のアクションの失敗回数と認識した方が良さそうです。
PipelineDuration
次にパイプライン毎のPipelineDurationを見ます。
このメトリクスはパイプラインの実行にかかった所要時間を示します。(秒単位で)
このメトリクスはデータポイントにおける所要時間の合計になりますので、もし同じタイミングでパイプラインが実行されると所要時間の合計が1つのメトリクスとして発行されます。