Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >博文|如何对Zabbix Proxy高队列进行故障诊断

博文|如何对Zabbix Proxy高队列进行故障诊断

作者头像
Zabbix
发布于 2021-04-29 03:19:13
发布于 2021-04-29 03:19:13
1.6K00
代码可运行
举报
文章被收录于专栏:Zabbix中国官方Zabbix中国官方
运行总次数:0
代码可运行

感谢本文译者赵静—宏时数据技术工程师!

Zabbix proxy是整个Zabbix架构的主要组件。因此很多时候,当其中一个proxy出现故障,会对所有监控配置造成严重的后果,引起一连串事件与问题。

安装

安装(通过安装包安装)

  • Zabbix 5.01
  • CentOS 8
  • Zabbix Proxy与Zabbix Server在同一部设备上
  • Zabbix Server数据库和Zabbix Proxy数据库在MariaDB数据库引擎上
  • 有三个Zabbix Server Host(已复制)在配置>Hosts
  • ‘training proxy’—是主动(Active)模式的Proxy,没有加密,压缩状态开启—已添加在管理>Proxies

管理>队列中,队列数值在增加。但根据监控项的数量,没有接收到host上所有监控项的数据。

Queue overview 队列概况

在生产实例中,这会导致一些问题。这个情况下,所有没有数据的trigger 不能触发函数,造成许多问题。

为什么队列递增?

Zabbix Proxy正在监控 Zabbix agent,监控检查与类型可为被动或主动。主动检查意味着Agent连接Proxy以请求配置,这个配置包含信息说明应该收集什么数据,在host上获得数据并发送给proxy。Agent被动检查则与之相反。Proxy连接Agent,轮询收集的数值。Proxy可以以主动或被动的模式运行,两种都是相同的连接方式。

配置错误

如果Proxy出现问题,一定要查看proxy日志。这意味着可能需要SSH连接proxy server。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tail -f /var/log/zabbix/zabbix_proxy.log

‘无法发送proxy数据至server’消息滥发

在本地主机IP地址上出现无法发送proxy数据至server的消息,因为未找到“Training proxy”只会在一种情况下出现——当Zabbix proxy配置文件里的主机名称参数无法匹配 Zabbix前端对应的proxy名称。

当Training proxy正在运行,在前端,在管理 > Proxies,training proxy是小写字母。这导致proxy停止向server发送数据,并在日志中写下错误。

Different proxy name spelling不同的proxy名称拼写

所以我们需要修改proxy名称并点击“更新”。

Updating the proxy name 更新proxy名称

然后,为了节省时间,可以在Zabbix Server上强制重新加载配置缓存,执行如下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
zabbix_server -R config_cache_reload

还要检查proxy日志。你会发现消息已经停止滥发,Server默认每分钟自动更新其配置缓存。

管理 > 队列里,没有延迟的数值,所有数据都能正常被处理。

Proxy queue overview Proxy队列概况

所以,出现配置错误的情况下,你需要:

a) 检查proxy日志,多数情况足够解决问题 b) 遇到特殊情况,要检查server日志

Proxy连接不到Agent

如果proxy不能从agent处获取数据,并不是proxy-server通信或server自身出现问题。需要检查proxy和agent的日志文件,看看是否有问题信息提示。

首先,需检查proxy。最可能的情况,在日志中出现‘网络错误’、‘host不可用’、‘连接超时’、‘TCP连接问题’或其他类似错误信息。如果出现如下错误信息,如连接失败,无法连接agent 1,但其他正常运行,那么问题很可能与网络有关。可能是网络发生变化阻止proxy从agent处收集数据。可以用agent的IP从proxy上运行zabbix_get,尝试对其进行故障诊断,或简单测试连通性。

如果没有问题,agent需要日志报告返回正常。如果agent日志返回正常,但在前端仍看不到任何数据,那可能是出现别的问题。例如,proxy负责这种监控类型没有足够的进程。

Agent可能只是停止、死机或被删除,这种情况下,在运行 zabbix_get时能看到错误信息。

如果收到这个错误消息,表明proxy收不到数值,那么可能是在proxy与agent间的某处连接或agent自身出现问题。这种情况下,需要检查正在监控的host——agent是否运行,或监听端口,或是否有防火墙规则阻断proxy与agent的连接。可能只是agent配置上的Server=IP地址不同于Proxy的IP地址。

所以,如果proxy连接不到agent,需要:

a) 检查proxy日志 b) 检查agent日志 c) 隔离无法运行的agent。如果所有agent都无法运行,那就是网络的问题 d) 运用zabbix_getsnmpget (snmp problems) 测试proxy与host间的连通性

Proxy连接不到Server

当proxy连接不到server,在server日志里查看不到任何东西,因为连接中断,server将收不到任何数据。可以通过检查proxy日志,查看错误信息,例如‘无法连接到server’或‘无法发送proxy数据到server’。

如果proxy连接不到server,需要:

a) 检查proxy日志

Proxy发送数据不够快

如果proxy上出现队列,但有数据正在传输,表明proxy能够连接到server和agent,因为可以接收和发送数据,尽管也会出现延迟的情况。延迟表明proxy跟不上数据流,proxy上数据堆积的速度比发送的速度快。在最新数据处可以查看这个问题,图表中出现间断和点。

检查这个问题,可以在Zabbix proxy host上执行命令

ps ax | grep sender

只有一个进程——Zabbix proxy上的data sender,它不在server上,是负责发送数据到server的唯一进程。如果对sender到底做了什么感兴趣,可以反复执行上面的命令,相关日志的变化会告诉我们答案。

存在问题时,查看每秒发送多少数值是不够的。data sender的迭代需要几百秒甚至更多。这种情况下,可以通过数据库并运行查询语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select max(id)-(select nextid from ids where table_name + "proxy_history" limit l) from proxy_history;

这个查询会告诉我们proxy数据库上剩下多少数值还没发到Zabbix server。基本上,这是proxy上的backlog队列。

在上面的例子,一切运行正常,队列也没有堆积。

如果能观察到,data sender要花几百秒的时间发送数值给server,最可能出现的查询结果不会是零。多次运行查询会显示proxy上的backlog不断增加。

造成这些问题的原因很多,其中一个是Zabbix proxy与server之间的网络连接慢。这种情况下,通常ping值不足以反映网络状况的好坏。如果所有进程都不繁忙,但是data sender 难以发送数据,那可能需要咨询网络团队。可能是Zabbix server出现问题。data sender 是一个单进程,发送数据到server,但在server上,只有trapper负责接收数据。所以要确保server上有足够的trapper,且不是全部都处于繁忙状态。

所以,如果Proxy发送数据不够快,需要:

a) 检查data sender b) 检查proxy数据库上的队列 c) 检查网络连接速度

Proxy没有足够的进程

假设,有一个Zabbix server正常运行,Zabbix前端以及大部分环境都通过Zabbix server进行监控。

在管理 > Proxies里,看到Training proxy只添加了三个host。

这三个host正接收数据,没有丢失的队列和数据。假设,一个月内需要在proxy上部署网络发现或agent主动注册,并添加更多host进行监控。最终可能大约有30000个host,这时会出现问题:proxy上的间断或队列正在增加。

如果检查server日志,可能没发现什么错误——没有问题、没有查询慢。还可以在监控> Hosts查看,例如会显示‘内部进程繁忙’的图表。

那么问题可能在proxy上。因为添加了30000个新的host,proxy上的进程数量可能不足以让proxy处理当前数据。

proxy上的运行进程

部署了30000个host之后,之前的进程数量不够支撑当前设置。这个问题不会显示在server日志或server图表。这种情况下,需要监控proxy。在配置 > Hosts处创建一个host,添加到组别,指明这个host由proxy监控,还有proxy自身,点击添加

添加host

注意 用户通常指定agent接口为proxy的外部地址,这并不是完全正确的。

使用在配置 > 模板里的模板Template App Zabbix Proxy监控proxy。这个proxy有内部监控项,这个监控项不使用Zabbix agent接口指定的IP地址。

Proxy上的内部监控项

如果在 配置 > Hosts里,不配置这个host由proxy监控,那么在性能图表上还会看到数据,但是这些数据是来自Zabbix server,你可能会被监控 > Hosts里的图表、数据收集器进程和内部进程误导。所以,会看到来自server的数据,显示并不繁忙,但是proxy出现问题。这种情况下,你只需要增加更多进程,例如poller、trapper等。

如果Proxy没有足够的进程,需要确保正确监控proxy,并检查proxy的性能图表:

a) 数据收集进程繁忙 b) 内部进程繁忙,以及 c) 自由缓存的百分比

Server跟不上数据

如果数据通过proxy无缝地从agent开始传输,传输到server,那么在server上可能出现问题。可以在server日志上发现这个问题,可能会看到一些查询慢或超时。更重要的是,在监控 > Hosts的性能图表里也能看到相同的信息。

例如这里,需要检查‘数据收集进程繁忙’。

性能图表的‘数据收集进程繁忙’

更具体一点,我们所感兴趣的trapper,只是在主动模式的proxy上操作的trapper,正如这个例子提到的那样。

所以如果trapper完全繁忙,可能唯一需要做的是增加trapper的数量。

如果trapper繁忙,但在‘Zabbix内部进程繁忙%’的图表中,housekeeper和history sinker以及大部分图表都加载运行100%,在图表中有一些点和间断,这表明Zabbix server上有严重的性能问题。99%的情况下,这是因为数据库性能问题和Zabbix设置问题。

所以如果Server跟不上数据,需要:

a) 检查server日志 b) 检查server性能图表 c) 检查日志里的查询慢,如果在历史图表发现插入数据的查询慢,那就是数据库跟不上。

有太多未发送数值

有时,上述的任何一个问题都会导致proxy收集backlog,在问题修复之后队列不下降或下降很慢时。这种情况下,可以运行查询,检查proxy数据库上的backlog。、

例如,当看到百万个数值,proxy在某些时段停止运行,在数据库有巨大的backlog,队列仍在堆积。这种情况下,唯一能做到是降低backlog——删除所有储存在proxy数据库的数据,重新开始。虽然会丢失这个时间段里未发送的数据历史,但至少能重新回到监控。

需要:

1. 停止运行Zabbix proxy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop zabbix-proxy

2. 打开数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql

3. Tuncate两个图表——proxy历史查询和IDs

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
truncate proxy_history;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
truncate ids;

代码片段:可切换语言,无法单独设置文字格式

4. 退出数据库,打开Zabbix proxy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl start zabbix-prox

降低proxy backlog

5. 重启

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
zabbix_server -R config_cache_reload

6. 打开数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql

7. 使用Zabbix proxy

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use zabbix-proxy;

这样在查询中,看不到backlog了

Proxy backlog已下降

注意不要忘记truncate IDs图表。如果只truncate proxy历史图表,无法解决问题。

如果有太多未发送数值,且proxy队列正在堆积,则需要降低backlog。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
zabbix文件以及命令详解(二)
#可以看到启动用户是zabbix,然后左边是一堆的PID号,PID号后面是PPID号也就是父进程号都是统一的45404,然后最后边可以看到不同的进程标识,这些进程是干嘛的,可以跟下面的内容核对:
星哥玩云
2022/06/09
1.6K0
zabbix文件以及命令详解(二)
「民生银行专栏」Zabbix常见问题处理手册
由民生银行潜望者Zabbix开源监控项目项目组投稿,为社区分享他们整理的Zabbix源码解析、民生银行潜望者Zabbix运维管理平台、多Server架构实现、容器/数据库/中间件全自动注册监控等项目文档。
Zabbix
2021/01/29
1.7K0
「民生银行专栏」Zabbix常见问题处理手册
Zabbix配置文件详解之服务端zabbix_server
zabbix作为运维邻域不可缺少的一员,它的各种文档可是数不胜数啊,但是关于配置文件的解释与说明就有点少。这里列出zabbix配置文件篇之zabbix_server。 Zabbix Server端配置文件说明 # This is a configuration file for Zabbix Server process # To get more information about Zabbix, # visit http://www.zabbix.com ############ GENERAL PAR
程序员同行者
2018/06/22
1.5K0
centos7.x之yum安装zabbix_proxy以及自动注册
zabbix proxy就是所谓的分布式监控,主要是代理zabbix server进行采集数据,zabbix proxy端也需要搭建另外一个mysql数据库,并且mysql需要创建一个zabbix_proxy数据库.
江小白
2018/11/06
2.6K0
【Z投稿】Zabbix监控MySQL工具
最近学习使用go语言写了一个zabbix监控mysql数据库的小工具,有如下特点: 1.使用Zabbix Agent Trapper方式(主动发送采集数据到zabbix server,类似active模式)监控mysql数据库 2.支持对密码加密,避免配置文件里出现明文密码 3.支持SHOW /!50001 GLOBAL / STATUS和SHOW /!50001 GLOBAL / VARIABLES所有指标监控!!! 4.支持mysql主从监控 5.支持自定义采集周期
Zabbix
2021/02/03
1.9K2
zabbix基本概述
#zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 #官网地址 #官方网站 http://www.zabbix.com #zabbix4.2阅读手册 https://www.zabbix.com/documentation/4.2/manual/definitions #特点 1、安装与配置简单 2、支持多种语言,免费开源 3、自动发现服务器与网络设备分布式监控以及web集中管理功能 #端口 zabbix server :10051 zabbix
老油条IT记
2020/03/20
8290
zabbix-进阶-3
action动作:condition,operation(remote,command,send message)
py3study
2020/01/06
9460
zabbix-进阶-3
002.Zabbix简介
Zabbix是一个企业级的高度集成开源监控软件,提供分布式监控解决方案。可以用来监控设备、服务等可用性和性能。
木二
2019/07/26
1K0
【Zabbix】Zabbix 分布式监控—创建Proxy主机
zabbix镜像-zabbix下载地址-zabbix安装教程-阿里巴巴开源镜像站 (aliyun.com)
宝耶需努力
2022/12/13
5940
【Zabbix】Zabbix 分布式监控—创建Proxy主机
zabbix模块配置学习
(1) Windows Agent下载安装配置 Agent下载地址:https://www.zabbix.com/download_agents 选择我们对应的版本:4.2.1/Windows/amd64/OpenSSL https://www.zabbix.com/downloads/4.2.1/zabbix_agents-4.2.1-win-amd64-openssl.zip
全栈工程师修炼指南
2020/10/13
9600
演示视频|快速了解Zabbix 5.2 新特性和使用界面
大家好,很高兴你对Zabbix感兴趣。Zabbix是企业级开源监控工具,已经连续两年被誉为Gartner客户之选。本演示视频是为了帮助大家更好地了解Zabbix监控解决方案,让你对Zabbix核心特性和功能有整体认识。我们将向您介绍Zabbix使用界面以及监控的基本概念。希望你会有所收获。欢迎使用Zabbix来监控!
Zabbix
2021/02/03
1.1K0
zabbix模块配置学习
(1) Windows Agent下载安装配置 Agent下载地址:https://www.zabbix.com/download_agents 选择我们对应的版本:4.2.1/Windows/amd64/OpenSSL https://www.zabbix.com/downloads/4.2.1/zabbix_agents-4.2.1-win-amd64-openssl.zip
全栈工程师修炼指南
2022/09/28
4560
zabbix模块配置学习
Zabbix如何实现对大流量监控数据的高效处理?
大家好,我是鲍光亚,我分享的主题是Zabbix对大流量监控数据的高效处理。首先总结Zabbix监控数据的两个特点,再分析Zabbix如何利用监控数据的特点实现大流量监控数据的高效处理。
Zabbix
2021/09/29
1.4K0
什么是zabbix?
Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。
陈不成i
2021/07/22
3.4K0
原创投稿 | zabbix的理论知识
1.zabbix是什么 zabbix是一款基于web页面的、开源的、企业级的,可以分布式部署的监控软件。 2.zabbix的作用 监控windows和Linux主机上的软硬件状态。 监控各网络设备,如
小小科
2018/05/02
8590
原创投稿 | zabbix的理论知识
分布式监控之Zabbix-Proxy
Zabbix proxy 是一个或多个从监控设备收集监测数据和发送到zabbixserver 的进程,属于代表zabbix server 的运行,所有收集到的数据被暂时存放在代理服务器,之后统一由代理服务器转发给zabbix proxy 所属的服务器,部署proxy是可选的,但是对于分担单个zabbix服务器的负载是非常有益的。如果尽在proxies上收集数据,那么将减轻服务器上的进程对cpu资源和磁盘I/O的消耗。
DevinGeng
2019/04/09
1.1K0
分布式监控之Zabbix-Proxy
Zabbix服务数据库优化和配置优化
下载tokudb地址:https://share.weiyun.com/85VzMF0i
王先森sec
2023/04/24
1.5K0
zabbix监控-基本原理介绍
一、Linux下开源监控系统简单介绍 1)cacti:存储数据能力强,报警性能差 2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中。比如,连续采样数据存储,有连续三次不在合理范围内的数据就报警 3)zabbix:结合上面两种工具的优点,又可以存储数据,又可以报警。 二、什么是Zabbix及其优缺点(对比Cacti和Nagios) Zabbix是一个基于Web界面提供分布式系统监视及网络监视功能的企业级开源解决方案。它能监视各种网络参数,保证服务器系统的安全
洗尽了浮华
2018/01/22
6K0
zabbix监控-基本原理介绍
Zabbix之基础大全
一、监控基础 1、监控处理过程 采样---->存储----->报警---->展示 (1)、采样   采样的监控数据采集方法:ssh/telnet、SNMP、Protocol v3、IPMI(智能平台管理接口)、TLS。 (2)、数据存储   数据类型:历史数据(nvps)、趋势数据。   数据存储系统:rrd(轮询数据库);                 SQL(关系型数据库,MySQL/PostgreSQL);                 NoSQL(反关系型数据库,Redis/MangoDB);                 时间序列存储。 (3)、主机的四种监控接口:zbx、snmp、jmx、ipmi。 2、常用的开源监控工具 (1)、cacti:强大的【数据展示】功能。   cacti是基于php来编写的;   利用SNMP协议采集样本数据;   利用rrdtool进行数据存储;   报警机制有限。 (2)、nagios:强大的【报警机制】。   nagios不支持历史数据和趋势数据保存;   数据展示功能有限。 (3)、zabbix:集cacti、nagios优点。   强大的数据展示功能;   强大的报警机制;   支持历史数据和趋势数据的存储;   支持脚本实现故障的数据修复。 (4)、ganglia:用于集群监控。   ganglia用于集群监控时,可以实现多台主机的多种集合数据的集中展示。 二、zabbix -----------www.zabbix.com Zabbix功能特点 概述 Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。 数据收集     可用性和性能检查     支持SNMP(包括主动轮训和被动获取),IPMI,JMX,VMware监控     自定义检查     按照自定义的间隔收集需要的数据     通过server/proxy+agents来执行 灵活的阀值定义     您可以非常灵活的定义问题阈值,称之为触发器,触发器从后端数据库获取参考值 高度可配置化的告警     可根据递增机制,接收方和媒介类型自定义发送告警通知     使用宏变量可以使告警通知更加高效有用     自动相应动作可包含远程命令 实时图表绘制     使用内置图表绘制功能可以将监控项的内容实时绘制成图表 Web监控功能     Zabbix可以追踪模拟鼠标在Web网站上的点击操作,来检查Web的功能和响应时间 丰富的可视化选项     支持创建自定义的图表,一个试图集中展现多个监控项     网络拓扑图     以仪表盘的样式自定义大屏展现和幻灯片轮询播放     报表     监控内容的高级(业务)视图 历史数据存储     数据库数据     可配置历史数据     内置数据管理机制(housekeeping) 配置简单     将被监控对象添加为主机     在数据库中获取主机进行监视     应用模板来监控设备 使用模板     在模板中分组检查     模板可以关联其他模板 网络发现     自动发现网络设备     监控代理自动注册     发现文件系统,网络接口和SNMP OID值 快捷的Web界面     PHP Web前端     可从任何地方访问     你可以定制自己的操作方式     审核日志 Zabbix API     Zabbix API为Zabbix 提供了对外的可编程接口,用于批量操作,第三方软件集成和其他目的 权限管理系统     安全用户认证     特定用户可以限制访问特定的视图 功能强大,易于扩展的agent     部署在被监控对象上     支持Linux和Windows 二进制代码     为了性能和更少内存的占用,用C语言编写     便于移植 为复杂环境准备     使用Zabbix proxy代理服务器,使得远程监控更简单 结构 Zabbix由几个主要的软件组件构成,这些组件的功能如下。 Server Zabbix server 是agent程序报告系统可用性、系统完整性和统计数据的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。 数据库存储 所有配置信息和Zabbix收集到的数据都被存储在数据库中。 Web界面 为了从任何地方和任何平台都可以轻松的访问Zabbix, 我们提供基于Web的Zabbix界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。 如果使用SQLite,Zabbix Web界面必须要跟Zab
菲宇
2022/12/21
5580
Zabbix之基础大全
Zabbix中Orabbix监控失效的问题及分析
自从使用了Orabbix监控Oracle以来,很多工作都能够通过这种配置可控的方式处理,有些问题是潜在问题,有些是遗留问题,多多少少还是提高了效率。 最近涉及机房搬迁,我们的Zabbix服务器也在迁移计划中,而因为部署的规模也不大,所以Orabbix和Zabbix Server放在了一起,结果搬迁之后问题就来了,搬迁之后开通了网络防火墙的前提下,系统层面的监控Zabbix Agent表现正常,而原本可用的Orabbix现在没有任何监控信息, 在这种监控基本失效的情况下,我总是不断的收到这
jeanron100
2018/03/21
1.4K0
Zabbix中Orabbix监控失效的问题及分析
相关推荐
zabbix文件以及命令详解(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档