Amazon CloudFrontのAlarmをAWS CloudFormationで作ってみた話

この記事は『CRESCO Advent Calendar 2020』  5日目の記事です。

Amazon CloudFrontのモニタリングがしたいので、CloudWatch Alarmを利用してモニタリング設定をAWS CloudFormationのテンプレートで実装してみました。

途中、ハマった部分があったので何かお役に立てればと願いつつ少々長いですが書いていきます。

やりたい事

1.CloudWatch Alarmを利用してCloudFrontのモニタリング
2.Alarm状態になったらメールでお知らせ
3.OK状態になったらメールでお知らせ
4.1~3の機能をCloudFormationで実装

 

まずはCloudFrontのモニタリング項目(標準メトリクス)を確認

メトリクス名 有効な統計 説明
4xxErrorRate Average
レスポンスの HTTP ステータスコードが 4xx であるすべてのビューワーリクエストの割合 (%)
401ErrorRate Average
レスポンスの HTTP ステータスコードが 401 であるすべてのビューワーリクエストの割合 (%)
403ErrorRate Average
レスポンスの HTTP ステータスコードが 403 であるすべてのビューワーリクエストの割合 (%)
404ErrorRate Average
レスポンスの HTTP ステータスコードが 404 であるすべてのビューワーリクエストの割合 (%)
5xxErrorRate Average
レスポンスの HTTP ステータスコードが 5xx であるすべてのビューワーリクエストの割合 (%)
502ErrorRate Average
レスポンスの HTTP ステータスコードが 502 であるすべてのビューワーリクエストの割合 (%)
503ErrorRate Average
レスポンスの HTTP ステータスコードが 503 であるすべてのビューワーリクエストの割合 (%)
504ErrorRate Average
レスポンスの HTTP ステータスコードが 504 であるすべてのビューワーリクエストの割合 (%)
BytesDownloaded Sum GET リクエスト、HEAD リクエスト、および OPTIONS リクエストに対してビューワーがダウンロードしたバイト総数
BytesUploaded Sum POST リクエストと PUT リクエストを使用して CloudFront でビューワーがオリジンにアップロードしたバイト総数
CacheHitRate Average CloudFront がそのキャッシュからコンテンツを送信した対象のすべてのキャッシュ可能なリクエストの割合 (%)
OriginLatency Average CloudFront キャッシュではなくオリジンから送信されたリクエストについて、CloudFront がリクエストを受信してからネットワーク (ビューワーではなく) にレスポンスを提供し始めるまでに費やした合計時間 (ミリ秒単位)
Requests Sum すべての HTTP メソッド、および HTTP リクエストと HTTPS リクエストの両方について CloudFront が受信したビューワーリクエストの総数
TotalErrorRate Average レスポンスの HTTP ステータスコードが 4xx または 5xx であるすべてのビューワーリクエストの割合 (%)

モニタリング要件に応じて、メトリクスを選択してください。

出来上がったCloudFormation

今回のCloudWatch Alarmの設定は5分に1回データを見に行き、閾値が100%を超えていたらアラーム状態となり、100%以下もしくはデータ不足の場合はOK状態となります。メールの通知はアラーム状態に遷移した時、もしくはアラーム状態からOK状態に遷移した時に登録したメールアドレス宛にお知らせされます。

CloudFormationのDeployが成功したので「できた!」と思い、早速403エラーを出してみましたが、、、青い線(AWSで言うデータポイント)がついてない、、、

 

調べてみると…

ディメンション

各 CloudFront メトリクスには、次の 2 つのディメンションがあります。

DistributionId DistributionId の値は、メトリクスを取得する対象の CloudFront ディストリビューションの ID です。

Region Region の値は常に Global です。CloudFront はグローバルサービスであるためです。

とのこと…

(全文はこちら)https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/programming-cloudwatch-metrics.html

ちゃんと読めば分かる事なんですが解決するのに時間がかかりました。そんなこんなでDimentionsにRegionとGlobalを追記し、完成したテンプレートがこちら↓

これをバージニア北部(us-east-1)にデプロイします。

今度はどうかな???

青い線(AWSで言うところの(略))が付きました!!!やったね!!!

Alarmメールも届きました!!!(嬉しい!!!)

CloudFrontはGlobalサービスです。うっかりしてました・・・・

 

CloudFormationはちょっとややこしかったり、ハマっちゃうことはあるけれど、慣れればインフラリソースの管理が楽になります。

皆さんもCloudFormationで快適なAWS LIFEを!!!

  • このエントリーをはてなブックマークに追加