Zabbix 6.xで追加されたAWS Amazon RDS監視テンプレートの使用方法

Amazon RDS,Amazon Web Services,Zabbix

こんにちは!プラットフォーム技術部の小羽根陸です。

前回の記事では、Amazon EC2を監視するテンプレートの使用方法を紹介しました。
今回の記事では、Amazon RDSを監視するテンプレートの使用方法を紹介します。

RDSのテンプレートもEC2のテンプレート同様、テンプレート内にJavaScriptが用意されているため、ユーザーがシェルスクリプトを作成する必要がなく簡単に監視ができます。

AWS Amazon RDS監視テンプレートの説明

今回はRDS監視テンプレートとして「AWS RDS instance by HTTP」を使用します。
RDS用のホストにテンプレートをリンクすることで、DBインスタンスイベント、およびDBインスタンスのアラームをCloudWatch API経由で取得ができます。

「AWS RDS instance by HTTP」テンプレートでは、以下のアイテム内でJavaScriptを使用し、複数のメトリクスデータを収集します。

  • AWS CloudWatch: Get instance alarms data
  • AWS RDS: Get instance events data
  • AWS RDS: Get instance info
  • AWS RDS: Get metrics data

上記アイテムで一括取得した値を「依存アイテム」として、別アイテムに引き継ぎ「保存前処理」機能を使用して必要な値だけを抽出します。

アイテム個々で監視対象にデータ収集するのと比べて、マスターアイテムとして1度に複数の値を取得しているため、監視対象へのアクセス頻度が減り、Zabbixサーバーの負荷を軽減できます。

イメージとしては下図の通りです。

依存アイテムの説明

「AWS RDS instance by HTTP」テンプレートでは、依存アイテムに値を引き継ぐ用途のマスターアイテムにDBの容量を圧迫させないため、「保存前処理」機能を使用して取得した値を破棄しています。
そのためZabbixフロントエンドから「最新データ」を確認すると値を取得していないように見えます。

また冒頭でも記載しましたが、テンプレート内にRDSのリソースを監視するJavaScriptが用意されました。
今までは監視対象RDSが多ければ多いほど実行するスクリプトが増加し、プロセス起動負荷がものすごくかかっていましたが、Zabbixサーバープロセスであるpoller内のJavaScriptエンジンで実行されるようになったため、プロセス起動負荷の軽減に繋がっています。

AWSテンプレートの使用方法

ここからはZabbixならびにAWSの設定方法について説明します。

事前に準備するもの

  • Zabbix 6.0.13以降の環境
  • AWSアカウント
  • 監視対象のAmazon RDS

前回の記事でも説明しましたが、Zabbix 6.0.13より前の環境だとJavaScriptエンジンに値をハッシュ化するhmac関数が未実装のため、Zabbix 6.0.13以降の環境を使用する必要があります。

詳しくはこちらを確認ください。

本記事では、インターネット経由でRDS用エンドポイント(rds.<region>.amazonaws.com)とCloudWatch用エンドポイント(monitoring.<region>.amazonaws.com)へアクセスして監視することを想定しています。
そのためインターネットにアクセスできない環境の場合は、事前にVPCエンドポイントを用意する必要があります。

AWSの設定

まずはAWS側の設定をおこないます。RDSメトリクスを収集するために必要なIAMポリシーとIAMユーザーを作成します。

前回の記事でEC2監視用にIAMユーザーを作成している場合は、RDS用IAMロールを既存のIAMユーザーにアタッチすることで監視できますが、アクセスキーを利用する場合は最小限での実装がベストプラクティスとされています。
そのため本記事では、EC2メトリクスを収集できるIAMユーザーとは別にRDSメトリクスを収集できるIAMユーザーを新規作成します。

IAMポリシーの作成

AWSマネジメントコンソールにログインして、「IAM」を押下します。

AWS IAM画面遷移

画面が遷移した後に「ポリシー」を押下します。

AWS ポリシー選択

「ポリシーを作成」を押下します。

AWS ポリシー作成

ポリシーの作成画面が表示されるので「JSON」タブを選択します。

AWS JSON入力画面

JSONコードの入力画面が表示されます。

AWS JSONを記載

以下のJSONコードをコピーして、入力画面に貼り付けます。

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

入力画面に貼り付けたら「次のステップ:タグ」を押下します。

AWS 次のステップ:タグを選択

タグは必要に応じて設定してください。今回の記事ではタグを追加せず設定を進めます。

「次のステップ:確認」を押下します。

AWS 「次のステップ:確認」を選択

IAMポリシーの名前、説明を入力します。

AWS ポリシー名と説明を記載

下にスクロールして「ポリシーの作成」を押下します。

AWS 「ポリシーの作成」を押下

IAMポリシーの作成が成功した場合は、作成したIAMポリシーの名前が表示されます。

AWS 作成したポリシーの確認

IAMユーザーの新規作成

ここからは、IAMユーザーの新規作成手順を説明します。

サイドバーにある「ユーザー」を押下します。

AWS 「ユーザー」を選択

「ユーザーを追加」を押下します。

AWS 「ユーザーを追加」を押下

ユーザー名を記載して、「次へ」を押下します。

AWS ユーザー名を記載

アクセス許可の設定画面に遷移するため、「ポリシーを直接アタッチする」を選択します。

AWS 「ポリシーを直接アタッチする」を選択

先ほど作成したポリシーを選択して「次へ」を押下します。

AWS ポリシーを選択

必要に応じてタグの追加をおこないます。今回の記事ではタグを追加せず「ユーザーの作成」を押下しています。

AWS 「ユーザーの選択」を押下

「ユーザーが正常に作成されました」と表示されていれば、ユーザーの作成は完了です。

次にアクセスキーを作成するため、作成したユーザーを選択します。

AWS ユーザーの作成確認

「セキュリティ認証情報」タブを選択します。

AWS 「セキュリティ認証情報」を選択

下にスクロールして「アクセスキーを作成」を押下します。

AWS 「アクセスキーを選択」を押下

画面が遷移するので、下にスクロールして「サードパーティーサービス」を選択後、「上記のレコメンデーションを理解し、アクセスキーを作成します。」を選択し「次へ」を押下します。

推奨された代替案として、長期的な認証情報を作成するのではなく一時的なセキュリティ認証情報を使用するように記載されていますが、今回Zabbixは長期的に監視することを想定しているため、長期的な認証情報を作成します。

AWS 「サードパーティーサービス」を選択

必要に応じてタグの追加をおこない、「アクセスキーを作成」を押下します。

AWS 「説明タグ値」を記載

「アクセスキーが作成されました」と表示されていれば成功です。

「アクセスキー」と「シークレットアクセスキー」は後にZabbixの設定に使用するため、控えておいてください。このページを閉じてしまうと、「シークレットアクセスキー」の確認はできなくなります。

AWS アクセスキーを取得

下にスクロールし、「.csvのダウンロード」を選択することでファイルとして保存ができます。

csvファイルの保存ができたら「完了」を押下します。

AWS アクセスキーのcsvダウンロード

csvファイルの保存、または「シークレットアクセスキー」を控え忘れた場合は、再度アクセスキーを作成する必要があります。

RDSの確認

監視対象のインスタンスIDとリージョン情報が必要なため確認していきます。AWSマネジメントコンソールにログインして、「RDS」を押下します。

AWS RDS画面遷移

画面が遷移した後、サイドバーの「データベース」を押下します。

AWS 「データベース」を選択

監視したいRDSを選択します。

AWS 監視対象選択

「設定タブ」からDBインスタンスIDをコピーします。DBインスタンスIDは、後にZabbixの設定に使用するため控えておいてください。

AWS DBインスタンスIDの確認

次に監視するRDSが起動しているリージョンのコードを確認します。

AWS リージョン確認

今回の記事では、東京リージョンにRDSを構築しているため、リージョンコードである「ap-northeast-1」を控えておきます。

AWS リージョンコード確認

Zabbixの設定

続いてZabbixの設定をおこないます。Zabbixの設定では、監視したいAWS RDS用のホスト作成、RDS監視テンプレートを作成したホストにリンク、そしてテンプレートに含まれている設定をおこないます。

今回使用しているZabbixのバージョンは6.4となっています。6.0と6.2とは一部表示内容が異なりますので読み替えて実施してください。

まずホストを作成するため、メインメニューから【データ収集】→【ホスト】の順で押下します。

Zabbix 6.0,6.2をお使いの場合【設定】→【ホスト】の順で押下します。

Zabbix ダッシュボード画面

右上の「ホストの作成」を押下します

Zabbix ホストの作成

ホスト作成画面が表示されるため、以下内容を入力または選択します。

  • ホスト名:任意のホスト名を入力
  • テンプレート:「AWS RDS instance by HTTP」を選択
  • ホストグループ:任意のホストグループを選択

Zabbix 5.0までホストを作成する際は、インターフェース設定は必須項目でしたが、Zabbix 5.2からインターフェースの設定は未設定でもホストが作成できるようになりました。

Zabbix ホストの詳細設定

次にマクロの設定をおこないます。マクロとは指定した文字列(変数名)を指定した値に自動で置き換えてくれる機能です。

テンプレートに登録されているマクロを編集するためには「継承したマクロとホストマクロ」を選択します。

Zabbix 継承したマクロとホストマクロ確認

以下のマクロを設定するために、「変更」を選択して本記事内のAWSの設定で控えておいた値を記載します。

  • {$AWS.ACCESS.KEY.ID}:作成したAWSユーザーのアクセスキーID
  • {$AWS.PROXY}:HTTPプロキシを経由する際にプロキシを指定する ※本記事ではHTTPプロキシを使用していないため空白とする
  • {$AWS.RDS.INSTANCE.ID}:監視するRDSのインスタンスID
  • {$AWS.REGION}:監視するRDSが起動しているリージョンコード
  • {$AWS.SECRET.ACCESS.KEY}:作成したAWSユーザーのシークレットアクセスキー
Zabbix マクロの設定

マクロの値を入力後に、下にスクロールして「追加」を押下する。

Zabbix マクロ設定追加

ホストが作成されていることを確認する。

Zabbix ホスト作成確認

【監視データ】→【最新データ】から作成したホストを選択。

Zabbix 最新データの確認

最新データを確認して、値を取得できていたら成功です。

Zabbix 値の取得一覧

一部、値を取得できないアイテムが存在する恐れがあります。その場合は「?」を選択することでアイテムの説明が確認できます。

「?」からRDSテンプレートの監視アイテムを確認すると、クラスター構成でないと取得できないアイテムや、Engineによって取得できないアイテムがありました。
「?」から説明を確認して不必要なアイテムがあれば、ホスト設定からアイテムを無効化することで最新データに表示されなくなるため、無効化することをオススメします。

本記事内のAWS Amazon RDS監視テンプレートの説明で記載した通り、マスターアイテムは値を破棄しているため、最新の値は空白になります。マスターアイテムを無効化してしまうと、依存アイテムの値を取得できないためマスターアイテムは有効にしておいてください。

まとめ

AWSのAmazon RDS監視テンプレート使用方法について紹介しました。

他にもAWSのS3の監視がおこなえる「AWS S3 bucket by HTTP」テンプレートや、AWSのリソースをディスカバリ機能で自動登録してくれる「AWS by HTTP」テンプレートもあります。

AWS以外だと「Azure by HTTP」テンプレート、Zabbix 6.4以降だと「GCP by HTTP」とクラウドの監視テンプレートが追加されています。

今後クラウドサービスの監視テンプレートが多く追加されていくと思います。
すでにオンプレはZabbixで監視しているけど、クラウド対応が今ひとつ…と他の監視ソリューションを検討されているみなさま、ぜひエンハンスに注目しお試しください。

Zabbixをさらに有効活用しAWSやAzureなどクラウド環境も含めた統合監視を実現したい、テンプレート提供されていないクラウドリソースの監視を実装したいなど課題や要望を抱えているみなさま、ぜひ当社の「Zabbixサポートプラス」や「監視設定代行・支援」サービスをご検討ください。まずはお気軽にご相談を。

Zabbixの導入・構築でお困りですか?

Zabbixの導入・構築でお困りですか?アークシステムは、Zabbix Japan LLCの公式認定パートナーとして、豊富な実績と高い技術力でお客様をサポートします。

アークシステムが選ばれる理由

  • 豊富な経験: 多くのZabbix導入・構築プロジェクトを成功に導いた実績
  • 確かな技術力: Zabbix認定資格を持つエンジニアが対応
  • 独自のソリューション: 「監視定義テンプレート」を活用した迅速かつ高品質な実装
  • 最新情報へのアクセス: Zabbix社との強力なパートナーシップを活かした最新技術対応

こんな方に最適です

  • Zabbixの新規導入を検討している
  • 現行システムの運用に課題を感じている
  • 大規模環境での監視体制を整えたい

アークシステムでは、Zabbixの導入・運用に関する課題を解決し、最適な環境を構築します。どんなご相談でもお気軽にお問い合わせください!

  • Zabbix Enterprise Appliance
  • 低コスト・短納期で提供するまるごとおまかせZabbix