AWSをZabbixで監視してみた

こんにちは、SCSK株式会社の中野です。

皆様はAWS上に構築したシステムを監視するために、どの監視ツールを利用していますでしょうか。

AWSが提供している監視サービス「Amazon CloudWatch」を利用している方も多いと思います。

今回は「Amazon CloudWatch」ではなく、オープンソースの統合監視ツールである「Zabbix」を用いて、AWSのサービスを監視してみたいと思います。

Zabbixとは

Zabbixは、エンタープライズ対応のオープンソース統合監視ツールです。

サービスやそれを支える ITシステム(サーバ、ネットワーク機器等)の状態を把握し、障害の予兆やサービスへ影響を及ぼす事象が発生した際に、システム管理者やオペレータに通知を行うオープンソースの統合監視ソリューションです。
数万デバイス規模のエンタープライズ環境でも多数の稼動実績を誇っています。

Zabbixの詳細情報については、下記リンクよりご確認ください。

Zabbixには、AWSの各種サービスを監視するための設定をまとめた4つのテンプレートが用意されています。

・AWS by HTTP(以下3つのテンプレートが自動で設定される)
・AWS EC2 by HTTP(EC2とAWS EBSボリュームのメトリクス監視)
・AWS RDS instance by HTTP(RDSのメトリクスを監視)
・AWS S3 bucket by HTTP(S3バケットのメトリクスを監視)

※ AWSテンプレートを利用するためには、Zabbix 6.0.13 LTS、または Zabbix 6.2 以上のバージョンが必要です。

今回は「AWS EC2 by HTTP」テンプレートを利用してAWSのサービス(EC2)を監視していきたいと思います。

監視してみた(事前準備編)

ZabbixでEC2を監視するために、AWS側で以下の対応が必要になります。

・AWS IAMの設定
1、監視用のAWSアカウント作成
2、IAMポリシー作成
3、アカウントのアクセスキー発行

IAMポリシーは、ZabbixがAWSへアクセスすることができるよう以下のように作成し、アカウントに適用させます。

{
   "Version": "2012-10-17",
   "Statement": [
     {
      "Action": [
        "cloudwatch:Describe*",
        "cloudwatch:Get*",
        "cloudwatch:List*",
        "ec2:Describe*",
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

今回はEC2とCloudwatchのみですが、RDSやS3の監視も実施したい場合は、同様に必要な権限を”Action”に追加します。

rds:Describe*
s3:ListAllMyBuckets
s3:GetBucketLocation

AWS側の事前準備は以上です。

監視してみた(設定編)

それではZabbixで監視するために、対象ホストをZabbixへ登録していきます。

Zabbix登録画面では、ホスト名やIPアドレスを設定して、テンプレートは「AWS EC2 by HTTP」を選択します。

ホストマクロに、事前準備で発行したアカウントのアクセスキーとシークレットアクセスキーを設定します。
また、監視対象(EC2)のインスタンスIDとリージョンコードも設定する必要があります。

あとは「追加」または「更新」ボタンを押すだけで、Zabbixでの監視が開始されます。
データ取得まで数分待つと、以下の通りCPUやディスク等の監視アイテムを取得することができました。

最後に

ZabbixでAWSを監視してみた結果、簡単に監視データを取得することができることが分かりました。

しかし、「AWS EC2 by HTTP」のテンプレートだけでは、インスタンスOS内部リソース・ログ監視は実施不可のため、
EC2にもZabbixエージェントを導入し、両方での監視を実施する必要がありそうだと感じました。

今回は基本的な内容を試してみましたが、今後はもっと深掘りし情報を発信していきたいと思います。
最後まで読んでいただき、ありがとうございました!

タイトルとURLをコピーしました