Zabbix MySQL監視設定

Zabbix 5.2.5で、MySQLの状態を確認するときの覚え書きです。

Zabbixには、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」が、余計な処理でした・・・

 

タイトルとURLをコピーしました