handson: aws service (cloudwatch: customer metrics)¶
目的¶
CloudWatchの主要な要素を操作してみます。 (監視対象としてカスタムメトリクスを、通知手段としてSNSトピックを利用します。)
前提¶
作業環境条件¶
本作業は、以下の作業環境で行います。
作業環境条件1: OSとバージョン
本手順は、Amazon Linux "2018.03"以降のOS環境での実施を前提としています。
コマンド:
cat /etc/system-release
結果(例):
Amazon Linux AMI release 2018.03
作業環境条件2: シェルとバージョン
本手順は、bash "4.2.46(2)-release"以降のシェル環境での実施を前提としています。
コマンド:
bash --version -v \ | head -1
結果(例):
GNU bash, バージョン 4.2.46(2)-release (x86_64-redhat-linux-gnu)
作業環境条件3: AWS CLIのバージョン
本手順は、AWS CLIのバージョン"1.17.6"以降での実施を前提としています。
コマンド:
aws --version
結果(例):
aws-cli/1.17.6 Python/3.7.3 Linux/4.14.165-102.185.amzn1.x86_64 botocore/ 1.11.2
手順¶
ローカル環境での作業¶
今回は"${HOME}/tmp/parameter-handson-cli-cloudwatch-custom"をパラメータファイル情報用ディレクトリとします。
ディレクトリが存在することを確認します。
コマンド:
ls -d ${HOME}/tmp/parameter-handson-cli-cloudwatch-custom
結果(例:存在する場合):
${HOME}/tmp/parameter-handson-cli-cloudwatch-custom
存在しない場合は作成します。
コマンド:
mkdir -p ${HOME}/tmp/parameter-handson-cli-cloudwatch-custom
ローカル環境での作業¶
今回は"${HOME}/tmp/parameter-handson-cli-cloudwatch-custom"をパラメータファイル情報用ディレクトリとします。
ディレクトリが存在することを確認します。
コマンド:
ls -d ${HOME}/tmp/parameter-handson-cli-cloudwatch-custom
結果(例:存在する場合):
${HOME}/tmp/parameter-handson-cli-cloudwatch-custom
存在しない場合は作成します。
コマンド:
mkdir -p ${HOME}/tmp/parameter-handson-cli-cloudwatch-custom
1. サンプルアプリの作成¶
1.2. サンプルデータの作成¶
変数の設定:
FILE_CODE_DATA="${HOME}/tmp/sample.csv"
コマンド:
cat << EOF > ${FILE_CODE_DATA} 2020-03-02T09:00:00Z,10,3 2020-03-02T09:05:00Z,10,6 2020-03-02T09:10:00Z,10,2 2020-03-02T09:15:00Z,10,9 2020-03-02T09:20:00Z,10,1 EOF
1.3. サンプルアプリの実行¶
変数の設定:
FILE_CODE_SCRIPT="${HOME}/environment/conf-handson-cli-cloudwatch-custom/cloudwatch-sample-app.sh"
コマンド:
sh ${FILE_CODE_SCRIPT} ${FILE_CODE_DATA}
コマンド:
echo $?
結果(例):
0
2. メトリックの確認 (カスタムメトリクス)¶
3. Metric Mathによる演算¶
変数の設定:
FILE_CLOUDWATCH_QUERY="${HOME}/tmp/cloudwatch-query.json"
コマンド:
cat << EOF > ${FILE_CLOUDWATCH_QUERY} [ { "Id": "e1", "Expression": "m1 / m2", "Label": "ErrorRate" }, { "Id": "m1", "MetricStat": { "Metric": { "Namespace": "HandsonCliApplication", "MetricName": "Errors", "Dimensions": [ { "Name": "FunctionName", "Value": "HandsonCliFunction" } ] }, "Period": 300, "Stat": "Sum", "Unit": "Count" }, "ReturnData": false }, { "Id": "m2", "MetricStat": { "Metric": { "Namespace": "HandsonCliApplication", "MetricName": "Invocations", "Dimensions": [ { "Name": "FunctionName", "Value": "HandsonCliFunction" } ] }, "Period": 300, "Stat": "Sum", "Unit": "Count" }, "ReturnData": false } ] EOF
コマンド:
jsonlint -q ${FILE_CLOUDWATCH_QUERY}
変数の設定:
CLOUDWATCH_START_TIME='2020-03-01T00:00:00Z'
変数の設定:
CLOUDWATCH_END_TIME='2020-03-02T09:00:00Z'
コマンド:
aws cloudwatch get-metric-data \ --metric-data-queries file://${FILE_CLOUDWATCH_QUERY} \ --start-time ${CLOUDWATCH_START_TIME} \ --end-time ${CLOUDWATCH_END_TIME}
結果(例):
{ "MetricDataResults": [ { "Timestamps": [ "2020-03-02T09:20:00Z", "2020-03-02T09:15:00Z", "2020-03-02T09:10:00Z", "2020-03-02T09:05:00Z", "2020-03-02T09:00:00Z" ], "StatusCode": "Complete", "Values": [ 0.1, 0.9, 0.2, 0.6, 0.3 ], "Id": "e1", "Label": "ErrorRate" } ] }
(参考 SNSトピックの作成)¶
(参考. サンプルアプリの実行)¶
課題
(以下の手順は作成中)
データcsvの作成
サンプルアプリの実行
アラーム履歴の確認
(参考. アラームの停止/再開)¶
(後始末1. アラームの削除)¶
(後始末2. SNSトピックの削除)¶
(参考. メトリックデータの存在期間)¶
注釈
https://aws.amazon.com/jp/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring
Q: すべてのメトリクスの保存期間はどうなっていますか?
CloudWatch は、2017 年 7 月 26 日に高分解能カスタムメトリクスの提供を開始しました。これにより、分解能 1 秒までのカスタムメトリクスをパブリッシュして保存できます。2016 年 11 月 1 日にメトリクス保存期間の延長が開始され、以前は 14 日間でしたが、お客様のすべてのメトリクスを 15 か月保存できるようになりました。CloudWatch では、次のようにメトリクスデータを保持します。
期間が 60 秒未満のデータポイントは 3 時間使用できます。このようなデータポイントが高分解能カスタムメトリクスです。 期間が 60 秒 (1 分) のデータポイントは、15 日間使用できます。 期間が 300 秒 (5 分) のデータポイントは、63 日間使用できます。 期間が 3600 秒 (1 時間) のデータポイントは、455 日 (15 か月) 間使用できます。
当初、短い期間でパブリッシュされるデータポイントは、長期の保存のために集約されます。例えば、1 分の期間でデータを収集する場合、そのデータは 15 日間、1 分の分解能で使用できる状態で残されます。15 日後、このデータはまだ使用できますが、集約されるので、5 分の分解能でのみ取得できます。63 日後、データはさらに集約されて、1 時間の分解能で使用できます。これらの期間より長くメトリクスを利用する必要がある場合は、GetMetricStatistics API を使用して、データポイントをオフラインまたは異なるストレージに取得できます。
ローカル環境での作業¶
課題
スクリプトディレクトリの削除
サンプルアプリの削除
サンプルデータの削除
サンプルクエリの削除
パラメータファイル情報用ディレクトリを削除します。
コマンド:
rm -Rf ${HOME}/tmp/parameter-handson-cli-cloudwatch-custom
ローカル環境での作業¶
パラメータファイル情報用ディレクトリを削除します。
コマンド:
rm -Rf ${HOME}/tmp/parameter-handson-cli-cloudwatch-custom