1

最近在处理zabbix 监控mysql的时候碰到一些问题,现做记录;
默认的脚本里面没有用户名密码信息,如果设置了root不允许使用空密码本地登录时会出错,就接受不到数据;
具体可以在zabbix server或proxy用agent_get测试一下

zabbix_get -s mysql_server -k mysql.ping
如果返回0,但是mysql服务是正常启动的则是有问题的

获取不到数据还有可能是在mysql5.6版本后,直接用命令行中携带密码是会有警告

clipboard.png
解决办法是在原命令后面加入

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管理端设置参数

clipboard.png

注意事项:
配置的mysql用户名权限是否允许
zabbix_agent.conf是否已配置脚本目录


soft_xiang
38 声望5 粉丝