Pocket

Zabbix 2.2系 で MySQL監視(Template App MySQL)を導入する手順

  • add this entry to hatena bookmark

「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画面「監視データ」-「最新データ」画面で確認できます。

 

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。