Zabbix 6.2で追加されたAWS Amazon EC2監視テンプレートの使用方法
こんにちは!プラットフォーム技術部の小羽根陸です。
前回の記事では、Zabbixテンプレートの使用方法を紹介しました。今回は、2022年5月にリリースされたZabbix 6.2で追加されたAWSのAmazon EC2を監視するテンプレートがとても便利だと感じたため使用方法を紹介します!
今までAWSを含むクラウドサービスをZabbixで監視する際は、シェルスクリプトを自前で作成し、Zabbixから実行して監視データを取得していました。今回追加されたEC2監視テンプレート内には、JavaScriptが用意されているため、ユーザーがシェルスクリプトを作成する必要がなく簡単に監視できるようになりました。
LTS版を使用している方は、Zabbix 7.0 LTSのリリース(2023年第2四半期予定)をお待ちください。(2023年1月16日追記:Zabbix 6.0.13 LTSのリリースに含まれることになりました。詳しくはこちら。)
AWS Amazon EC2監視テンプレートの説明
今回は、EC2監視テンプレートとして「AWS EC2 by HTTP」を使用します。EC2用のホストにテンプレートをリンクすることで、EC2インスタンスとインスタンスにアタッチされているEBSボリュームのメトリクス、およびインスタンスのアラームをCloudWatch API経由で取得できます。
「AWS EC2 by HTTP」テンプレートでは、以下のアイテム内でJavaScriptを使用し、複数のメトリクスデータを収集します。
- AWS CloudWatch: Get instance alarms data
- AWS EBS: Get volumes data
- AWS EC2: Get metrics data
- AWS EBS: [“{#VOLUME_ID}"]: Get metrics
上記アイテムで一括取得した値を「依存アイテム」として、別アイテムに引き継ぎ「保存前処理」機能で必要な値だけを抽出します。アイテム個々で監視対象にデータ収集するのと比べて、マスターアイテムとして1度で複数の値を取得しているため、監視対象へのアクセス頻度が減り、Zabbixサーバーの負荷を軽減できます。イメージとしては下図の通りです。
「AWS EC2 by HTTP」テンプレートでは、依存アイテムに値を引き継ぐ用途のマスターアイテムは、DBの容量を圧迫させないために、「保存前処理」機能を使用して取得した値を破棄しています。そのため、Zabbixフロントエンドから「最新データ」を確認すると値を取得していないように見えます。
また、冒頭でも記載しましたが、テンプレート内にEC2のリソースを監視するJavaScriptが用意されました。今までは、監視対象EC2が多ければ多いほど実行するスクリプトが増加し、プロセス起動負荷がものすごくかかっていましたが、Zabbixサーバープロセスであるpoller内のJavaScriptエンジンで実行されるようになったため、プロセス起動負荷の軽減に繋がっています。
監視対象のインスタンスにアタッチされているEBSボリュームはZabbixのディスカバリルール機能で、自動検出してアイテムとトリガーを作成してくれます。
AWSテンプレートの使用方法
ここからは、ZabbixならびにAWSの設定方法について説明します。
事前に準備するもの
- Zabbix 6.2以降の環境
- AWSアカウント
- 監視対象のAmazon EC2
「AWS EC2 by HTTP」テンプレートを使用するには、Zabbix 6.2以降のバージョンが必須です。Zabbix 6.0以前の環境だと、JavaScriptエンジンに値をハッシュ化するhmac関数が未実装のため、テンプレート内に用意されているJavaScriptが動作しません。(2023年1月16日追記:Zabbix 6.0.13 LTSのリリースでhmac関数が実装され、テンプレート内に用意されているJavaScriptが動作するようになりました。詳しくはこちら。)
Zabbix 6.2.2以前の環境はテンプレートの最新化が必要
Zabbix 6.2.0のテンプレートだと一部アイテムの「保存前処理」で値を抽出する箇所にバグがあり取得できません。また、Zabbix 6.2.1のテンプレートでは一部アイテムが値の取得に失敗するバグがあります。バグについてはZabbixサポートページにチケットが作成されていますので、興味のある方はご確認ください。
上記バグはZabbix 6.2.3で修正されているため、6.2.2以前をお使いの方はテンプレートを最新化する必要があります。余談ですが、今回の記事はZabbix 6.2.0で作成していたため、アイテム値取得が失敗する原因を調査するのに時間がかかりました・・・。
Zabbixの開発がおこなわれているGitHubを確認したところ、Zabbix 6.4.0以降では上記バグは修正されているため、テンプレートを最新化する必要はありません。そのためZabbix 6.2.0 ~ 6.2.2以外を使用の方は、本記事内のAWSの設定に進んでOKです。
Zabbix 6.2.0 ~ 6.2.2の環境をお使いの方は以下リンクから最新のテンプレートをダウンロードします。
ダウンロードが完了したら、用意したZabbixにテンプレートをインポートしていきます。Zabbixフロントエンドにアクセスして、メインメニューから【設定】→【テンプレート】の順に押下します。
テンプレートの一覧から「インポート」を押下します。
Zabbix 5.4以前は既存のテンプレートを上書きしたくない場合、リネームして上書きされないように対応していました。Zabbix 5.4からはテンプレートがUUIDで管理されるようになったため、UUIDが同じ場合は、テンプレート名が異なっていても上書きされてしまいます。そのため「AWS EC2 by HTTP」テンプレートが上書きされて困る場合は、事前にエクスポートしておくことをおすすめします。
「ファイルを選択」を押下して先ほどダウンロードをしたyamlファイルを選択し、「インポート」を押下します。
Zabbix 5.4からインポート時に差分が表示されるようになりました。赤背景が変更前の内容、緑背景が変更後の内容です。問題なければ、再度「インポート」を押下します。
インポートが成功した場合は、「インポートに成功しました」と表示されます。
テンプレートを確認できたらインポート完了です。
AWSの設定
まずはAWS側の設定をおこないます。EC2メトリクスを収集するために必要なIAMポリシーとIAMユーザーを作成します。
IAMの設定
AWSマネジメントコンソールにログインして、「IAM」を押下します。
画面が遷移した後に「ポリシー」を押下します。
「ポリシーを作成」を押下します。
ポリシーの作成画面が表示されるので「JSON」タブを選択します。
JSONコードの入力画面が表示されます。
以下のJSONコードをコピーして、入力画面に貼り付けます。
{
"Version":"2012-10-17",
"Statement":[
{
"Action":[
"cloudwatch:Describe*",
"cloudwatch:Get*",
"cloudwatch:List*",
"ec2:Describe*"
],
"Effect":"Allow",
"Resource":"*"
}
]
}
入力画面に貼り付けたら「次のステップ:タグ」を押下します。
タグは必要に応じて設定してください。今回の記事ではタグは追加せず設定を進めます。
「次のステップ:確認」を押下します。
IAMポリシーの名前、説明を入力します。
下にスクロールして「ポリシーの作成」を押下します。
IAMポリシーの作成が成功した場合は、作成したIAMポリシーの名前が表示されます。
次にIAMユーザーを作成します。サイドバーにある「ユーザー」を押下します。
「ユーザーを追加」を押下します。
ユーザー名を記載して、「アクセスキー-プログラムによるアクセス」にチェックをいれます。
その後に「次のステップ:アクセス権限」を押下します。
アクセス許可の設定画面に遷移するため、「既存のポリシーを直接アタッチ」を選択後に、先ほど作成したポリシーを選択して「次のステップ:タグ」を押下します。
「ポリシーのフィルタ」から検索することでスムーズに作成したポリシーを見つけられます。
必要に応じてタグの追加をおこないます。今回の記事ではタグを追加せず「次のステップ:確認」を押下して先に進めています。
入力した内容に間違いがなければ「ユーザーの作成」を押下します。
成功と表示されていれば、ユーザーの作成は完了です。
ユーザーを作成した際に表示される「アクセスキーID」と「シークレットアクセスキー」後にZabbixの設定で使用するため控えておいてください。「.csvのダウンロード」を選択することでファイルとして保存できます。
このページを閉じてしまうと、「シークレットアクセスキー」の確認はできなくなります。
「シークレットアクセスキー」を控え忘れた場合は、再度アクセスキーを作成する必要があります。
アクセスキーの再作成
この手順は「シークレットアクセスキー」を控え忘れた場合のみ実施してください。「シークレットアクセスキー」を控えている場合は、この手順を飛ばしてください。
それでは、アクセスキーを再発行していきます。先ほど作成したユーザーを選択します。
「認証情報」タブを選択します。
「アクセスキーの作成」を押下します。
新たにアクセスキーが発行されるため、「アクセスキーID」と「シークレットアクセスキー」を控えておきましょう。
新たにアクセスキーを発行したため、使用しないアクセスキーは削除します。
削除するためには一度無効化する必要があるため、「無効化」を選択します。
「無効化」を押下します。
「×」を押下します。
削除するかを確認されるため、赤枠にアクセスキーIDを入力後に「削除」ボタンを押下します。
削除されたことを確認します。
EC2の確認
監視対象のインスタンスIDとリージョン情報が必要なため確認していきます。AWSマネジメントコンソールにログインして、「EC2」を押下します。
画面が遷移した後にサイドバーの「インスタンス」を押下します。
監視したいインスタンスを選択して、表示されたインスタンスIDをコピーします。インスタンスIDは、後にZabbixの設定で使用するため控えておいてください。
次に監視するEC2インスタンスが起動しているリージョンのコードを確認します。
今回の記事では、東京リージョンにEC2インスタンスを構築しているため、リージョンコードである「ap-northeast-1」を控えておきます。
Zabbixの設定
続いてZabbixの設定をおこないます。Zabbixの設定では、監視したいAWS EC2用のホスト作成、EC2監視テンプレートを作成したホストにリンク、そしてテンプレートに含まれている設定をおこないます。
まずホストを作成するため、メインメニューから【設定】→【ホスト】の順で押下します。
「ホストの作成」を押下します。
ホスト作成画面が表示されるため、以下内容を入力または選択します。
- ホスト名:任意のホスト名を入力
- テンプレート:「AWS EC2 by HTTP」を選択
- ホストグループ:任意のホストグループを選択
Zabbix 5.0までホストを作成する際は、インターフェース設定は必須項目でしたが、Zabbix 5.2からインターフェースの設定は未設定でホストが作成できるようになりました。
次にマクロの設定をおこないます。マクロとは指定した文字列(変数名)を指定した値に自動で置き換えてくれる機能です。
テンプレートに登録されているマクロを編集するためには「継承したマクロとホストマクロ」を選択します。
以下のマクロを設定するために、「変更」を選択して本記事内のAWSの設定で控えておいた値を記載します。
- {$AWS.ACCESS.KEY.ID}:作成したAWSユーザーのアクセスキーID
- {$AWS.EC2.INSTANCE.ID}:監視するEC2のインスタンスID
- {$AWS.REGION}:監視するEC2インスタンスが起動しているリージョンコード
- {$AWS.SECRET.ACCESS.KEY}:作成したAWSユーザーのシークレットアクセスキー
マクロの値を入力後に、下にスクロールして「追加」を押下する。
ホストが作成されていることを確認する。
【監視データ】→【最新データ】から最新データを確認して、値が取得できていたら成功です。
一部、値が取得できないアイテムがある恐れがあります。その場合は「?」を選択することでアイテムの説明が確認することができるので、確認してみましょう。
今回の記事で確認したアイテムはIOPS SSDボリュームのみ取得できるアイテムと記載されていました。今回監視対象のEC2にはgp2ボリュームのみアタッチしていたため、値が取得できていなかったようです。
他にも、Nitroベースのインスタンスでないと取得できないアイテムや、本記事内のAWS Amazon EC2監視テンプレートの説明で記載した通り、マスターアイテムは値を破棄しているため、最新の値は空白になります。
まとめ
AWSのAmazon EC2監視テンプレート使用方法について紹介しました。
今回の記事を書き始めた時は、AWSのEC2監視テンプレートのみ実装だったのですが、Zabbix 6.2.2からは以下に記載したテンプレートが追加されており、AWSのRDSやS3、さらにAzureの監視も容易にできるようになっています。
- AWS by HTTP
- AWS RDS instance by HTTP
- AWS S3 bucket by HTTP
- Azure by HTTP
今後クラウドサービスの監視テンプレートが多く追加されていくと思います。すでにオンプレはZabbixで監視しているけどクラウド対応が今一つで、と他の監視ソリューションを検討されている皆さん、ぜひエンハンスに注目しお試しください。
Zabbixをさらに有効活用しAWSやAzureなどクラウド環境も含めた統合監視を実現したい、テンプレート提供されていないクラウドリソースの監視を実装したい、など課題や要望を抱えている皆様、ぜひ当社の「Zabbixサポートプラス」や「監視設定代行・支援」サービスをご検討ください。まずはお気軽にご相談を。
Zabbixに関するお問い合わせはこちらからお願いいたします。