1. 程式人生 > 實用技巧 >zabbix監控mysql

zabbix監控mysql

環境

Centos 7

MariaDB 10.4

Zabbix 4.0

準備

zabbix-server所在機器通常安裝了zabbix_get,沒有就安裝下,方便除錯。

在mysql所在機器安裝好zabbix-agent,並連線上zabbix-server,這裡假設主機名是HOST_DB(直接用IP也可以)。

zabbix-agent自帶了mysql監控的配置:

shell> cat /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V

在zabbix-server所在機器上測試下:

shell> zabbix_get -s HOST_DB -k mysql.version
mysql Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using readline 5.1
shell> zabbix_get -s HOST_DB -k mysql.ping
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'zabbix'@'localhost''
0

可以看到,獲取鍵值mysql.version是成功的,因為它只是執行了命令mysql -V,而mysql.ping就不行了,因為它要連線到資料庫,而預設用的賬號zabbix@localhost是不存在的。

進入mysql,建立zabbix使用者(不需要密碼,預設的許可權就夠了):

MariaDB [(none)]> create user 'zabbix'@'localhost';
Query OK, 0 rows affected (0.004 sec)

MariaDB [(none)]> show grants for 'zabbix'@'localhost';
+--------------------------------------------+
| Grants for zabbix@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO 'zabbix'@'localhost' |
+--------------------------------------------+
1 row in set (0.000 sec)

然後在zabbix-server機器重新測試:

shell> zabbix_get -s HOST_DB -k mysql.ping
1
shell> zabbix_get -s HOST_DB -k mysql.status[Questions]
25296056

測試通過

配置監控

zabbix-server自帶了mysql監控模板Template DB MySQL,在管理後臺建立一個主機,關聯這個模板即可:

稍等幾分鐘,就可以在最新資料中看到結果:

檢視整合好的圖形,更加方便直觀:

特別說明

大家都知道mysql的引數Questions、Com_select、Com_update等是持續增長的,前面通過zabbix_get獲取的值也確實是原值;

但在zabbix-server中統計出來的卻是每秒變化的值,原因是監控項的這個設定:

over