AWSの監視設定


# 概要

EC2の監視等にはAWSの中にあるAmazon Cloud Watchというサービスを使う

もともとEC2にはディスクアクセス量やネットワークアクセス量を確認するツールが
インスタンス管理画面から見ることはできるが
ストレージの残量に関する監視はデフォルトではない

Cloud WatchにEC2上に配置したLinuxからエージェント経由でデータを送り、
Cloud Watch上で監視させ、ストレージ容量が逼迫してきたらアラームをメール送信させる
ようなことが可能となる。


# 監視実行ユーザの作成とポリシーのアタッチ

## [IAM](https://console.aws.amazon.com/iam/home?#home)にいってuserを作成

![Kobito.aj4krg.png](https://qiita-image-store.s3.amazonaws.com/0/60056/c774b4d7-e364-d862-16f9-87ef06c2f173.png "Kobito.aj4krg.png")


* ユーザを作るとアクセスキーIDとシークレットアクセスキーが表示されるのでメモ


## ポリシーを作る

* ユーザと同じくIAMより。
* 左ペインからポリシーを選択、右側のポリシーの作成ボタンをクリック

![Kobito.N5cnF8.png](https://qiita-image-store.s3.amazonaws.com/0/60056/b835895d-7b79-1ca7-4596-a1ca01cdf773.png "Kobito.N5cnF8.png")

* Policy Generatorを選択

![Kobito.s0L086.png](https://qiita-image-store.s3.amazonaws.com/0/60056/9713b096-98ce-c798-9f6b-acd78887418e.png "Kobito.s0L086.png")

* AWSサービスにAmazon CloudWatchを選択
* アクションにPutMetricDataを選択

> これでCloudWatchに対してMetricデータ(ここでは監視データ)をPut(保存)する権限となる

* あとは次へ次へでpolicyを作成する

![Kobito.TbaKlD.png](https://qiita-image-store.s3.amazonaws.com/0/60056/91b7d138-aa8f-e11d-afef-d48912c8267c.png "Kobito.TbaKlD.png")


* ポリシーができたのでユーザに割当（アタッチ）する
* 特にポリシー名を指定しない場合、ポリシーは```policygen-xxxx...```という名前になる
* ポリシー一覧から検索して選択

![Kobito.RTyJRx.png](https://qiita-image-store.s3.amazonaws.com/0/60056/8ed0c813-4e87-e479-2fd4-af4d37b08959.png "Kobito.RTyJRx.png")

* ポリシーアクションからアタッチを選択

![Kobito.pjP04A.png](https://qiita-image-store.s3.amazonaws.com/0/60056/a66af5b6-bda2-5793-4878-11200adad2b8.png "Kobito.pjP04A.png")

* ポリシーをアタッチするユーザを選択する

![Kobito.WRJETi.png](https://qiita-image-store.s3.amazonaws.com/0/60056/b62e2287-ab64-e39a-4c78-ef7151de47c4.png "Kobito.WRJETi.png")


* これでCloud Watch側の受付準備はOK

# コンソールからエージェントをインストール・監視ログの自動送付

* EC2にコンソールで接続
* 今回はrootユーザで実行した

## 下準備

* ```/usr/local/cloudwatch```というワークディレクトリに配置することとする
* まずはCloud Watchをダウンロード＆インストール

```bash
$ su -

yum -y install perl-Switch perl-Sys-Syslog perl-URI perl-IO-Compress perl-libwww-perl perl-LWP-Protocol-https

mkdir /usr/local/cloudwatch
cd /usr/local/cloudwatch
wget http://ec2-downloads.s3.amazonaws.com/cloudwatch-samples/CloudWatchMonitoringScripts-v1.1.0.zip
unzip CloudWatchMonitoringScripts-v1.1.0.zip
rm -f CloudWatchMonitoringScripts-v1.1.0.zip
mkdir /var/log/cloudwatch/
```

## ユーザアクセスキーとアクセスシークレットキーのセット

* 前段でユーザを作成した時のアクセスキー、アクセスシークレットをファイルに出力

```bash
echo "AWSAccessKeyId=XXXXXXXXXXXX" > /usr/local/cloudwatch/aws-credential

echo "AWSSecretKey=XXXXXXXXXXXXXX" >> /usr/local/cloudwatch/aws-credential
```

## メトリックデータをCloud Watchに送信するテスト

```
/usr/local/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --aws-credential-file=/usr/local/cloudwatch/aws-credential
```

上記を実行して```Successfully reported metrics to CloudWatch.```と出ればOK

## ５分毎に監視ログを送るようにcronに追加する

```bash
crontab -e
```

```bash
*/5 * * * * /usr/local/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl --mem-util --swap-util --disk-space-util --disk-path=/ --from-cron --aws-credential-file=/usr/local/cloudwatch/aws-credential >> /var/log/cloudwatch/linux-error.log
```

# Cloud Watch上での確認、アラート設定など

* マネジメントコンソールを開いて、Amazon Cloud Watchを選択
* 左ペインの```Linuxシステム```を選択するとディスク容量とかの状態を表示できる
* ここからダッシュボードを作ったり、容量が逼迫してきたらアラームさせたりの設定ができる

![Kobito.4U0HdD.png](https://qiita-image-store.s3.amazonaws.com/0/60056/ad825ed5-1f1f-1083-125f-c41e717dd634.png "Kobito.4U0HdD.png")