13日目!
折り返し地点到達です!!
今回は、Web サイトを公開している方で気にならない方はまずいないと思われる(個人の感想です)、アクセス数(リクエスト数)を取得してみます。
13日目の要約
アクセス数(リクエスト数)を取得するよ!
AWS CLI の準備
このあたりをみて、好きなバージョンとお使いのOSにあった環境設定をしてくださいね。
なんなら、 AWS CloudShell で実行するのも楽でよいと思います。
この記事シリーズは、AWS CloudShell で実行し、実行例を載せています。
バージョン1
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv1.html
バージョン2
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html
概要
CloudWatch でアクセス数(リクエスト数)に関するメトリクスを取得、確認するよ!
さあ、やってみよう!
CloudFront のアクセス数(リクエスト数)は、CloudWatch の「Requests」メトリクスが該当します(とはいえ、リクエスト数なので、ガチアクセス数かと言えば微妙なところですが💦)。
メトリクスを取得する
さくさくっと取得してみましょう!
アクセス数が少なそうであれば、確認のために、何回かアクセスしてみたり、 while あたりを使って curl コマンドをぶん回しまくればいいとおもいます(雑
cloudwatch get-metric-statistics コマンドを使用します。
以下の例では現在時刻から1時間前までの間の 5分(300秒)ごとのリクエスト数の合計値を取得するようにしています。
ENDTIME=`date +%Y-%m-%dT%H:%M:00`
STARTTIME=`date --date "${ENDTIME} 1 hours ago" +%Y-%m-%dT%H:%M:00`
aws cloudwatch get-metric-statistics --namespace "AWS/CloudFront" \
--metric-name Requests \
--dimensions Name=DistributionId,Value=<CloudFront ディストリビューションID> Name=Region,Value=Global \
--statistics Sum --start-time ${STARTTIME}Z --end-time ${ENDTIME}Z \
--period 300 --region us-east-1
成功すると以下のように、 リクエスト数が出力されます。Timestamp の並び順が時系列順ではないので注意ください。
{
"Label": "Requests",
"Datapoints": [
{
"Timestamp": "2021-12-12T15:12:00+00:00",
"Sum": 30.0,
"Unit": "None"
},
{
"Timestamp": "2021-12-12T15:47:00+00:00",
"Sum": 29.0,
"Unit": "None"
},
{
"Timestamp": "2021-12-12T15:22:00+00:00",
"Sum": 30.0,
"Unit": "None"
},
(略)
]
もし、Timestamp を時系列順にしたいのであれば、 以下のように jq コマンドと組み合わせると良いでしょう。
ENDTIME=`date +%Y-%m-%dT%H:%M:00`
STARTTIME=`date --date "${ENDTIME} 1 hours ago" +%Y-%m-%dT%H:%M:00`
aws cloudwatch get-metric-statistics --namespace "AWS/CloudFront" \
--metric-name Requests \
--dimensions Name=DistributionId,Value=<CloudFront ディストリビューションID> Name=Region,Value=Global \
--statistics Sum --start-time ${STARTTIME}Z --end-time ${ENDTIME}Z \
--period 60 --region us-east-1 | jq '.Datapoints | sort_by(.Timestamp)'
これで、CloudWatch メトリクスで記録されている値を AWS CLI で取得できるようになりました。
まとめ
コマンドでリクエスト数を出力することで、例えば値を報告すうる際の抽出に使えたりするのではないでしょうか。
CloudFront に限らず、各種メトリクスが取得できますので、運用報告などの場面でも発揮できると思います。
- 今回使ったコマンド
- cloudwatch get-metric-statistics