はてなが出しているMackerelによる超お手軽AWSリソース監視の導入

AWSリソースの管理ツールと言えば、有名どころのNew RelicやDataDogなど監視用サーバを立てる必要もなくお手軽なものがいくつかありますが、はてなからもMackerelというサーバ監視ツールがあります。

こちらを導入してみた感想としては、非常にお手軽という感じでした。

以前、New RelicによるAWSリソース監視の導入方法についても投稿してますのでこちらも是非参照してください。
http://qiita.com/hayashier/items/b8601e8b4db902856039

#EC2の監視設定
超圧倒的に気軽に導入できます。初めてでも5分程度で導入できました。

##1.最初のオーガニゼーションを作成
- Third party accounts
	- GitHub
	- Google
	- Yammer
- Email address
のいずれかでSign upを行う。

"利用規約に同意する"にチェックを入れて[サインアップ]を選択。

以下の内容を入力する。

```
Organization Name: 
Questionnaire(Optional)
First Name
Last Name
Company Name
Expected number of hosts
用途(商用利用or個人利用)
```
[Create]を選択。

届いたメールから確認URLを選択してアカウントを有効にする。


##2.新規ホストを登録する
###新規ホストの登録
監視するOSを以下から選択する。

- Amazon Linux
- RPMパッケージ
- debパッケージ
- 実行形式ファイルを設置する
- Microsoft Windows Installer

Amazon linuxを選択。

####1.ホストにエージェントをインストールする
yumリポジトリを登録

```bash
curl -fsSL https://mackerel.io/file/script/amznlinux/setup-yum.sh | sh
```

Mackerelのエージェントをインストール

```bash
sudo yum install -y mackerel-agent
```

####2.設定ファイルを記述する

agentの設定ファイルである```/etc/mackerel-agent/mackerel-agent.conf```に以下を記述。

```mackerel-agent.conf
sudo mackerel-agent init -apikey="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
```

####3.エージェントを起動する

```bash
sudo /sbin/service mackerel-agent start
```

なお、```/var/log/mackerel-agent.log```にログが残るのでデバッグの際に参照すると良い。

##3.サービスをつくってみましょう
Servicesを選択
[サービスを追加]を選択

サービス名: test-server-monitor
メモ: <空欄>

[作成]を選択
 

##4.ロールをつくる
先ほど作成した[test-server-monitor]を選択

[ロールを追加]を選択

ロール名: app
メモ: Monitor for EC2

[作成]を選択

##5.ホストにロールを紐付ける
[Hosts]を選択
先ほどエージェントをインストールしたEC2に対して、[サービス/ロール]の項目を選択し、作成したサービス/ロールを紐付ける。

以上で、EC2を監視するための設定は完了である。

#RDSやElastiCacheなどEC2以外のリソースも監視
マネジメントコンソールから、[Identify & Access Management]を選択。

[ユーザー]を選択。
[新規ユーザーの作成]を選択。

ユーザー名: MackerelAWSIntegrationUser
として、[作成]を選択。

ここで発行される以下の2つの情報は後ほど使用するのでメモしておく。


- アクセスキーID
- シークレットアクセスキー

[認証情報のダウンロード]を選択し、credentials.csvを保存する。

[ユーザー]から先ほど作成したIAMユーザーを選択。
[アクセス許可]から管理ポリシーを選択。
[ポリシーをアタッチ]を選択し、以下のものを管理ポリシーに追加する。

- AmazonEC2ReadOnlyAccess
- AmazonElastiCacheReadOnlyAccess
- AmazonRDSReadOnlyAccess


なお、監視対象をタグで絞りこむ設定をする場合は以下の設定も行う。
[アクセス許可]からインラインポリシーを選択。
[Policy Generator]で以下の内容を設定する。リソースARNはここでは```*```としている。

- ec2:DescribeTags
- elasticloadbalancing:DescribeTags
- rds:ListTagsForResource
- elasticache:ListTagsForResource


すると、以下の内容のものが作成される。

```policygen-MackerelAWSIntegrationUser-201609130038
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1473694502000",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeTags"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1473694583000",
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:DescribeTags"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1473694658000",
            "Effect": "Allow",
            "Action": [
                "rds:ListTagsForResource"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1473694695000",
            "Effect": "Allow",
            "Action": [
                "elasticache:ListTagsForResource"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

###AWSインテグレーションの設定
1.mackerelのマイページトップから[Dashboard]を選択。
2.[Overview]を選択。
3.[オーガニゼーション名]を選択。
4.[AWSインテグレーション]のタブを選択し、[新しいAWSアクセスIDを登録]を選択。
5.先ほどIAMユーザ作成時に発行されたアクセスキーID、シークレットアクセスキーを入力し、リージョンを監視対象のリソースがあるところに設定する。

アクセスキーID
********************
シークレットアクセスキー
••••••••••••••••••••••••••••••••••••••••
リージョン
ap-northeast-1


####メトリックを収集するサービス
監視したいリソースを選択する。
ここでは、EC2,ELB,RDS,ElastiCacheを選択。

####タグを指定して登録するホストを絞り込む
タグで監視対象を絞り込みたい場合に使用する。ここでは省略。

####基本設定で以下の項目を入力
名前: MyAWSConfigure
メモ: 空欄

[作成]を選択。

数分後、各種リソースが監視対象画面に現れる。
それらのサービス/ロールも設定しておく。

以上で設定は完了である。

#参考
公式サイト
https://mackerel.io/ja/
AWSインテグレーション
https://mackerel.io/ja/docs/entry/integrations/aws