首页 后端开发 开源工具 浏览内容
Zabbix部署和监控Mysql排错
首先,先简单介绍下Zabbix,zabbix是一个高度集成的监控集成方案,而且配置部署简单,大部分配置都可以再web上完成。
下面我们直接进入主题,本次zabbix版本为3.2
第一个问题:
zabbix is not running the information displayed may not be current#zabbix没有运行,显示的不是当前信息
排错思路,先看看Zabbix是否启动;再检查端口是否正常
查看系统是否已经有zabbix进程正在运行 # ps aux |grep zabbix 查看系统是否已监听zabbix server和zabbix agent所使用的10050、10051端口 # netstat -nplut |grep zabbix
检查了上诉两项,发现均正常的情况下;再来看看日志
zabbix的日志默认存放位置在/tmp下,服务器端对应的日志是zabbix_server.log,监控端对应的日志是zabbix_agentd.log
发现有如下报错内容:
# tail -f /tmp/zabbix_server.log
11150:20170804:154458.092 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)11150:20170804:154458.092 database is down: reconnecting in 10 seconds11150:20170804:154508.093 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)
上面的报错信息是,数据库被拒绝,没有使用密码,因为默认的zabbix_server.conf的DBPassword是注释掉的
老版本的zabbix的配置文件一般是丢在/etc/zabbix/下的,新版zabbix的配置文件调用的是安装目录下面的
解决方法:
其它版本
/etc/zabbix/zabbix_server.conf 中的数据库配置项目 密码那项没有启用,去掉注释,填上密码再次启动即可.
3.2版本
/ usr/local/zabbix/etc/zabbix_server.conf 中的数据库配置项目,密码那项没有启用,去掉注释,填上密码再次启动即可.
PS:文中安装路径为我们的安装路径,请自行核对自己的安装路径;另,数据库配置去掉注释不仅仅是密码这一项
然后重启zabbix服务,刷新zabiix的web界面
# service zabbix_server restartOR# /etc/init.d/zabbix_server restart
第二个问题:
使用zabbix默认监控mysql模版,监控项目全部not supported或无数据
排错思路,检查配置和监控设置错误,查看监控端日志
重新仔细检查了一边监控设置,模版设置;均为正常,那么故障原因就只能是配置问题了
检查一边安装目录配置文件,发现并没有mysql监控所需的.my.cnf和userparameter_mysql.conf这两个配置文件
那么我们来配置并添加这两个文件
.my.conf内容:
[mysql]host=localhostuser=zabbixpassword=123456socket=/tmp/mysql.sock[mysqladmin]host=localhostuser=zabbixpassword=123456socket=/tmp/mysql.sock# 上面的各项信息请参考自己的情况设置,不要直接Copy过去
userparameter_mysql.conf内容:
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].# Key syntax is mysql.status[variable].UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix/ mysql -N | awk '{print $$2}'# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].# Key syntax is mysql.size[, ,
].# Database may be a database name or "all". Default is "all".# Table may be a table name or "all". Default is "all".# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".# Database is mandatory if a table is specified. Type may be specified always.# Returns value in bytes.# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single tableUserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix/ mysql -N'UserParameter=mysql.ping,HOME=/var/lib/zabbix/ mysqladmin ping | grep -c aliveUserParameter=mysql.version,mysql -V
上面的userparameter_mysql.conf文件为官方默认的,我们需要将文件里的HOME路径:/var/lib/zabbix/ 修改为.my.cnf存在的路径,如:/etc/zabbix/agentd/.my.cnf
PS:配置mysql监控前提,最好自己将mysql的全局变量和软链接配置好
文件都配置好了,我们重启agentd;重启完成后我们需要到web界面重启配置mysql监控才能正常和有数据
# service zabbix_agentd restartOR# /etc/init.d/zabbix_agentd restart
第三个问题:
Get value from agent failed: Cannot connect to [127.0.0.1:10050] [Connection refused]
译文:从代理获取值失败:无法连接到[127.0.0.1:10050] [拒绝连接]
排错思路,依次查看监控代理是否启动,端口是否正常,配置文件是否正常。
检查服务启动和端口监听情况:
查看系统是否已经有zabbix进程正在运行 # ps aux |grep zabbix 查看系统是否已监听zabbix server和zabbix agent所使用的10050、10051端口 # netstat -nplut |grep zabbix
检查端口是否开放,防火墙是否屏蔽等:
# 检测端口是否正常# telnet 127.0.0.1 10050OR# telnet IP 10050# 检查配置中的hotsname是否可以解析# ping hostname# 查看防火墙# iptables -L -nOR# less /etc/sysconfig/iptables# 开放端口# iptables -A INPUT -s 127.0.0.1 -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCEPT# iptables -A INPUT -s 127.0.0.1 -m state --state NEW -m udp -p udp --dport 10050:10051 -j ACCEPT# 上面两天是限制IP访问,下面两条是任意IP访问# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 10050:10051 -j ACCEPT# iptables -A INPUT -p udp -m state --state NEW -m udp --dport 10050:10051 -j ACCEPT# 保存# service iptables save# 重载或重启,应用新规则# service iptables restartOR# service iptables reload#重启方式不局限于这一个,不多描述
PS:hostname不可解析的情况下
1.修改hostname为IP地址,zabbix界面中的hostname和配置文件中的hostname要对应
2.在/etc/hosts中新增解析
127.0.0.1 hostname#hostname 为配置文件的hostname的值,127.0.0.1也可为其它IP
查看配置文件,发现agentd.conf里面的配置文件路径并没有启用
修改配置文件路径,去掉注释;重启agentd
# vim /etc/zabbix/zabbix_agentd.conf# 找到下面内容,取消其中一个的注释既可;具体情况请根据自己配置来# Include=/etc/zabbix/zabbix_agentd.userparams.conf# Include=/etc/zabbix/zabbix_agentd.conf.d/# Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf# 修改下面一项的值为1,默认为0;意思是启用自定义文件# UnsafeUserParameters=1
到这里,本次zabbix有关的三个问题和排错就记录完了;如有不同意见和不可用之处,欢迎及时提出以便于我们修正