EC2のメモリとDisk利用状態をCloudwatchのメトリクスで見てみたい(Cloudwatch Custom Metrics)
EC2インスタンスのメモリ状況やDisk容量もCloudWatchで監視して、特定の状況になったらアラートメールを飛ばすなり何かのアクションを取りたい時ありますよね。
ところがデフォルトのままではEC2インスタンスのメモリ状況やDisk容量をCloudWatchで監視出来ません。
EC2はマネージドサービスではないため、基本的にはハイパーバイザが収集出来るデータのみCloudwatchに送ります。
そしてメモリやDisk状況はハイパーバイザの管轄ではないのでメモリとDisk状況はCloudWatchには送られないわけです。
と言う事でユーザーが手動でデータを入れる必要がありますが、ここで登場するのがCustom Metrics。
今回はCustom Metricsを利用してEC2のメモリとDisk利用状態をCloudwatchのメトリクスに送るようにしてみましょう。
このポストに合わせてこちらの公式文書も見てみてください。
とりあえずやってみよう
EC2インスタンスにAWS権限を与える
対象のEC2インスタンスからAWSのリソースを操作する必要があるので、まずはEC2インスタンスにそれらを操作できる権限を与えましょう。
必要な権限は下記の通り4つです。
* cloudwatch:PutMetricData
* cloudwatch:GetMetricStatistics
* cloudwatch:ListMetrics
* ec2:DescribeTags
この権限をEC2インスタンスに与える方法は二つあります。
* 上記の権限を持つIAM Roleを用意して、EC2インスタンスにRoleをアタッチする
* 上記の権限を持つIAM Userを用意して、EC2インスタンスの内部にAccessKeyとSecretKeyを定数として登録する
Script実行
対象のEC2インスタンスにSSHで入って下記を実行します。
実行するスクリプトの詳細はこちらのGistからみられます。
[Only 2 step]Monitoring Memory and Disk Metrics for AWS EC2 Linux Instances
確認
上記のスクリプトが正常に実行されると5分おきにCloudWatchにデータが入ります。
それを見るには下記のように移動します。
* Memory: AWS CloudWatch -> Metrics -> Linux System -> InstanceId
* Disk: AWS CloudWatch -> Metrics -> Linux System -> Filesystem, InstanceId, MountPath
下のようなMetrics Nameの項目が表示されたら確認完了です。
お疲れ様でした。
ディスカッション
コメント一覧
まだ、コメントがありません