Zabbix 常见问题整理
前言
根据安装和使用 Zabbix 中遇到的常见报错提示,结合 Zabbix 官网和 Google 到的一些解决方案,简单做下分享
Zabbix 常见问题整理
更新历史
2019 年 07 月 11 日 - 增加[Z3005] query failed: [1062] Duplicate entry 错误解决方案
2019 年 03 月 05 日 - 完善内容
2018 年 11 月 02 日 - 初稿
阅读原文 - https://liaojiaxin158.github.io/post/zabbix-faq/
扩展阅读
Zabbix - https://www.zabbix.com/
官方文档
Frequently asked questions / Troubleshooting
https://www.zabbix.org/wiki/Troubleshooting
https://www.zabbix.com/documentation/current/manual/appendix/faq
FAQ
常见错误建议先查看 log,常见的问题通常由权限,防火墙,数据库,参数错误,性能瓶颈等问题导致
zabbix_get [7189]: Check access restrictions in Zabbix agent configuration
zabbix 的服务器端与客户端连接的主要工具就是 zabbix 里 bin 文件夹下的 zabbix_get 文件,这个命令只能在 zabbix 的 server 端使用
Assuming that agent dropped connection because of access permissions(由于访问权限导致 agent 连接失败)
问题实现:zabbix_server 和 zabbix_agent 在同一台机器,server 监听全网地址,agent 监听内网地址。导致上面的报错发生
解决方案:把 zabbix_agentd.conf 中 的 server 把 zabbix_server 的公网和内网地址都加行。然后 agent 就可以正常获取到值了1
2
3
4zabbix_get -s 127.0.0.1 -p 10050 -k system.hostname
Check access restrictions in Zabbix agent configuration
# 如果 zabbix-agent 报以下错误需要检查 agent 和 server 的版本是否匹配
Message from xx.xx.xx.xx is missing header. Message ignored.
解决 zabbix 中文乱码问题
方法一:下载文泉驿字体
yum -y install wqy-microhei-fonts
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
方法二:从 Windows 中拷贝
cd /usr/share/zabbix/fonts
从 windows 拷贝 simhei.ttf 字体到当前目录
替换配置文件
vim /usr/share/zabbix/include/defines.inc.php
define(‘ZBX_GRAPH_FONT_NAME’, ‘simhei’)
Zabbix 报 No route to host
原来是被客户端的防火墙档掉了,关闭客户端防火墙或者配置相应规则即可
No active checks on server: host [] not found
查看监控机上的 / tmp/zabbix_server.log,显示日志:
cannot send list of active checks to [192.168.0.1]: host [Zabbix server] not found
查看被监控机上的 / tmp/zabbix_agentd.log,显示日志:
No active checks on server: host [Zabbix server] not found
这是因为通过 zabbix dashboard 页面配置的被监控主机名跟被监控主机上 zabbix_agentd.conf 中配置的 Hostname 不一致。修改为一致的名字后,重启 zabbix_agentd 即可。
Zabbix alerter processes more than 75% busy
zabbix 服务器邮件进程繁忙导致的,一般是因为在设置动作的时候,间隔太短,在一些特殊情况下,产生大量告警,例如几万封邮件,服务器发邮件,邮件进程发挂了。
建议通过导流解决。改发邮件的脚本,将邮件的动作改为打印时间,如下,待邮件都释放完了,再改回来。
Zabbix discoverer processes more than 75% busy
配置了自动发现的任务。每个自动发现的任务都会在一定时间内占用一个自动发现的进程。而默认配置项为 1,所以报警
修改配置文件的 StartDiscoverers 选项
StartDiscoverers=10
Zabbix poller processes more than 75% busy
轮询的负载量高,网上大多数说法是增加启动的 StartPollers 进程数,个人建议分析自己的 items 监控项设置是否合理,templates 模板应用是否恰当。
调整 StartPollers 数量
StartPollers=500
StartPollersUnreachable=100
Zabbix housekeeper processes more than 75% busy
为了防止数据库持续增大,zabbix 有个自动删除历史数据的机制,就是 housekeeper,而 mysql 数据库删数据的时候,性能会降低,就会报这个错。建议禁用采取数据库分区表优化自动清理。
HousekeepingFrequency=0 #间隔时间
2816:20170725:174352.675 [file:dbconfig.c,line:652] zbx_mem_realloc(): out of memory (requested 162664 bytes)
2816:20170725:174352.675 [file:dbconfig.c,line:652] zbx_mem_realloc(): please increase CacheSize configuration parameter
提示内存溢出,需要调整 zabbix 服务器配置 zabbix_server.conf
CacheSize=8G
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 11 bytes)
zabbix 某些页面无法打开,查看 php 日志发现,当访问这个页面是,报错内存不足,不清楚是否内存泄露,最简单的方法是调大 php 进程的可用内存,memory_limit 默认值为 128M
grep ‘memory_limit’ /etc/httpd/conf.d/zabbix.conf
php_value memory_limit 512M
Too many processes on zabbix server
zabbix 服务器进程太多报警,默认超过 300 个进程就报警。感觉默认值太小了,zabbix 配置调优后,进程就 500 多个了,所以我把触发值改为 600.
Zabbix value cache working in low memory mode
zabbix 历史记录 cache 大小默认值较低,如果出现这个报错调高 ValueCacheSize 即可
查看日志发现 zabbix-server 取到了数据插入数据库的 event_recovery 表时失败。1
2
3
4
5
6[root@zabbix]# tailf zabbix_server.log
8807:20190711:192713.951 [Z3005] query failed: [1062] Duplicate entry '153816' for key 'PRIMARY' [insert into event_recovery (eventid,r_eventid,correlationid,c_eventid,userid) values (153816,16845596,null,null,null);
]
8809:20190711:192713.966 [Z3005] query failed: [1062] Duplicate entry '150935' for key 'PRIMARY' [insert into event_recovery (eventid,r_eventid,correlationid,c_eventid,userid) values (150935,16845597,null,null,null),(150880,16845598,null,null,null);
]
8809:20190711:192716.050 [Z3005] query failed: [1062] Duplicate entry '153757' for key 'PRIMARY' [insert into event_recovery (eventid,r_eventid,correlationid,c_eventid,userid) values (153757,16845599,null,null,null),(153758,16845600,null,null,null),(153713,16845601,null,null,null);
经查看表结构确定了该表只是记录了事件恢复的全部数据信息,与 user、correlation、events 表相关联。
所以备份 event_recovery 表并 truncate 删除重建 event_recovery1
2
3
4
5root@zabbix:~# mysqldump -zabbix -p'zabbix' zabbix event_recovery > event_recovery.sql
root@zabbix:~# mysql -uzabbix -p'zabbix'
mysql> use zabbix
mysql> truncate table event_recovery;
mysql> optimize table event_recovery;
zabbix_server.conf 中英文解释
1 | # This is a configuration file for Zabbix server daemon |