2014年1月31日金曜日

ニフティクラウド RDBをzabbixで監視する方法

■概要
ニフティクラウドRDBにはモニタリングの機能がありコントールパネル上からCPU使用率やDBのコネクション数を確認することができます
ただ、グラフで閲覧できるだけで閾値を設定してアラートを上げたりすることはできません
また監視データも過去1週間しか確認できないため過去のデータに遡ることが限定されてしまいます
ニフティクラウドRDBでは3306ポートと通信できるだけなのでこのポートを使用してzabbixで監視をしてみたいと思います

■環境
CentOS 5.10 (64bit)
Zabbix 2.2.1
MySQL 5.5.32 (ニフティクラウドRDB)

■設定手順
以下の手順はすべてzabbixサーバ側で実施します
当たり前ですが、ニフティクラウドRDB側のサーバにsshログインして何かするといことはありません(できません)

1. 監視スクリプトの作成
emacs /etc/zabbix/externalscripts/mysql_watch_scrpt.sh
Zabbix 2.2.1 では外部スクリプトは上記のパスにファイルを作成すると自動で読み込んでくれるようです
※すいません、スクリプトは参考サイトさんのものをそのまま利用させていただきました
#!/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}'
chown zabbix:zabbix /etc/zabbix/externalscripts/mysql_watch_scrpt.sh
chmod 755 /etc/zabbix/externalscripts/mysql_watch_scrpt.sh
zabbixユーザが実行できるように権限を付与します

sh /etc/zabbix/externalscripts/mysql_watch_scrpt.sh [username] [password] [ニフティクラウドRDBで提供されているIPアドレス] [mysqladminで取得できる項目名]
実行して問題なく値が取得できることを確認します
存在しない項目名を入力すると空文字が返ってきます

2. zabbix_server.conf設定(確認)
emacs /etc/zabbix/zabbix_server.conf
ExternalScripts=/etc/zabbix/externalscripts
上記の設定が記載されていることを確認します

3. ニフティクラウドRDBサーバのホスト追加
設定 -> ホスト -> ホストの作成からニフティクラウドRDBのサーバを追加します
IPアドレスにニフティクラウドRDBで提供されたIPアドレスを入力します(プライベート側のIPで大丈夫です)
ホストグループやホスト名は適宜変更してください

マクロのタグから以下のとおりマクロを設定します
  • {$RDB.IP}・・・ニフティクラウドRDBで提供されたIPアドレス
  • {$RDB.USERNAME}・・・mysqlに接続するためのユーザ名
  • {$RDB.PASSWORD}・・・上記ユーザのパスワード
※マクロ名も適宜変更して問題ございません

4. アイテム追加
設定 -> ホスト -> [追加したホスト名のアイテム] -> アイテムの作成でホストにアイテムを追加します
ホストにテンプレートを紐付けてテンプレートに対してアイテムを追加しても問題ございません
以下のように設定します

ポイントは
  • タイプ:外部チェック
  • キー:mysql_watch_scrpt.sh[{$RDB.USERNAME},{$RDB.PASSWORD},{$RDB.IP},"Open_files"]
を設定できていれば問題ないです
仕組みとしては作成したスクリプトの引数にマクロで設定した値を渡すことでスクリプトを実行し取得します
更新間隔やヒストリ、トレンドの値はデフォルの値を使用しておりますので適宜変更してください
また、キーの最後の"Open_files"の部分を変更することが他の項目を監視することができます(今回は例としてOpen_filesを入れております)

5. トリガー追加
設定 -> ホスト -> [追加したホスト名のトリガー] -> トリガーの作成でホストにトリガーを追加します
こちらもアイテム同様テンプレートが紐付いているならばテンプレートに追加しても問題ございません
今回は以下のように設定しました

必ずアラートが上がるように閾値は1を設定しています

6. 動作確認
設定が完了したらデータが取得できているか確認します
監視データ -> 概要 -> タイプ:データ を選択し作成したアイテムの項目が取得できている確認します
値が取得できていない場合は権限が付与できているかやアイテムの指定にスペルミスがないか等確認してください
それでもダメな場合はzabbix_server.confでDebugLevel=2に設定しエラーの内容を出力してどんなエラーになっているか確認してトラブルシュートしてください

mysqladminコマンドを使用して監視できる項目を監視することができました
が、これではサーバ自体のリソースCPUやメモリ使用量を監視することができないのでなんとかその辺も監視することができないか模索してみたいと思います
(というかそもそもそういうのを運用、監視しなくていいためにiPaaSという分野が生まれたような。。。相反することを実はやっている。。。)

■参考サイト

0 件のコメント:

コメントを投稿