「Template App MySQL」を使った Zabbix2.2系でのMySQL監視の導入方法を記載しています。
今回のバージョンは以下になります。
- Zabbixサーバ: 2.2.2
- Zabbixエージェント: 2.2.7
- 監視対象MySQL: 5.5.40 MySQL Community Server (GPL)
Template App MySQL
Zabbix側でのMySQL監視として今回は「Template App MySQL」を監視対象ホストに適用します。このテンプレートには、以下のアイテムが含まれています。
MySQL begin operations per second mysql.status[Com_begin] MySQL bytes received per second mysql.status[Bytes_received] MySQL bytes sent per second mysql.status[Bytes_sent] MySQL commit operations per second mysql.status[Com_commit] MySQL delete operations per second mysql.status[Com_delete] MySQL insert operations per second mysql.status[Com_insert] MySQL queries per second mysql.status[Questions] MySQL rollback operations per second mysql.status[Com_rollback] MySQL select operations per second mysql.status[Com_select] MySQL slow queries mysql.status[Slow_queries] MySQL update operations per second mysql.status[Com_update] MySQL uptime mysql.status[Uptime] MySQL status mysql.ping MySQL version mysql.version
mysql.status[*]では、結構細かい値を取得します。MySQLの生死状況を見たい場合は「mysql.ping」が分かり易いかと思います。また、別途プロセス監視やテキストログ監視などを導入すると良いと思われます。
では、以降に手順を記載していきます。
1.Zabbix監視用アカウントの作成
MySQLをZabbixで監視する為に、MySQLにZabbix用アカウントを作成します。アカウント名は何でもよいですが、分かり易いように「zabbix」というアカウントを作成します。
$ mysql -u root -p mysql> grant process on *.* to 'zabbix'@'localhost' identified by 'hogehoge'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select host,user from mysql.user where user='zabbix'; +-----------+--------+ | host | user | +-----------+--------+ | localhost | zabbix | +-----------+--------+ 1 row in set (0.00 sec) mysql>
※パスワードは適切な文字列で設定してください。
次に、作成したアカウントを、Zabbixエージェントが利用できるように「–defaults-extra-file」で指定するファイルに記載します。このファイルは新規作成で良く、ファイル名は任意で良いみたいですが、MySQLの設定ファイルだと分かり易いように以下では「my.cnf」という名称にしておきます。
$ sudo mkdir /etc/zabbix/mysql $ sudo vi /etc/zabbix/mysql/my.cnf
my.cnf の内容は以下になります。
[client] user = zabbix password = hogehoge
※パスワードは適切な文字列で設定してください。
–defaults-extra-file が使える状態である事を確認する為、mysqladmin コマンドで利用してみます。以下、1回目は個別でパスワードを打ち込むパターン、2回目は–defaults-extra-fileを指定するパターンです。
$ mysqladmin -u root -p ping Enter password: mysqld is alive $ mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf ping mysqld is alive $
問題なく–defaults-extra-file が使える状態である事が確認できました。(パスワードを打ち込まなくてもコマンド実行結果を得る事ができました。)
2.userparameter_mysql.conf の設定
引き続き、Zabbixエージェント側の設定となります。
Zabbixエージェントのインストール時にデフォルト配置されている「/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf」に一部設定を追加修正します。
以下の2行が修正対象です。
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}' UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
この2行に「–defaults-extra-file=/etc/zabbix/mysql/my.cnf」をそれぞれ追記します。
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql --defaults-extra-file=/etc/zabbix/mysql/my.cnf -N | awk '{print $$2}' UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf ping | grep -c alive
- keyが mysql.status[*]とmysql.pingはアカウント情報が必要なので、–defaults-extra-fileを設定しています。
- keyが mysql.version はアカウント情報は不要なので、–defaults-extra-file は設定していません。
設定後は、Zabbixエージェントを再起動してください。
$ sudo /etc/init.d/zabbix-agent status zabbix_agentd (pid 17628 17627 17626 17625 17624 17623) is running... $ sudo /etc/init.d/zabbix-agent restart Shutting down Zabbix agent: [ OK ] Starting Zabbix agent: [ OK ] $ sudo /etc/init.d/zabbix-agent status zabbix_agentd (pid 19409 19408 19407 19406 19405 19404) is running... $
Zabbixエージェント側での設定作業は以上です。
3.Template App MySQL を適用
まず、Zabbixサーバ側からzabbix_get コマンドを実行して値が取得できるか、アイテムをピックアップして確認してみます。
※以下、「xxx.xxx.xxx.xxx」はZabbixエージェント導入ホストに置き換えてください。
$ zabbix_get -s xxx.xxx.xxx.xxx -k mysql.ping 1 $ zabbix_get -s xxx.xxx.xxx.xxx -k mysql.status[Uptime] 3079579 $ zabbix_get -s xxx.xxx.xxx.xxx -k mysql.status[Questions] 320812 $
無事、値が取れているようです。
最後に、Zabbixサーバ側(WebUI)で「Template App MySQL」を監視対象ノードに適用します。そうすると、MySQLの値が取得できるようになります。
なお、値取得の状況は、ZabbixのWeb画面「監視データ」-「最新データ」画面で確認できます。