Zabbix 5.2.5で、MySQLの状態を確認するときの覚え書きです。
Zabbixには、MySQL用のテンプレートが入ってて、比較的簡単に(自動的に)設定することができます。

ZabbixAgent2 用 MySQL監視
ZabbixAgent2 では、従来のバージョン↑この設定ではエラーになります。新しく、ZabbixAgent2用の設定が必要です。従来よりも簡単に設定ができます。グラフのデータも引き継がれます。↑ 上記の、ZabbixAgent2が完了し...
↑ 最新版、「Zabbix Agent2」用のMySQL監視は上記へ
目次
モニター用アカウントの設定
MySQLに、監視用のアカウントを設定します。
mysql> CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '(パスワード)'; Query OK, 0 rows affected (0.01 sec) mysql> GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%'; Query OK, 0 rows affected (0.00 sec)
パスワードをサーバー上に保存(公式)
公式サイトに記述されている通りに行ってみます。
# cd /var/lib # mkdir zabbix # cd zabbix/
# vi .my.cnf [client] user='zbx_monitor' password='(パスワード)'
↑「.my.cnf」というファイルに、モニター用(監視用)のユーザとパスワードを設定します。
Mysql監視のための、Zabbix Agent用ファイルを用意
以下は、Zabbix 5.2.5 の、ソースインストール時のディレクトリ構成です。
# vi /usr/local/etc/zabbix_agentd.conf #Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf ↓ Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
# cp (インストールdir)/zabbix-5.2.5/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/etc/zabbix_agentd.conf.d/
# vi userparameter_mysql.conf
#template_db_mysql.conf created by Zabbix for "Template DB MySQL" and Zabbix 4.2
#For OS Linux: You need create .my.cnf in zabbix-agent home directory (/var/lib/zabbix by default)
#For OS Windows: You need add PATH to mysql and mysqladmin and create my.cnf in %WINDIR%\my.cnf,C:\my.cnf,BASEDIR\my.cnf https://dev.mysql.com/doc/refman/5.7/en/option-files.html
#The file must have three strings:
#[client]
#user=zbx_monitor
#password=<password>
#
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
↓
UserParameter=mysql.ping[*], HOME=/var/lib/zabbix mysqladmin ping
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
UserParameter=mysql.get_status_variables[*], HOME=/var/lib/zabbix mysql -sNX -e "show global status"
UserParameter=mysql.version[*], HOME=/var/lib/zabbix mysqladmin -s version
UserParameter=mysql.db.discovery[*], HOME=/var/lib/zabbix mysql -sN -e "show databases"
UserParameter=mysql.dbsize[*], HOME=/var/lib/zabbix mysql -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], HOME=/var/lib/zabbix mysql -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], HOME=/var/lib/zabbix mysql -sNX -e "show slave status"
↑「HOME=/var/lib/zabbix」と、「.my.cnf」を保存したディレクトリを指定します。
UserParameter=mysql.ping[*], mysqladmin --defaults-extra-file=/var/lib/zabbix/.my.cnf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -N | awk '{print $$2}'
UserParameter=mysql.get_status_variables[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin --defaults-extra-file=/var/lib/zabbix/.my.cnf -s version
UserParameter=mysql.db.discovery[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql --defaults-extra-file=/var/lib/zabbix/.my.cnf -sNX -e "show slave status"
↑と、「–defaults-extra-file」コマンドで、パスワードが書かれた「.my.cnf」ファイルを指定しても動作します。
# systemctl restart zabbix-agent
↑Zabbix Agentを再起動します。
Zabbix 5.2.5の画面上の設定

↑「設定」「ホスト」を選び、対象ホストを選びます。

↑「テンプレート」を選びます。

↑「mysql」と入力し、候補が出てくるので、「MySQL by Zabbix agent」を選びます。

↑「更新」をおします。

↑更新されました。

↑グラフが表示されるようになりました。
Mysql ping が正常に返ってこない場合・・・

↑どうしても、mysqldownとなってしまう・・・

↑対象サーバーのアイテムの「MySQL:Status」のところを開き「保存前処理」を選びます。

↑1番のjavascript のところが肝。
「is value」で正常となる。
# vi /usr/local/etc/zabbix_agentd.conf.d/userparameter_mysql.conf UserParameter=mysql.ping[*], mysqladmin --defaults-extra-file=/var/lib/zabbix/.my.cnf ping| grep -c alive ↓ UserParameter=mysql.ping[*], mysqladmin --defaults-extra-file=/var/lib/zabbix/.my.cnf ping
↑とする。
これで、テンプレートに合うようになる。
「grep -c alive」が、余計な処理でした・・・


