Zabbix2.0でRDSを監視する〜外部スクリプト〜

あちぃぃすね。
いま福岡でブログ書いてます。
部屋の温度は30℃、あついよー。

そもそも今回なんでRDSをZabbixで監視しようと思ったかといいますと
・Cloud Watchだと監視値を2週間しか保存できない
・Zabbixで一元管理したい

というわけで早速ですが、Zaabbix2.0でRDSを監視してみましょう!
RDSの監視はAWSが提供しているCloud Watchというものがありますのでそちらを使って監視を行うこともできます。
Amazon CloudWatch(リソースとアプリケーションの監視と管理)| AWS

今回はZabbixの「外部スクリプト」を利用して、監視してみましょう!
外部スクリプトとは名前通り、外部チェック用スクリプトを使用して監視を行うことです。
まずはZabbixに外部チェック用のスクリプトを設置しましょう!

スクリプト設置場所

スクリプトを設置する際に気をつけないといけないことは
zabbix_server.confに設置するpathが記載されているので、指定されたpathにスクリプトを設置してください。
vim /etc/zabbix/zabbix_server.conf


ExternalScripts=/usr/lib/zabbix/externalscripts
今回は上記pathにスクリプトを設置します。
下記のような適当スクリプトを設置します。
vim /usr/lib/zabbix/externalscripts/rds-status.sh

#!/bin/sh

USER=$1
PASS=$2
HOST=$3
KEY=$4

mysqladmin -u $USER -p$PASS -h $HOST extended-status | awk '{if($2 == "'$KEY'") print $4}'

作成されたスクリプトにchmodでzabbixが実行できる権限を付与してください。

Zabbixでの設定

監視するRDSを登録しましょう!

すごく見難くて申し訳ないです。
設定する際に気をつけることは
DNS名をRDSのEndpointを指定してください。
・接続方法をDNSを指定してください。

続いて上記「マクロ」タブを選択してください。
Zabbixからスクリプトを実行する際にしている引数の値をマクロに登録しましょう。
今回は

{$RDS.HOST}=RDSのEndpoint
{$RDS.PASS}=RDSに接続する際のパスワード
{$RDS.USER}=RDSに接続する際のユーザ

をマクロで登録しています。

いよいよ監視項目を登録します。

大事な部分は
・タイプを外部チェックを選択してください。

キーの設定は下記の用に設定しています。
rds-status.sh[{$RDS.USER},{$RDS.PASS},{HOST.CONN},"Slow_queries"]

RDS.USER、RDS.PASSはマクロで登録した値が読み込まれます。
HOST.CONNは、監視項目で設定したHOSTの値が読み込まれます。今回の場合は、RDS.HOSTでも大丈夫です!
最後の値は、extended-status で取得したい値をKeyに渡しています。extended-statusで取得したい項目を記載してください。

実際取得できているか確認してみましょう!

とこんな感じで取得できます!
あとはテンプレート化して割り当てるとより便利に監視できます!
CloudWatchのAPI等でもっといろんな情報も取得できると思いますので興味がある方はぜひ!