修改zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=mysql.version,mysql -V
UserParameter=mysql.status[*],/usr/local/zabbix/share/zabbix/alertscripts/chk_mysql.sh $1
UserParameter=mysql.ping,mysqladmin ping | grep -c alive
设置mysql的链接
ln -s /data/mysql/bin/mysql /usr/bin
ln -s /data/mysql/bin/mysqladmin /usr/bin
在数据库中添加新账号mysqlcheck
GRANT USAGE ON . TO 'mysqlcheck'@'localhost' IDENTIFIED BY 'mysqlcheck';
FLUSH PRIVILEGES;
将mysql账号密码添加进my.cnf
[mysql]
host = localhost
user = mysqlcheck
password = mysqlcheck
socket = /var/run/mysqld/mysqld.sock
[mysqladmin]
host = localhost
user = mysqlcheck
password = mysqlchechk
socket = /var/run/mysqld/mysqld.sock
检测文件,
vi /usr/local/zabbix/share/zabbix/alertscripts/chk_mysql.sh
!/bin/bash
MYSQL_CONN="mysqladmin"
if [ $# -ne "1" ];then
echo "arg error!"
fi
case {MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"echo $result ;; Com_update) result=
result
;;
Slow_queries)
result=${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"
echo {MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3echo $result ;; Com_rollback) result=
result
;;
Questions)
result=${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"
echo {MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3echo $result ;; Com_delete) result=
result
;;
Com_commit)
result=${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3
echo {MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3echo $result ;; Bytes_received) result=
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
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/chk_mysql.sh
重启zabbix_agentd
在zabbix页面添加模板链接
以下几个参数对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 可以了解事务提交和回滚的情况,对于回滚操作非常频繁的数据库,可能应用编写存在问题。
另外还有几个参数可以了解数据库的基本信息:
- Connections 试图连接Mysql 服务器的次数
- Uptime 服务器工作时间
- Slow_queries 慢查询的次数
参数介绍