Zabbix 5.2.5で、MySQLの状態を確認するときの覚え書きです。
Zabbixには、MySQL用のテンプレートが入ってて、比較的簡単に(自動的に)設定することができます。
ZabbixAgent2 用 MySQL監視
ZabbixAgent2 では、 従来のバージョン ↑この設定ではエラーになります。 新しく、ZabbixAgent2用の設定が必要です。 従来よりも簡単に設定ができます。 グラフのデータも引き継がれます。 ↑ 上記の、ZabbixAgen...
↑ 最新版、「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」が、余計な処理でした・・・