zabbix队列堆积处理

zabbix队列堆积处理

前言

目前项目组正在做一个包含zabbix监控的项目,由于之前没有接触过zabbix这个工具,所以在工作期间遇到了很多zabbix相关的问题,通过zabbix api以及zabbix表结构的了解逐步解决了一些问题,在这分享一下一些问题的解决思路。

zabbix api

https://www.zabbix.com/documentation/3.4/zh/manual/api

问题

某次在凌晨数据库服务器出现了频繁的ORA-04031问题,导致zabbix server挂掉了,编写的守护进程重启zabbix server后,没过几分钟zabbix server还是挂掉了。在第二天,解决了数据库问题后,重启了zabbix server后,队列出现了堆积,由于其他系统需要及时的获取监控主机的最新数据,不能等待zabbix自己恢复。

解决思路

查看zabbix proxy节点上sender进程后每次上传数据条数
sender进程
发现sender进程每次上传至zabbix server的数据量很少(上图data sender进程是已经恢复后的),通过zabbix api了解到以下命令

增加所有进程的日志级别:

shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase

增加第二个 Poller 进程的日志级别:

shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2

增加 PID 为 1234 进程的日志级别:

shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234

降低 http poller 进程的日志级别:

shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"

调整sender日志级别
随后观察日志

在这里插入图片描述
在这里插入图片描述
发现sender进程与proxy节点上的proxy_history表以及ids表有关,通过了解这两个表的表结构

Zabbix 数据库表结构说明文档

https://blog.csdn.net/zhangxueleishamo/article/details/94400572

推测代理节点上传数据逻辑大致为:

  1. 代理获取其代理的主机的各监控项数据,存入proxy_history表中
  2. 按照ids表中nextId为起始每次查询1000条,查询结束后向zabbix server节点上传数据
  3. 上传完成后,更新ids表中proxy_history对应的nextId更新为proxy_history中主键最大值+1
  4. 等待下次上传。

于是得出解决办法:
可更改ids表中proxy_history对应的nextId值,拉小他与proxy_history中主键最大值的差距,即可缓解队列问题(缺点:会导致部分数据断图,历史数据缺失)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值