EC2インスタンスの稼働時間を確認し、たとえば稼働時間がN時間以上の場合にアラートを送信するための最良の方法は何ですか? CloudWatch、LambdaなどのデフォルトのAWSツールを使用してどのように整理できますか?
1つのオプションは、AWSCLIを使用して起動時間を取得することです。それから稼働時間を計算し、Cloudwatchに送信します。
aws ec2 describe-instances --instance-ids i-00123458ca3fa2c4f --query 'Reservations[*].Instances[*].LaunchTime' --output text
出力
2016-05-20T19:23:47.000Z
もう1つのオプションは、次のようなcronjob
スクリプトを定期的に実行することです。
uptime -p
コマンドを呼び出しますCount
でCloudwatchに送信しますcronjob
を追加した後:
CloudWatchだけで実行できる別のオプションがあります。
CPUUtilizationなどを使用してEC2インスタンスのアラームを作成します。インスタンスの実行中は常にこの値を取得します。
これで、インスタンスのオン時間が設定時間未満になると、アラームはINSUFFICIENTDATA状態になります。アップタイムがオンになると、ALARM状態になり、通知が送信されます。
これを行う「AWS」ネイティブの方法を検討することをお勧めします。
基本的にOSレベルのメトリクス(空きメモリ、稼働時間、ディスク使用量など)をCloudwatchに送信している場合は、ガイドに従ってください。これにより、Cloudwatch LogsAgentがEC2インスタンスにインストールされます。 http://docs.aws.Amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
これの素晴らしい点は、Cloudwatchログにメトリクスが表示されることです(AWSコンソールのCWログインターフェイスを示す添付の画像を参照してください)。