zabbix監控mysql
阿新 • • 發佈:2020-08-06
環境
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