前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >今天你绿了吗?ZABBIX图标显示详解

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

作者头像
Zabbix
发布2022-12-12 09:18:20
1.1K0
发布2022-12-12 09:18:20
举报
文章被收录于专栏:Zabbix中国官方Zabbix中国官方

张世宏(当代张思德) | 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图标体现。

新版本变化

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

代码语言:javascript
复制
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,则禁用主动模式心跳检测。

代码语言:javascript
复制
### 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=

在Zabbix6.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版本。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ZABBIX图标显示概述
    • 主被动模式
      • 新版本变化
        • 结语
        相关产品与服务
        腾讯云 BI
        腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档