先日の記事「zabbix_get コマンドで MySQLの稼働状況を確認する簡易試験」では、userparameter_mysql.conf にMySQLへアクセスするアカウントとパスワードを直接記載していました。それはちょっとよろしくないという事で、別の手法で設定しましたので記載しておきます。
1.MySQLにZabbix用アカウントを作成
MySQLをZabbixで監視を行う為、MySQLにZabbixアカウントを作成します。
mysql> grant process on *.* to 'zabbix'@'localhost' identified by 'some_password'; 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>
※パスワードは適切な文字列で設定します。
2.MySQLのdefaults-extra-file を作成します。
MySQLのdefault-extra-fileを作成します。ここで作成したファイルはこの後の設定で利用します。(userparameter_mysql.conf でコールしているmysqladmin コマンドで –defaults-extra-file オプションを指定します。)
内容は、先ほど作成したMySQLのzabbixアカウント情報を記載します。ファイル名は任意で良いみたいですが、MySQLの設定ファイルだと分かりやすいように my.cnf にしておきます。
# mkdir /etc/zabbix/mysql # vi /etc/zabbix/mysql/my.cnf
my.cnf の内容は以下です。
[client] user = zabbix password = some_password
※パスワードは適切な文字列で設定します。
3.userparameter_mysql.conf の設定
userparameter_mysql.conf で、mysqladmin コマンドに「–defaults-extra-file=/etc/zabbix/mysql/my.cnf」を付与設定します。
UserParameter=mysql.ping,HOME=/var/lib/zabbix /usr/bin/mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf ping | grep alive | wc -l UserParameter=mysql.uptime,HOME=/var/lib/zabbix mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf status | cut -f2 -d":" | cut -f1 -d"T" UserParameter=mysql.threads,HOME=/var/lib/zabbix mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf status | cut -f3 -d":" | cut -f1 -d"Q" UserParameter=mysql.questions,HOME=/var/lib/zabbix mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf status | cut -f4 -d":" | cut -f1 -d"S" UserParameter=mysql.slowqueries,HOME=/var/lib/zabbix mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf status | cut -f5 -d":" | cut -f1 -d"O" UserParameter=mysql.qps,HOME=/var/lib/zabbix mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf status | cut -f9 -d":" UserParameter=mysql.version,mysql -V
以上で、userparameter_mysql.conf の設定は終了です。
4.zabbix_agentd を再起動
Zabbix設定ファイルを編集したので、Zabbixエージェントを再起動します。
# /etc/init.d/zabbix-agent status zabbix_agentd (pid 7269 7268 7267 7266 7265 7263) is running... # /etc/init.d/zabbix-agent restart Shutting down zabbix agent: [ OK ] Starting zabbix agent: [ OK ] # /etc/init.d/zabbix-agent status zabbix_agentd (pid 7989 7988 7987 7986 7985 7983) is running... #
以上で設定は完了です。
5.zabbix_get コマンドで値が取得できる事を確認
まず、分かりやすいように、mysqladmin コマンドの実行結果と、zabbix_get コマンドの実行結果を実行してみます。
# /usr/bin/mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf ping mysqld is alive # /usr/bin/mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf ping | grep alive mysqld is alive # /usr/bin/mysqladmin --defaults-extra-file=/etc/zabbix/mysql/my.cnf ping | grep alive | wc -l 1 # zabbix_get -s 127.0.0.1 -k mysql.ping 1 #
同じ値が取得できているので、ちゃんと設定されています。
次に、userparameter_mysql.conf で設定した内容全てで、zabbix_get コマンドを実行し、MySQLの値が取得できる事を確認します。
# zabbix_get -s 127.0.0.1 -k mysql.ping 1 # zabbix_get -s 127.0.0.1 -k mysql.uptime 4060109 # zabbix_get -s 127.0.0.1 -k mysql.threads 1 # zabbix_get -s 127.0.0.1 -k mysql.questions 15900502 # zabbix_get -s 127.0.0.1 -k mysql.slowqueries 0 # zabbix_get -s 127.0.0.1 -k mysql.qps 3.916 # zabbix_get -s 127.0.0.1 -k mysql.version mysql Ver 14.14 Distrib 5.5.23, for Linux (x86_64) using readline 5.1 #
すべての設定値がちゃんと機能しているようです。
なお、最後の mysql.version はアカウント情報は不要なので、defaults-extra-file は設定していません。
以上、ZabbixでMySQL監視を行う際の下準備にあたる、userparameter_mysql.conf や、その他必要な設定の内容となります。