AWSのCloudWatchについて
AWSの各サービス(EC2, S3, ELB等)に関して任意のメトリクスやログに基づいてアラートを通知したり、システムを監視をしたりできるサービス。
複数監視項目を組み合わせて、アラートをメールやSlackに通知することも可能。
CloudWatchのアラーム作成
基本的には、公式ドキュメントにしたがってGUI上で必要項目を1アラーム毎に設定していく。
⇒数個のアラームであれば問題ないが、数が多くなると手間がかかる問題
AWS CLIから設定JSONを元にアラームを作成する方法
この問題を解決できるかつ、似たような設定のアラートを複数個設定する場合はこの方法でやると便利。
以下、設定手順を説明する。
①設定ファイル作成に必要なメトリクス情報を表示する。
aws cloudwatch list-metrics --namespace [監視対象のNameSpace]
ここで表示されたメトリクスのDimensions
をメモする。
--metric-name 'mem_used_percent'
オプションでmetric nameでフィルタリングもできる。
②設定用JSONファイルを作成する。Dimensions
欄には①でメモした物を入力する。
今回はサンプルとして「メモリ使用%が60秒の区間で90%以上に1データ点でもなった場合に場合にアラートを出す」アラームの設定ファイルを載せる。
{
"AlarmActions": [
"arn:aws:sns:ap-east-1:~:cloudwatch_alarm-sns" // SNSのARN
],
"AlarmName": "memory-utilization-90", // 設定したい好きなアラーム名
"AlarmDescription": "60秒内の1データポイントのmemory-utilization >= 90", // アラームの説明(なくても良い)
"Namespace": "Name space", // 監視対象のNameSpace
"MetricName": "mem_used_percent", // 監視対象のメトリクス(今回は使用メモリの%)
"Dimensions": [
{
"Name": "ServerName",
"Value": "Server 1"
},
{
"Name": "host",
"Value": "ip-~"
}
],
"Statistic": "Maximum", // 今回の場合は60秒区間ごとの最大値を評価
"Period": 60, // 何秒間の中で条件を満たした場合にアラートを出すか
"EvaluationPeriods": 1, // 区間内で何データ点条件を満たした場合にアラートを出すか
"Threshold": 90, // 閾値
"ComparisonOperator": "GreaterThanOrEqualToThreshold" // 今回の場合は閾値以上の場合
}
使用可能なパラメータに関しては公式ドキュメントを参照
③CLIで②で作ったJSONのパスを指定してCLI上でアラームを設定する。
aws cloudwatch put-metric-alarm --cli-input-json file://alarm-path.json
ちなみに、--cli-input-yaml
とすればyamlでも設定ができる。
参考
https://bbh.bz/2019/08/29/setting-cloudwatch-alarmby-cli/
https://qiita.com/moomindani/items/aef16aa93db56b071ba3
https://hacknote.jp/archives/43635/
https://recipe.kc-cloud.jp/archives/9733
https://recipe.kc-cloud.jp/archives/9765
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html
https://aws.amazon.com/jp/premiumsupport/knowledge-center/cloudwatch-set-anomaly-detection-alarm/
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-usage-skeleton.html
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/quickref-cloudwatch.html