,/usr/local/mysql/bin/mysql --login-path=local -P$1 -e "show global status"| grep "\"| cut -f2
这里遇到一个坑要提前说一下,对于mysql5.6以上的版本来讲,直接使用mysql -uxxx -pxxx -e "show global status"等直接输入密码的命令会有警告:
Warning: Using a password on the command line interface can be insecure.
这条警告会直接导致zabbix服务器端不能识别mysql_stats
的值,解决方法是使用mysql自带的mysql_config_editor 工具:
mysql_config_editor set --login-path=local --host=127.0.0.1 --user=username --password 回车会提示输入密码 然后我们在脚本中就可以使用:
mysql --login-path=local -P$1 -e "statement" 代替
mysql -u username -p password -P$1 -e "statement" 这种填坑方法在实验环境可行,线上我试了一下,权限问题始终绕不过去,所以我最终采用了另外一种定义键值的办法:
UserParameter=zabbix_low_discovery
/usr/local/mysql/bin/mysql -uXXX -h127.0.0.1 -P$1 -N -e "show global status where Variable_name='$2'" |awk '{print $2}'
这种方式也可以屏蔽警告信息,让zabbix_server端可以获取正确的数据。
3.Mysql授权查询功能的账号
grant select on *.* to USERNAME@'127.0.0.1' identified by "PASSWORD";
flush privleges;
4.重启zabbix客户端
killall zabbix_agentd
/usr/local/zabbix/sbin/zabbix_agentd
5.测试
先测试脚本和命令: