最近在处理zabbix 监控mysql的时候碰到一些问题,现做记录;
默认的脚本里面没有用户名密码信息,如果设置了root不允许使用空密码本地登录时会出错,就接受不到数据;
具体可以在zabbix server或proxy用agent_get测试一下
zabbix_get -s mysql_server -k mysql.ping
如果返回0,但是mysql服务是正常启动的则是有问题的
获取不到数据还有可能是在mysql5.6版本后,直接用命令行中携带密码是会有警告
解决办法是在原命令后面加入
2>/dev/null
下面提供sh脚本和config
check_mysql.sh
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: check_mysql.sh
# Revision: 1.0
# Date: 2019-3-21
# Author: xsj
# Email: soft_xiang@qq.com
# Description:
# Notes: ~
# -------------------------------------------------------------------------------
# Copyright: 2019 (c) xsj
# License: GPL
# 用户名
MYSQL_USER='root'
# 密码
MYSQL_PWD='xxx'
# 主机地址/IP
MYSQL_HOST='127.0.0.1'
# 端口
MYSQL_PORT='3306'
MYSQL_PATH='/usr/local/gwall/mysql/bin/mysql'
MYSQLADMIN_PATH='/usr/local/gwall/mysql/bin/mysqladmin'
# 数据连接
MYSQL_CONN="${MYSQL_PATH} -u${MYSQL_USER} -h${MYSQL_HOST} -P${MYSQL_PORT}"
MYSQLADMIN_CONN="${MYSQLADMIN_PATH} -u${MYSQL_USER} -h${MYSQL_HOST} -P${MYSQL_PORT}"
# 参数是否正确
if [ $# -ne "1" ];then
echo "arg error!"
fi
# variables 对应的key类似 mysql.status[Var_max_connections]
# status 对应的key类似 mysql.status[Uptime]
case $1 in
Var_*)
$MYSQL_CONN -e "show global variables" 2>/dev/null | awk '$1 ~ /'"${1#*Var_}"'$/ {print $2}' ;;
Version)
$MYSQLADMIN_PATH -V | awk -F '[ ,]' '{print $6}' ;;
Ping)
$MYSQLADMIN_CONN ping 2>/dev/null | wc -l ;;
Status_*)
$MYSQL_CONN -e "show global status" 2>/dev/null | awk '$1 ~ /'"${1#*Status_}"'$/ {print $2}' ;;
*)
echo "Usage:$0(Status_Uptime|Var_max_connections);其中 Status_ 后支持所有GLOBAL STATUS中的key;Var_ 后支持所有GLOBAL variables中的key。" ;;
esac
status_mysql.conf
# 获取mysql版本
UserParameter=mysql.version,/etc/zabbix/shell/check_mysql.sh Version
# 获取mysql GLOBAL STATUS中性能指标,这个是上面定义好的脚本
UserParameter=mysql.status[*],/etc/zabbix/shell/check_mysql.sh 'Status_'$1
# 获取mysql GLOBAL variables中的参数
UserParameter=mysql.var[*],/etc/zabbix/shell/check_mysql.sh 'Var_'$1
# 获取mysql运行状态
UserParameter=mysql.ping,/etc/zabbix/shell/check_mysql.sh Ping
zabbix web管理端设置参数
注意事项:
配置的mysql用户名权限是否允许
zabbix_agent.conf是否已配置脚本目录
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。