回答

3

一種選擇是使用AWS CLI並獲取啓動時間。從計算運行時間,並將其發送到CloudWatch的:

aws ec2 describe-instances --instance-ids i-0ca3fa2c4f --query 'Reservations[*].Instances[*].LaunchTime' --output text 

輸出

2016-05-20T19:23:47.000Z 

另一種方法是定期運行cronjob腳本:

  • 電話uptime -p命令
  • 輸出到幾小時
  • 發送結果與尺寸Count

到CloudWatch的轉換加入cronjob後:

  • 添加CloudWatch的警報發送當該值超過閾值的警報或如果有不充分的數據
  • 數據不足意味着機器不在
+1

可以在沒有直接訪問服務器的情況下完成嗎?只需使用aws api或其他東西? – BigBoss

+1

@BigBoss看到我的更新。 – helloV

+0

您能否提供哪些結果應該作爲維度計數發送,以及在創建警報時選擇哪種類型的指標?我使用lambda來計算正常運行時間。 – BigBoss

1

我會建議尋找一個「AWS」本地方式來做到這一點。

如果它基本上是發送OS級指標(例如可用內存,運行時間,磁盤使用情況等)來的CloudWatch那麼這可以通過以下指南來實現: 這會安裝在您的EC2實例CloudWatch的日誌代理。 http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html

這樣做的好處是您可以在Cloudwatch日誌中顯示度量標準(請參閱附加的圖片,其中顯示了AWS控制檯中的CW日誌界面)。 enter image description here

2

這是另一個可以在CloudWatch中完成的選項。

用CPUUtilization之類的東西爲您的EC2實例創建一個警報 - 當實例運行時,您將始終爲此獲取值。

  • 將報警設置爲> = 0;這將確保只要實例正在運行,它就會匹配。
  • 設置週期和連續週期以匹配所需的警報正常運行時間,例如對於24小時,可以將週期設置爲1小時,將連續週期設置爲24.
  • 設置操作以在警報發生時發送通知處於ALARM狀態。

現在,當實例已經打開時間小於設定時間時,報警將處於INSUFFICIENT DATA狀態。一旦它正常運行,它將進入ALARM狀態併發送通知。