EC2 に CloudWatch Agent をインストールして、ディスク使用率を基にアラーム設定をしてみた

# はじめに

[以前の記事](https://qiita.com/sugimount-a/items/4f332e4128984a1b3b7d)で、EC2 インスタンスに CloudWatch Agent をインストールする方法を記載しました。今回は、もう少し踏み込んで、EC2 にアタッチしている EBS の使用率を使ってアラームを設定する方法を確認します。



EBS の使用率は、CloudWatch Agent を導入すると確認できるようになるので、もし気になる方がいれば導入の検討をおすすめします。



# CloudWatch Metrics の確認

以前導入した CloudWatch Agent によって、CloudWatch Metrics の Custom namespaces として `CWAgent` が作成されています。この記事の環境では、ネームスペースに 51 個のカスタムメトリクスが登録されている状況になっています。このネームスペースの中身を見ていきましょう。

![image-20220107224654238.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4e0ac68e-0584-3236-7feb-32d4d3e4470b.png)



device が含まれる メトリクスを選択します。

![image-20220107230102725.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/abb4d01d-b29a-35fc-6492-a62628b8d651.png)



`disk_usage_percent` という名称のメトリクスがあり、Device 単位で利用率がわかります。このメトリクスを使って CloudWatch Alarm の設定を進めていきます。

![image-20220107230306827.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/696b6552-6622-2dcc-e5a4-9d3a8fccec69.png)



# CloudWatch Alarm

CloudWatch Alarm の画面に移動し、Create を押します。

![image-20220107230351366.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/06800865-3616-4695-59aa-84c8c7971917.png)



Select metric を選択します

![image-20220107230410731.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/cd9f3e7e-3032-d0d7-d5dc-e71dcc5bfd37.png)



`disk_used_percent` を利用します。監視したい Device を正しく選びましょう。

![image-20220107230519412.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/6628dddc-3aa2-e9b8-70aa-a49dc4a527ca.png)



今回の記事では、70% を超えたらアラームとします。

![image-20220107230656549.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/fb681d3f-c1c2-5e91-f028-2ae1e911bfd2.png)



アラームで利用する SNS Topic を選択します。この記事の環境では、既に登録しているメールアドレスに通知する Topic があるので、これを選んでいます。もし存在しない場合は、SNS Topic を作成します。

![image-20220107230749880.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/327657c1-80dd-88b4-f563-565e4b29c63d.png)



Next で進みます。

![image-20220107230809752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/79fafc1a-8a00-b592-9112-ebaf1e6e0511.png)



適当に名前と説明をいれて Next を押します。

![image-20220107230907946.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/2dd5e4ba-0685-ca55-e3ad-afe104546ce6.png)



Create を押します。

![image-20220107230917441.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/4a0639b1-7363-3574-0d98-443ceedbc708.png)



# 動作確認

ここまで設定して、70% の閾値ではエラーのメール確認が出来ないことに気が付いたので、一時的に 10% に変更します。

![image-20220107231338033.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/c84a4ed5-b507-2330-e9e3-ed8551d44a29.png)



変更後、エラーを検知してメールが届きました。

![image-20220107231303734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/ab3d4ec5-6cfb-3fe0-f430-47e9a2d5a174.png)



# 検証を通じてわかったこと

- EBS のディスク使用率を取得するには、EC2 Instance に CloudWatch Agent をインストールする必要がある
- `disk_used_percent` が楽に利用できる
- CloudWatch Agent で取得したメトリクスは、カスタムメトリクスの扱いとなる。費用の考え方は、CloudWatch の料金ページの下の方に、カスタムメトリクスの試算例が書いており、これを参照するとわかる
  - 「メトリクスの数」と「メトリクスに関する API の呼び出し」がざっくり掛かってくる項目となる
  - https://aws.amazon.com/jp/cloudwatch/pricing/
- CloudWatch Agent を何も考えずインストールすると、カスタムメトリクスの数が比較的多い。よりコスト最適化のために取得する項目を少なくしたい場合は、設定変更が可能
  - https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html#CloudWatch-Agent-Configuration-File-Metricssection



# 参考URL

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html#CloudWatch-Agent-Configuration-File-Metricssection