みなさん、こんにちは。しずかです。2/8にTwitterで Zabbix Team Japan (@zabbix_jp) からこんな投稿がありました。
概要は、Zabbix6.0ならびに6.2で使える AWS環境を監視するテンプレートが公式から公開された! ようです。2月1日にリリースされた長期サポート版のZabbix 6.0.13 LTSから、6.2からバックポートされたAWS監視が用意されました。
— Zabbix Team Japan (@zabbix_jp) 2023年2月8日
利用する際にはテンプレートの他に、Zabbix server(proxy)も6.0.13にする必要があります。https://t.co/nmNf2MIAX1#zabbix pic.twitter.com/0bzuos09EA
内容を確認しながら、実際にテンプレートを使って、AWS環境の監視してみたいと思います。
目次
ドキュメントの確認
6.0並びに6.2のドキュメントを確認してみます。
What's new in Zabbix 6.0
まずは6.0のドキュメントを見ていきましょう。
テンプレート
新しいテンプレートが使用できます:
AWS EC2 by HTTP
AWS by HTTP
AWS RDS instance by HTTP
AWS S3 bucket by HTTP
6.0.13 で4種類のテンプレートが公開されてますね。
What's new in Zabbix 6.2
次に6.2のドキュメントを見ていきましょう。
This topic does not exist yet.
AWS EC2 monitoring
A new template AWS EC2 by HTTP has been added allowing to quickly deploy Zabbix monitoring of AWS EC2 and attached AWS EBS volumes by HTTP.
6.2.0 でEC2用のテンプレートが公開されてます。
This topic does not exist yet.
A new AWS by HTTP template is available now.
6.2.3 でRDSやS3のテンプレートも公開されてます。
Integrations から テンプレート取得
さっそくテンプレートの入手方法から使い方を見ていきます。
Integrationsとは
Integrationsとは、Zabbix公式または有志(3rd Party)が公開しているZabbixのテンプレート集です。冒頭で「AWS環境を監視するテンプレートが公式から公開された」と記載しましたが、AWS環境を監視するテンプレートは以前から3rd Party製はありました。しかし今回は 公式から公開された ことがポイントかと思います。
余談ですが、ネットワークスイッチの監視をする時に、Integrationsの3rd Partyで公開されているテンプレートにとてもお世話になった経験があります。特にベンダーMIBを使った詳細な監視テンプレートにはすごくお世話になりました。本記事では3rd Party製のテンプレートを否定する意思は一切ございません。
Integrations AWS
では、 Integrationsの以下のページにアクセスします。
まずはご利用のバージョンを選択します。今回は6.0.13を使用するので 6.0 で見ていきます。
その下にさっそくソースURLが記載されてますが、、、まずは内容を確認しておきます。
Overview
For Zabbix version: 6.0 and higher
The template to monitor AWS EC2, RDS and S3 instances by HTTP via Zabbix that works without any external scripts.
外部スクリプトなしで動作する EC2などの監視テンプレート、とのことです。
Zabbixでは、スクリプトをサーバに設置し、ユーザーパラメータを用いて、特殊な監視をするケースがあるかと思います。そのような スクリプトが不要である ことは大きなポイントではないでしょうか。
Setup
Before using the template, you need to create an IAM policy for the Zabbix role in your AWS account with the necessary permissions.
ご利用中のAWSアカウントにて Zabbix用のIAMポリシーなどが必要になるようです。設定内容については、実際に設定するときに見ていきます。
テンプレートの取得
先ほどのソースURLにアクセスしましょう。
ブランチ名右側の …
(三点リーダー) から ダウンロード
を押下します。Git環境がある方は左メニューバーからcloneしましょう。
Zipファイルを解凍して templates\cloud\AWS
配下にテンプレートのyamlファイルがあります。これがお目当てのテンプレートファイルです。(xmlではなくなったようですね。)
テンプレートの種類と概要
執筆時点ではAWS用のテンプレートは4つあります。それぞれのテンプレートとその概要は以下の通りです。
なお下記名称については、本記事での名称になります。ご了承ください。
- AWS EC2 by HTTP (template_cloud_aws_ec2_http.yaml)
EC2インスタンス用テンプレート - AWS RDS instance by HTTP (template_cloud_aws_rds_http.yaml)
RDSインスタンス用テンプレート - AWS S3 bucket by HTTP (template_cloud_aws_s3_http.yaml)
S3バケット用テンプレート - AWS by HTTP (template_cloud_aws_http.yaml)
AWS上のEC2/RDSインスタンス・S3バケットのディスカバリ用テンプレート
テンプレートを使用した監視設定(EC2用)
EC2用のテンプレートを使用して、監視していきます。手順は以下の通りです。
- AWSマネジメントコンソールのIAMからポリシー、ユーザ、アクセスキーの作成
- 監視対象のリージョン、インスタンスID確認
- Zabbixにてテンプレートインポート
- 監視対象のホスト作成・テンプレート適用・マクロ修正
- 監視データの確認
AWSマネジメントコンソールのIAMからポリシー、ユーザ、アクセスキーの作成
IAMポリシー作成
AWSマネジメントコンソール(以下、マネコン)から IAM > ポリシー にアクセスします。ポリシーを作成
から新規に作成します。
ポリシーの作成画面1にて、JSON
のタブを押下し、さきほどのIntegrations AWSに記載のポリシーを記載し、次のステップ: タグ
を押下します。
タグは必要に応じて追加してください。今回は特に設定せずに次に進みます。
ポリシーの作成画面3にて、名前
を入力します。必要に応じて 説明
も入力しておきましょう。入力したら ポリシーの作成
を押下します。
ポリシーが作成されたことを確認できたら、完了です。
IAMユーザ作成
次に マネコン > IAM > ユーザー にアクセスし、ユーザーを追加
を押下します。
任意のユーザー名を入力し、次へ
を押下します。コンソールアクセスを有効化
はチェック不要です。
ポリシーを直接アタッチする
を選択し、先ほど作成したポリシー を選択し、次へ
を押下します。
内容を確認し、問題なければ ユーザーの作成
を押下します。
ユーザーが作成されたことを確認できたら、完了です。
アクセスキー作成
作成したユーザーを選択し、ユーザーの詳細画面から セキュリティ認証情報
のタブを選択します。
ページをスクロールし、アクセスキーの欄にある アクセスキーを作成
を押下します。
主要なベストプラクティスと代替案にアクセスする、の画面にて サードパーティーサービス
並びに 上記のレコメンデーションを理解し、アクセスキーを作成します
にチェックを入れ、次へ
を押下します。
なお今回は検証目的のため、上記の選択をしアクセスキーを作成しています。ベストプラクティスなどについては、AWSドキュメントを参照してください。
必要に応じて 説明
を入力し、アクセスキーを作成
を押下します。
作成されたら、アクセスキー・シークレットアクセスキーを控えておきます。なおシークレットアクセスキーを忘れた場合はアクセスキーの再作成が必要になります。
控えたら 完了
を押下します。
作成したアクセスキーが表示されていれば完了です。
監視対象のリージョン・インスタンスID確認
監視対象のリージョン、並びにEC2インスタンスのインスタンスIDを控えておきます。
次の項目からZabbixの設定になりますが、以下の4つのパラメータが揃っていることを確認しましょう。
- アクセスキー
- シークレットアクセスキー
- リージョン
- インスタンスID
テンプレートインポート
ここからはZabbixでの操作です。ZabbixのWebUIからテンプレートをインポートします。WebUI > 設定 > テンプレート にアクセスします。名前に AWS
を入力し、適用
を押下します。Zabbix6.0.13ではデフォルトでインポートされているようです。
しかし検証したところ、最新のテンプレートと差分があるようなので、インポートしてアップデートしましょう。
右上の インポート
を押下します。
ポップアップが表示されるので、ファイルを選択
を押下します。
ダウンロードしてきたテンプレートを選択します。解凍したフォルダの中の以下のパスにファイルがあります。
パス : templates\cloud\AWS\aws_ec2_http
ファイル: template_cloud_aws_ec2_http.yaml
更新箇所を確認したら、インポート
を押下します。
インポートに成功しました、と表示されれば完了です。
監視対象のホスト作成・テンプレート適用・マクロ修正
インポートしたテンプレートを使ってホストを登録していきます。WebUI > 設定 > ホスト から ホストの作成
を押下します。
ポップアップが表示されるので、ホスト名
、グループ
を入力します。テンプレートの右側の 選択
を押下してテンプレートを指定します。
AWS EC2 by HTTP
のテンプレートを選択し、選択
を押下します。
マクロ
のタブを選択し、 継承したマクロとホストマクロ
を押下します。変更するマクロ右側の 変更
を押下し、マクロを修正していきます。
マクロの実効値の欄のグレーアウトが解除されるので、値を入力します。
入力箇所とパラメータは以下の通りです。
マクロ | 入力値 |
---|---|
{$AWS.ACCESS.KEY.ID} |
アクセスキー |
{$AWS.EC2.INSTANCE.ID} |
監視対象のインスタンスID |
{$AWS.REGION} |
リージョン |
{$AWS.SECRET.ACCESS.KEY} |
シークレットアクセスキー |
マクロを入力したら、追加
を押下します。ホストが追加されたことを確認できたら完了です。
最新データの確認
ホストを追加しただけでは、各アイテムはまだ登録されていませんので、ディスカバリを手動実行し、アイテムを登録します。
先ほど追加したホストの アイテム
を開きます。設定 > ホスト > 対象ホストのアイテム にアクセスします。サブフィルターのタイプにて スクリプト
を選択します。
すべてのアイテムをチェックし、監視データ取得
を押下します。
監視データの取得が完了すると、アイテムが自動で登録されます。
監視データ > 最新データ より 登録したホストを選択します。最新の値の欄にデータが取得できていることを確認します。
テンプレートを使用した監視設定(ディスカバリ用)
ディスカバリ用のテンプレートは以下の手順で使用します。
- AWSマネジメントコンソールのIAMからポリシー、ユーザ、アクセスキーの作成
- Zabbixにてすべてのテンプレートインポート
- ディスカバリ用のホスト作成・テンプレート適用・マクロ修正
- 監視データの確認
ディスカバリ用テンプレートの概要
ディスカバリ用テンプレートは、ディスカバリ用ホストにテンプレートを適用します。そのホストがデータを取得すると、AWS上のリソース(EC2インスタンス、RDSインスタンス、S3バケット)が自動でホスト登録されます。各ホストはそれぞれのテンプレート(EC2用、RDS用、S3用)が適用されます。
1~2 については、上記と同じ手順のため割愛します。またテンプレートについては、EC2用と同じ手順で、取得したRDS用、S3用テンプレートをインポートします。
ディスカバリ用のホスト作成・テンプレート適用・マクロ修正
設定 > ホスト > ホストの作成 からディスカバリ用のホストを作成します。テンプレートは AWS by HTTP
を適用します。
またマクロについては、{$AWS.ACCESS.KEY.ID}
、 {$AWS.REGION}
、 {$AWS.SECRET.ACCESS.KEY}
の3箇所を設定します。インスタンスIDは設定する必要ありません。
ディスカバリ用ホストの作成が完了したら、対象ホストの ディスカバリ
を押下します。
登録されているディスカバリのすべてをチェックし、監視データ取得
を押下します。
ホストの一覧からホストグループを解除すると、ホストが登録されていることがわかります。
EC2 instances discovery:
ディスカバリで登録されたEC2インスタンス
RDS instances discovery:
ディスカバリで登録されたRDSインスタンス
S3 buckets discovery:
ディスカバリで登録されたS3バケット
またデフォルトでは、それぞれのホストは以下のホストグループに登録されるようです。
EC2:Virtual machines
RDS : Templates/Databases
S3 : ap-northeast-1
、Templates/Applications
監視データ確認の際に、上記ホストグループでフィルターすることで、確認しやすくなるかと思います。なお最新データの確認方法は上記と同じため割愛します。
まとめ
長い記事になってしまいましたが、いかがだったでしょうか。それでは今回のまとめです。
- Zabbix6.0/6.2で AWS監視テンプレート が 公式からリリースされた
- Zabbix6.0.13 以降、ならびに Zabbix6.2.3 以降で、4つのテンプレートが使用できる
- テンプレートはEC2インスタンス用、RDSインスタンス用、S3バケット用、AWS上のリソースディスカバリ用がある
(名称については、本記事での名称になります。ご了承ください。) - テンプレートを使えば 外部スクリプトが不要 でAWS環境の監視ができる
- IAMポリシー、IAMユーザーとアクセスキーが必要になる
またツイートのサムネイルにあるダッシュボードは、どうやらテンプレートには含まれてないようでした。。。
最後まで読んでいただき、ありがとうございました。
静 優(執筆記事の一覧)
オンプレからクラウドに転身したインフラエンジニア