Zabbix_小Z
作者Zabbix_小Z·2022-11-09 14:05
Zabbix大中华区培训师·上海宏时数据系统有限公司

今天你绿了吗?ZABBIX图标显示详解

字数 3666阅读 476评论 0赞 0

张世宏(当代张思德) | Zabbix开源社区签约专家

  • 2016-2021年Zabbix中国峰会演讲嘉宾
  • 2020年Zabbix全球峰会演讲嘉宾
  • 自主研发开源组件Zabbix报表系统ZbxTable,在社区大获好评

ZABBIX图标显示概述

在Zabbix中主机监控状态有四种类型: Zabbix (Zabbix agent) SNMP/JMX/IPMI,通过对应图标的颜色,即可直观 判断主机数据采集是否正常。使用Zabbix Agent作为采集协议,有时会出现灰色的情况,对于初学者是一个较为困惑的点,本次主要阐述不同 Zabbix 版本中对ZBX标识的状态显示。

主被动模式

Zabbix Agent的采集分为二种模式,主动模式(Active checks)和被动模式(Passive checks)。可简单理解为拉取(被动模式),推送(主动模式),详细介绍可查看之前的二篇文章

Zabbix Agent主动模式配置

Zabbix Agent被动模式配置

默认情况下Zabbix Agent会同时配置主动和被动模式,关联被动监控指标后ZBX图标会显示绿色。如果Zabbix 被动模式连接出现问题, Zabbix 图标会变成红色,鼠标停留在图标上面会显示具体的错误信息,可根据此信息进行排错。Zabbix 图标显示状态必须关联对应类型的监控指标项,否则图标一直为灰色状态。对于Zabbix 6.2以下版本,ZBX图标显示情况如下。

项目被动模式(Passive checks)主动模式(Active checks)
监控正常绿色灰色
监控异常红色灰色
可以看到在Zabbix低版本中,ZBX图标状态会跟随被动模式状态变化而变化,如果主动模式出现故障,则无法通过Zabbix图标体现。

新版本变化

为了解决以上问题,从 Zabbix 6.2版本开始,官方增加了主动模式下的心跳检测函数send_heartbeat_msg.详见源码 zabbix\src\zabbix_agent\active.c

    static void send_heartbeat_msg(zbx_vector_ptr_t *addrs)  
{  
 static ZBX_THREAD_LOCAL int last_ret = SUCCEED;  
 int    ret, level;  
 zbx_socket_t   s;  
 struct zbx_json   json;  
  
 zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);  
  
 zbx_json_init(&json, ZBX_JSON_STAT_BUF_LEN);  
  
 zbx_json_addstring(&json, ZBX_PROTO_TAG_REQUEST, ZBX_PROTO_VALUE_ACTIVE_CHECK_HEARTBEAT, ZBX_JSON_TYPE_STRING);  
 zbx_json_addstring(&json, ZBX_PROTO_TAG_HOST, CONFIG_HOSTNAME, ZBX_JSON_TYPE_STRING);  
 zbx_json_addint64(&json, ZBX_PROTO_TAG_HEARTBEAT_FREQ, CONFIG_HEARTBEAT_FREQUENCY);  
  
 level = SUCCEED != last_ret ? LOG_LEVEL_DEBUG : LOG_LEVEL_WARNING;  
  
 if (SUCCEED == (ret = zbx_connect_to_server(&s, CONFIG_SOURCE_IP, addrs, CONFIG_TIMEOUT, CONFIG_TIMEOUT,  
   configured_tls_connect_mode, 0, level)))  
 {  
  zabbix_log(LOG_LEVEL_DEBUG, "sending [%s]", json.buffer);  
  
  if (SUCCEED == (ret = zbx_tcp_send(&s, json.buffer)))  
  {  
   (void)zbx_tcp_recv(&s); /* allow Zabbix server or Zabbix proxy to close connection */  
  
   if (last_ret == FAIL)  
   {  
    zabbix_log(LOG_LEVEL_WARNING, "Successfully sent heartbeat message to [%s]:%d",  
      ((zbx_addr_t *)addrs->values[0])->ip,  
      ((zbx_addr_t *)addrs->values[0])->port);  
   }  
  }  
 }  
  
 if (SUCCEED != ret)  
 {  
  zabbix_log(level, "Unable to send heartbeat message to [%s]:%d [%s]",  
    ((zbx_addr_t *)addrs->values[0])->ip, ((zbx_addr_t *)addrs->values[0])->port,  
    zbx_socket_strerror());  
 }  
  
 zbx_tcp_close(&s);  
 last_ret = ret;  
  
 zabbix_log(LOG_LEVEL_DEBUG, "Out %s()", __func__);  
}  

同时在6.2版本的Agent配置文件中增加了一个HeartbeatFrequency配置,用户可自行配置主动模式心跳检测时间,默认为60秒发送一次检测心跳,如果设置为0,则禁用主动模式心跳检测。

    ### Option: HeartbeatFrequency  
#       Frequency of heartbeat messages in seconds.  
#       Used for monitoring availability of active checks.  
#       0 - heartbeat messages disabled.  
#  
# Mandatory: no  
# Range: 0-3600  
# Default: 60  
# HeartbeatFrequency=

在 Zabbix 6.2版本开始,主动和被动二种监控状态都可分显示:

如监控状态异常也会显示对应的错误信息,状态则为绿色和灰色二种:

状态被动模式(Passive checks)主动模式(Active checks)
监控正常绿色绿色
监控异常红色红色
如果一个主机同时配置了主动和被动模式,并且同时关联了这二种类型的监控指标,ZBX图标则会按照下列规则进行显示:

  • 如果被动模式正常,主动模式正常,那么 Zabbix 图标会是绿色:

  • 如果被动模式正常,主动模式异常,那么 Zabbix 图标会是黄色:

  • 如果被动模式正常,主动模式未知,那么 Zabbix 图标会显示灰色:

如果你的Zabbix Server为6.2版本而Zabbix Agent 是低于6.2的版本,由于低版本Zabbix Agent无主动模式心跳检测,因此无法获取。主动模式状态会显示为Unknown, Zabbix 图标会显示灰色。这就是有些同学最近反应新版本中ZBX图标配置主动模式后图标也为灰色的原因。

结语

Zabbix版本更新较快,新版本会带来很多新特性和功能,在使用新版本之前一定要先查看版本的What's new内容,并查看相关版本的在线文档,避免使用经验来套新系统。对于版本选择,生产环境强烈建议选择LTS版本。

——————————————————————————————————

张思德将在B站首播,

11月17日(周四)晚8点,点击即可

https://live.bilibili.com/26373155

往期推荐

Zabbix原厂给中国用户的一封信,4大理由消除使用限制的担忧

干货|Webhook配置钉钉/飞书机器人告警

Zabbix6.2惊喜发布!特别优化中大型环境部署的性能!

国产适配升级|UMOP统一监控运维平台与统信海光兼容性互认证

扫一扫|加入技术交流群

微信号|17502189550

备注“使用Zabbix年限+企业+姓名”

5000+用户已加入!

一个人走得快,一群人走得远!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广