zabbix監控mysql的方式
只是安裝agent
啟用模板監控
啟用自定義腳本的模板監控
使用zabbix模版及結合shell腳本監控mysql
創建mysql的zabbix授權用戶
mysql> grant all PRIVILEGES on *.* to zabbix@'localhost' identified by 'zabbix';?
###創建一個有權限的訪問用戶lqb密碼設置zabbix
Query OK, 0 rows affected (0.04 sec)
?
mysql> flush privileges;
?
Query OK, 0 rows affected (0.01 sec)
flush privileges;Query OK, 0 rows affected (0.01 sec)
編寫腳本獲取mysql性能指標數據:
?
腳本權限:
?
-rwxr-xr-x. 1 root root 2695 Jun ?6 13:39 chk_mysql.sh
腳本權限:
-rwxr-xr-x. 1 root root 2695 Jun ?6 13:39 chk_mysql.sh
vim chk_mysql.sh
?
# 用戶名
#MYSQL_USER='zabbix'
?
# 密碼
#MYSQL_PWD='zabbix' #在腳本中輸入密碼mysql會提示安全告警信息#Warning: Using a password on the command line interface can be #insecure,需要將帳號密碼等配置添加到mysql配置文件my.cnf中即可,腳本中#不用輸入賬號密碼
?
# 主機地址/IP
MYSQL_HOST='127.0.0.1'
?
# 端口
MYSQL_PORT='3306'
?
# 數據連接
MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"
?
# 參數是否正確
if [ $# -ne "1" ];then
echo "arg error!"
fi
?
# 獲取數據
case $1 in
Uptime)
result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`
echo $result
;;
Com_update)
result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`
echo $result
;;
Slow_queries)
result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`
echo $result
;;
Com_select)
result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`
echo $result
;;
Com_rollback)
result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
echo $result
;;
Questions)
result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`
echo $result
;;
Com_insert)
result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`
echo $result
;;
Com_delete)
result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`
echo $result
;;
Com_commit)
result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`
echo $result
;;
Bytes_sent)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
echo $result
;;
Bytes_received)
result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
echo $result
;;
Com_begin)
result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`
echo $result
;;
?
*)
echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
;;
esac
以下幾個參數對Myisam 和Innodb 存儲引擎都計數:
1. Com_select 執行select 操作的次數,一次查詢只累加1;
2. Com_insert 執行insert 操作的次數,對于批量插入的insert 操作,只累加一次;
3. Com_update 執行update 操作的次數;
4. Com_delete 執行delete 操作的次數;
以下幾個參數是針對Innodb 存儲引擎計數的:
1. Innodb_rows_read select 查詢返回的行數;
2. Innodb_rows_inserted 執行Insert 操作插入的行數;
3. Innodb_rows_updated 執行update 操作更新的行數;
4. Innodb_rows_deleted 執行delete 操作刪除的行數;
通過以上幾個參數,可以很容易的了解當前數據庫的應用是以插入更新為主還是以查詢操作為主,以及各種類型的SQL 大致的執行比例是多少。對于更新操作的計數,是對執行次數的計數,不論提交還是回滾都會累加。對于事務型的應用,通過Com_commit 和Com_rollback 可以了解事務提交和回滾的情況,對于回滾操作非常頻繁的數據庫,可能應用編寫存在問題。
另外還有幾個參數可以了解數據庫的基本信息:
1. Connections 試圖連接Mysql 服務器的次數
2. Uptime 服務器工作時間
3. Slow_queries 慢查詢的次數
在腳本中輸入密碼mysql會提示安全告警信息使zabbix獲取不到正確數據,(Warning: Using a password on the command line interface can be insecure),需要將帳號密碼等配置添加到mysql配置文件my.cnf中即可,腳本中不用輸入賬號密碼,重啟mysql配置生效
vim /etc/my.cnf
[client]
user=zabbix
password=zabbix
[mysqladmin]
host=localhost
user=zabbix
password=zabbix
[client]user=zabbix
password=zabbix
[mysqladmin]
host=localhost
user=zabbix
password=zabbix
為zabbix_agent添加用戶參數
vim /usr/local/etc/zabbix_agentd.conf
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/opt/scripts/chk_mysql.sh $1
#UserParameter=mysql.ping,mysqladmin -P3306 -h127.0.0.1 ping | grep -c alive
UserParameter=mysql.ping,sudo netstat -ntpl |grep 3306|grep mysql|wc |awk '{print $1}'
修改/etc/sudoers( chmod +s /bin/netstat也可以,省去了修改/etc/sudoers的麻煩)
#注釋掉此行Defaults ? ?requiretty ??
#在最后加入如下行:
zabbix ALL=(ALL) ? NOPASSWD: ?/bin/netstat
重啟zabbix_agentd
<span style="color:#ff0000">killall zabbix_agentd
systemctl restart zabbix-agent</span>
在server端測試是否能獲取到數據
$ zabbix_get -s10.10.50.50 -k"mysql.status[Com_rollback]"
mysql主從狀態監控
寫一個腳本實現主從監控:
這個腳本主要用于獲取MYSQL主從同步信息;
我們先執行一個命令
mysql -u zabbix -e 'show slave status\G'
我們在輸出的信息中選擇
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
這兩項來監控,我測試了一下,當操作的數據出現異常的時候,Slave_SQL_Running就會變成No,當執行slave stop的時候,兩個都會變成No;
授權:
grant all PRIVILEGES on *.* to zabbix@'localhost' identified by 'zabbix';
?
flush privileges;
編寫主從監控腳本:?
vim mysql_master.sh
#!/bin/bash
mysql -uzabbix -e 'show slave status\G' |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
為agent添加用戶參數:
vim /usr/local/etc/zabbix_agentd.conf
?
UserParameter=system.mysql,/etc/zabbix/scripts/mysql_master.sh
重啟agent
systemctl restart zabbix-agent
連接模版:
<spanstyle="color:#33cc00">https://download.csdn.net/download/abel_dwh/10510113</span>