クラウドの運用にMackerelを使ってみた(第5回:AWS/Azureインテグレーション機能を使ってみる)

「クラウド導入・運用サービス」のサービス企画担当のとりとりです。
前回は、ネットワーク死活監視設定を公式チェックプラグインとカスタムメトリックの2つで行い、ping監視を実装できるようになりました。
今回は、AWS/Azureインテグレーション機能を使ってみたいと思います。これにより、AWS/AzureのPaaSサービスのメトリックを可視化できるようになりますので、PaaSを含めた構築~運用まで実現できるようになります。対応しているPaaSは順次機能拡充しているようですので、ヘルプページ(AWS→https://mackerel.io/ja/docs/entry/integrations/aws別ウィンドウで開きます Azure→https://mackerel.io/ja/docs/entry/integrations/azure別ウィンドウで開きます)を見ていただけたらと思います。

構成図・やりたいこと

構成図

アプリケーションサーバー(以降、APサーバー)とデータベースサーバー(以降、DBサーバー)がAWS上に各1台ずつあり、DBサーバーのデータを順次Amazon RDS(以降、RDS)に切り替えている状態とします。各サーバーの初期設定及び、Mackerelエージェントのインストールは完了しているものとします。
前回との構成上の差分は、Amazon RDSが追加されていることです。

各サーバーのスペック(APサーバー、DBサーバー)※前回と同じ

インスタンス:t2.micro(1vCPU,メモリ:1GiB)
OS:Amazon linux2
ディスクサイズ:8GiB

インストールされているミドルウェア(APサーバー、DBサーバー) ※前回と同じ

APサーバー:Apache v2.4
DBサーバー:PostgreSQL 9.6

Amazon RDSのスペック

インスタンス名:database-1
インスタンスサイズ:db.t2.micro
DBエンジン:PostgreSQL 11.5
付与されているタグ:Case:NTTeast-column

やりたいこと

  • DBサーバーをRDSへ順次切り替えることになったので、RDSの監視を行いたい。
  • しばらくは並行して稼働するが、将来的にDBサーバーは廃止する予定

上記やりたいことを実現するために、Mackerelの設定を行います。

IAM設定

実際の設定に入る前に、AWSインテグレーションの仕組みを確認しておきます。AWSインテグレーションは、CloudWatch APIを利用してメトリクスを収集しています。(ヘルプページのAWSインテグレーションより)したがって、Mackerelに対して自分のアカウントの読み取り権限を持つIAMロールを付与する必要があります。ここでは、IAMロールの付与をやっていきます。

まずは、Mackerelのオーガニゼーショントップ画面の「詳細」から、AWSインテグレーションのタブを開き、「AWSインテグレーションを登録」ボタンをクリックします。

すると、監視対象のAWSアカウント情報の入力を求められますが、今の段階では、外部IDの欄に記載されている内容をコピーします。ここのページの入力は次の「AWSインテグレーション登録」で行います。

ここからAWSのマネジメントコンソール上の作業になります。必要なIAMロールを作成していきます。
[IAM]→[IAMロール]→[ロールの作成]と進み、設定画面に移ります。
「信頼されたエンティティ」で「別のAWSアカウント」を選択し、以下の内容を入れていきます。

アカウントID:217452466226
オプション:チェックを入れる
外部ID:先ほどコピーしたIDを入力
MFAが必要:チェックしない

入力が終わったら、「次のステップ:アクセス権限」をクリックします。

アクセス権限ポリシ-は、監視したいAWSサービス単位で指定します。複数指定することも可能です。今回はRDSのみ監視したいので、「AmazonRDSReadOnlyAccess」を付与します。

ポリシーのフィルタで検索をかけると見つけやすくなりますので、必要な権限を見つけたらチェックを入れて、「次のステップ:タグ」をクリックします。

タグの追加はオプションとなります。AWSアカウントの運用上このIAMロールにタグ付けしたい場合は入力します。不要な場合は特に入力せず、「次のステップ:確認」をクリックします。

最後に名前を決めて、「ロールの作成」をクリックします。

これで必要なロールの作成が終わりました…とはなりません。このままMackerelでAWSインテグレーションを登録すると、アカウント内の同じリージョンにある全てのRDSが監視対象になってしまいます。同じアカウントで1つのRDSしか使ってない場合は特に問題になりませんが、特定のRDSだけ監視したい場合は、タグで絞り込みを行う必要があります。そのためのIAMポリシーを先程作ったIAMロールに追加します。

[ロール]に戻り、先程作ったIAMロールを選択します。すると、ロールの概要が出てきますので「ポリシーをアタッチします」を選択します。

今回デフォルトのポリシーがないので,上部にある「ポリシーの作成」をクリックします。

JSONのタブを開いて、以下の入力欄に必要なポリシーを入力します。

IAMポリシー(例)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:ListQueueTags",
                "elasticache:ListTagsForResource",
                "states:ListTagsForResource"
            ],
            "Resource": "*"
        }
    ]
}

入力が終わったら、「ポリシーの確認」をクリックします。
ポリシーの確認では名前と説明を入力して、「ポリシーの作成」をクリックします。

作成が終わったら、先程作ったIAMポリシーの名前を選択して、「ポリシーのアタッチ」をクリックします。

これでIAMロールの作成が完了しました。ロールARNをコピーしておきます。これは、次のAWSインテグレーション登録で使います。

AWSインテグレーション登録

IAMロールの作成が終わったら、Mackerel側の作業となります。

先程のAWSインテグレーション登録のページに戻り、以下の内容を入れていきます。

ロールARN:先ほどコピーしたARN
リージョン:監視対象のRDSがあるリージョン(今回は東京リージョン)
メトリックを収集するサービス:RDS
デフォルトロール:DBロール(DBサーバーと同じロールですが、RDS用のロールを作っても構いません)
タグ:Case:NTTeast-column
名前:任意

下まで入力が終わったら、「作成」ボタンをクリックします。

しばらくすると、AWSインテグレーションのタブがこのようにRDSを認識するようになります。

実際の監視画面は以下のように見えます。あとは監視ルールを別途設定して、しきい値を決めていきます。(やり方は第2回を参照、今回は省略します)

これで、MackerelでRDSが監視できるようになりました。

まとめ

PaaSの監視まで可能になったことで、クラウドネイティブな使い方をしてもいままでのIaaS中心のやり方と同じように可視化ができるというのは、運用側に非常に優しいと感じています。

これまでの5回で、Mackerelを使って監視運用の設定を行ってみました。監視にあたって必要なことが揃っているのは感じていただけたのではないかと思います。
次回以降の内容は未定ですが、当コラムで随時記事を投稿していきたいと思いますので、今後ともどうぞよろしくおねがいします!

Amazon Web Services(AWS)は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
Microsoft Azureは、米国Microsoft Corporationおよびその関連会社の商標です。
Mackerelは、株式会社はてなの商標です。
本コラムに掲載のサービスや登録画面等は2019年11月時点の情報であり、変更となる場合があります。

クラウドとオンプレミスでの運用を比較しながら解説!!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る