最初在出现这个问题时,是在触发器看到Utilization of poller data collector processes 超75%的报警。
然后调出图形与日志检查,图形显示在Y轴时间的每个整点时候,数据会突然中断大概在2分钟后数据会显示100%然后回落至正常数值。如下图:
然后,查询zabbix-server的日志
tail /var/log/zabbix/zabbix_server.log
发现日志中的报错时间与图形中丢失数据的时间相吻合,这样猜想是由于这几项自动发现活动造成的报错,于是到网页中模板里把这几项发现先停掉了。再观察二个小时后,发现在停掉这几项发现活动后,虽然日志不再报错了。但图形部分每个整点依然会出现Utilization of poller data collector processes 值到达100%的情况
于是,从网上找寻答案。了解到需要调节zabbix服务参数。
以下为引用:
“当 Zabbix 服务器的数据收集器进程(poller)的利用率达到 100% 时,这意味着数据收集器无法处理当前的负载。要解决这个问题,你可以考虑修改以下参数:
- 增加 poller 进程的数量:通过增加 poller 进程的数量,可以增加服务器的并发处理能力。你可以修改 zabbix_server.conf 配置文件中的 StartPollers 参数来增加 poller 进程的数量。将该值适当增大,例如从默认值 5 增加到 10 或更高,以提高数据收集器的并发处理能力。
- 调整 poller 进程的配置:在 zabbix_server.conf 文件中,你还可以调整 poller 进程的其他配置参数,以优化其性能。例如,你可以尝试修改 StartPollersUnreachable 参数,设置为较低的值,以减少对不可达主机的数据收集,从而减轻 poller 进程的负担。
- 提高硬件资源:如果你的服务器硬件资源有限,可以考虑提高硬件配置,以增加服务器的处理能力。例如,增加 CPU 核心数、内存容量或更快的磁盘存储等,以提高数据收集器的性能。
- 优化监控配置:检查你的监控配置,确保没有不必要或重复的监控项,以减少数据收集的工作量。审查触发器、自动发现规则和模板等,确保它们的设置是合理且最小化了不必要的数据收集。
- 考虑分布式架构:如果以上调整无法解决问题,你可以考虑使用 Zabbix 的分布式架构。将负载分散到多个 Zabbix 服务器节点上,每个节点负责处理一部分的数据收集任务。这样可以提高整个监控系统的扩展性和性能。
请注意,在修改 Zabbix 配置文件之前,确保你理解配置参数的含义和影响,并备份配置文件以防止意外情况发生。此外,对于任何更改,最好在生产环境之前进行测试和验证,以确保系统稳定性和可靠性。”
vim /etc/zabbix/zabbix_server.conf
StartPollers=10
Timeout=10
StartHTTPPollers=6
StartDiscoverers=50
UnavailableDelay=360
StartHTTPPollers=6
经过测试以上参数调整,最终在 StartPollers=25 解决问题。