web-dev-qa-db-ja.com

AWSEC2インスタンスの現在の稼働時間を確認する方法

EC2インスタンスの稼働時間を確認し、たとえば稼働時間がN時間以上の場合にアラートを送信するための最良の方法は何ですか? CloudWatch、LambdaなどのデフォルトのAWSツールを使用してどのように整理できますか?

7
BigBoss

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アラームを追加します
  • INSUFFICIENT DATAは、マシンが稼働していないことを意味します
8
helloV

CloudWatchだけで実行できる別のオプションがあります。

CPUUtilizationなどを使用してEC2インスタンスのアラームを作成します。インスタンスの実行中は常にこの値を取得します。

  • アラームを> = 0に設定します。これにより、インスタンスが実行されているときはいつでも一致することが保証されます。
  • 必要なアラートの稼働時間に一致するように期間と連続する期間を設定します。たとえば、24時間の場合、期間を1時間に設定し、連続する期間を24に設定できます。
  • アラームがALARM状態のときに通知を送信するアクションを設定します。

これで、インスタンスのオン時間が設定時間未満になると、アラームはINSUFFICIENTDATA状態になります。アップタイムがオンになると、ALARM状態になり、通知が送信されます。

5
emorris

これを行う「AWS」ネイティブの方法を検討することをお勧めします。

基本的にOSレベルのメトリクス(空きメモリ、稼働時間、ディスク使用量など)をCloudwatchに送信している場合は、ガイドに従ってください。これにより、Cloudwatch LogsAgentがEC2インスタンスにインストールされます。 http://docs.aws.Amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

これの素晴らしい点は、Cloudwatchログにメトリクスが表示されることです(AWSコンソールのCWログインターフェイスを示す添付の画像を参照してください)。 enter image description here

3
Ben Fellows