こんにちは、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エージェントを導入し、両方での監視を実施する必要がありそうだと感じました。
今回は基本的な内容を試してみましたが、今後はもっと深掘りし情報を発信していきたいと思います。
最後まで読んでいただき、ありがとうございました!