MackerelのAWSインテグレーションで簡単にインスタンスを監視してみた
こんにちわ。MSといえばジェガン好きの市田です。
今回は、監視サービスMackerelのAWSインテグレーションという機能を使ってみたいと思います。
AWSインテグレーションとは
Mackerelのサービスの一つで、監視エージェントをインストールせずにEC2などのAWSリソースをモニタリングできるサービスです。
監視エージェントをインストールすると更に詳細な情報を取得することができます。
詳細は下記の公式サイトをご確認ください。
何が見れるのか
AWSインテグレーションは、監視エージェントをインストールしない代わりに、AWSのAPIをコールしてメトリックを監視できるというものです。 つまり、CloudWatchと見れるものと同等のものが見れるということになります。
監視エージェントをインストールすると、メモリ使用量やロードアベレージを監視できるようになります。
手順の流れ
- AWS側でIAMユーザーを作成する
- 作成したIAMユーザにポリシーを付与する
- IAMユーザのアクセスキーをMackerelに登録する
- EC2のタグで登録対象を絞り込む
基本的には、上記のMackerelの公式ページにある手順に沿って作業を行ってみたいと思います。
IAMユーザーの作成
まずAWS側でMackerel用のIAMユーザを作成します。
今回は公式の手順の通り「MackerelAWSIntegrationUser」というユーザ名で作成します。
他のユーザ名でも構いません。
作成できたら、必ず認証情報のファイルをダウンロードしておきましょう。 後でダウンロードすることはできません。
IAMユーザのポリシー付与
次に、作成したIAMユーザに対して、Mackerelで必要なポリシーを設定します。
アタッチするポリシーは以下です。
AmazonEC2ReadOnlyAccess
AmazonElastiCacheReadOnlyAccess
AmazonRDSReadOnlyAccess
「ポリシーのアタッチ」をクリックします。
「AmazonEC2ReadOnlyAccess」で検索して該当するポリシーにチェックを入れます。
チェックをいれたら、検索窓のキーワードを消して「AmazonElastiCacheReadOnlyAccess」で再度検索します。 検索で出てきたポリシーにチェックをいれます。
同様に「AmazonRDSReadOnlyAccess」についても検索してチェックを入れます。
下記のように3つ全てにチェックが入っていれば、「ポリシーのアタッチ」をクリックしてアタッチします。
これで「MackerelAWSIntegrationUser」ユーザに3つのポリシーが適用されました。
IAMユーザのアクセスキーをMackerelに登録
上記で作成した「MackerelAWSIntegrationUser」ユーザのキー情報をMackerelに登録します。 Mackerlの管理画面にログインして、登録画面を開きます。
- Mackrelの画面左上からトップページに移動します。
- トップページの「AWSインテグレーション」タブを開きます。
- 「新しいAWSアクセスIDを登録」をクリックします。
先ほどIAMユーザを登録した際にダウンロードした認証情報のファイルから、アクセスキー、シークレットアクセスキーを入力します。
リージョンは、今回東京リージョンなので「ap-northeast-1」を選択しています。
メトリックを収集したいサービスにチェックを入れます。
サービスとロールは作成していたら、希望のものを選択してください。今回は未指定のままにします。
下にスクロールして、収集対象にしたいインスタンスにつけるタグを設定します。
ここでいうタグとは、AWS側でEC2に設定するタグのことです。このタグの有無で収集対象を識別することができます。
今回は、タグ名「mackerel」の内容が「true」であれば監視対象になるように設定します。 基本設定は、任意の名前で構いません。
最後に「作成」をクリックして、下記のような画面になっていればOKです
タグによる絞り込み
次に先ほど作成したタグで監視を絞り込む設定を行います。
タグで絞込むためには各サービスのタグを取得するAPIに対する権限が必要になります。
先ほどIAMユーザに設定したポリシーに下記のアクションが許可されているかを確認します。
ec2:DescribeTags
elasticloadbalancing:DescribeTags
rds:ListTagsForResource
elasticache:ListTagsForResource
今回は、EC2だけ監視対象にしているので、ec2:DescribeTags
のアクションがアタッチしたポリシーAmazonEC2ReadOnlyAccess
で許可されているか確認します。
下記にあるように「ec2:Describe*」となっているのでec2:DescribeTags
が許可されていることが分かります。
次に連携ユーザーに対する iam:GetUser
も許可します。
こちらはIAMのインラインポリシーで作成します。
ポリシージェネレーターで作成します。
AWSサービスは「AWS Identify and Access Management(IAM)」を選択します。
アクションは「GetUser」だけ選択します。
Amazonリソースネーム(ARN)は「arn:aws:iam::account-id:user/user-name」の形式で指定します。
account-id
の部分は監視したいAWSアカウントのIDを入れてください。user-name
は作成済みのIAMユーザ「MackerelAWSIntegrationUser」を指定します。
ARNの入力ができたら「ステートメントを追加」をクリックします。
次の画面では、そのまま「次のステップ」をクリック。
次の画面も、そのまま「ポリシーの適用」をクリック。
これでiam:GetUser
の追加が完了しました。
EC2にタグを設定する
次にEC2にタグ設定を行います。
設定の内容は、Mackerelで指定したものを設定します。こうすることで、Mackerlで設定したタグが指定の内容になっているインスタンスのみ監視対象にすることができます。
下記の通り、mackerel
タグがtrue
になっているインスタンスが監視対象になります。
Mackerelの確認
この状態でMackerel側の確認をして、タグを設定した2つのEC2インスタンスが表示されていればOKです。
上記に表れているホスト名のうち、インスタンスIDになっているものとデフォルトのホスト名になっているものの違いは、監視エージェントの有無によるものです。
インスタンスIDになっている方には監視エージェントがインストールされていないものになります。
インスタンスをクリックするとグラフを見ることができます。
ちなみに、監視エージェントを入れると下記のようにメモリ使用量のグラフなどを見ることができます。
最後に
今回はEC2だけを対象にAWSインテグレーションを設定してみました。
公式サイトにあるように、他のリソース情報を収集・監視したい場合は、IAM設定を追加しなければいけない場合があります。
以上です。