为什么我的主机在 zabbix 服务器上显示为无法访问?

为什么我的主机在 zabbix 服务器上显示为无法访问?

我在两台不同的计算机上有一台 zabbix 服务器和一台代理。代理以主动模式运行,例如我在配置文件中有以下内容:

StartAgents=0
ServerActive=my.zabbix.server.com
Hostname=my.zabbix.agent.com

可以从具有代理的机器访问 zabbix 服务器,例如:

telnet my.zabbix.server.com 10051
Trying 111.111.111.111...
Connected to my.zabbix.server.com.
Escape character is '^]'.
Connection closed by foreign host.

此外,服务器上已打开主机自动注册,并且代理在我第一次启动时已成功注册主机。因此连接肯定是活动的。这是我启动代理时在代理日志中看到的内容:

83074:20171128:082440.324 Starting Zabbix Agent [my.zabbix.agent.com]. Zabbix 3.4.1 (revision 71734).
83074:20171128:082440.324 **** Enabled features ****
83074:20171128:082440.324 IPv6 support:          YES
83074:20171128:082440.324 TLS support:           YES
83074:20171128:082440.324 **************************
83074:20171128:082440.324 using configuration file: /usr/local/etc/zabbix34/zabbix_agentd.conf
83074:20171128:082440.324 agent #0 started [main process]
83076:20171128:082440.325 agent #1 started [collector]
83077:20171128:082440.326 agent #2 started [active checks #1]

换句话说,代理可以连接到服务器,甚至可以识别其版本。代理日志中没有其他任何事件发生。

在服务器上,仍然说主机无法访问!

可能是什么问题呢?

更新:在前端,我看到了此消息:

ZBX红色错误信息

我不确定它为什么要连接到 10050?它是用于被动代理的。我的代理应该是主动的。

更新2:如果我从 zabbix 服务器中删除主机,并重新启动代理,则会发生以下情况:

主机再次自动注册到服务器上。代理日志:

14551:20171128:193954.483 Starting Zabbix Agent [my.zabbix.server.com]. Zabbix 3.4.1 (revision 71734).
14551:20171128:193954.484 **** Enabled features ****
14551:20171128:193954.484 IPv6 support:          YES
14551:20171128:193954.484 TLS support:           YES
14551:20171128:193954.484 **************************
14551:20171128:193954.484 using configuration file: /usr/local/etc/zabbix34/zabbix_agentd.conf
14551:20171128:193954.484 agent #0 started [main process]
14553:20171128:193954.485 agent #1 started [collector]
14554:20171128:193954.485 agent #2 started [active checks #1]
14554:20171128:193954.614 no active checks on server [my.zabbix.server.com:10051]: host [my.zabbix.agent.com] not found

在哪里:

  • my.zabbix.server.com 是服务器的 FQDN
  • my.zabbix.agent.com 是代理的 FQDN,也是代理配置中的 HostName 参数。

看起来,代理已成功注册主机,但出于某种原因,服务器尝试以被动模式从代理获取信息。尽管代理已配置为主动模式。

更新 3:虽然代理正在发送数据,但是主机列表仍然显示问题:

在此处输入图片描述

Availability/ZBX 有一个红旗,还有一条消息说“从代理获取值失败:无法连接到 [[ip_address_here]:1050]: [4] 中断系统调用”。我检查了这些主机的每一个项目和每一个发现,它们都有类型=“Zabbix Agent Active”。所以我不明白为什么服务器试图以被动模式连接到它们???这不会导致真正的“问题”(例如,生成操作并从 zabbix 服务器发出通知),但在屏幕上看到红旗非常令人不安。

在这个问题完全解决之前,我不会接受我自己的答案。

更新 4:在更改了连接到我的主机的所有模板的所有项目类型、发现类型以及低级发现规则的项目原型类型以及从那里链接的所有模板后,ZBX 红旗终于消失了。我相信我是一位经验丰富的软件用户,但要理解发生了什么并更改所有参数以使其正常工作却非常困难。

答案1

为了使主动检查正常工作,代理主机名必须与 Zabbix 服务器中的主机主机名匹配。“代理主机名”不一定是系统主机名 - 它取决于配置参数“Hostname”和“HostnameItem”。Zabbix 中的主机主机名不是 DNS 或 IP 地址 - 它是主机属性中“Host”字段的内容。

当代理启动时,它会打印出它要发送到服务器的主机名。在您的示例中:Starting Zabbix Agent [my.zabbix.server.com]- 即代理向服务器标识自己为my.zabbix.server.com。使此值与正确的主机名匹配(请注意,它区分大小写),主动检查将开始工作。请注意,如果两个或多个代理正在发送数据并将其标识为它,则另一台主机可能会有不正确的值。

请注意,代理日志中打印的版本是代理版本,而不是服务器版本 - 代理无法确定服务器版本。

答案2

简短的回答:问题是所有项目的 Type 都是“Zabbix Agent”,而不是 Type 是“Zabbix Agent Active”。

长答案:主机要么是主动代理,要么是被动代理。(好吧,也许如果你尝试在同一台机器上启动两个代理,那么你可以在一台主机上同时启动两个代理,但这似乎毫无意义。)合乎逻辑,对吧?

因此,实际上,主动或被动是主机的属性,而不是项目的属性。尽管如此,数据收集模式(例如被动或主动)与项目绑定,而不是主机。我认为这是 zabbix 的一个设计缺陷。这非常违反直觉。我唯一能解决这个问题的方法是:

  • 创建一个完整克隆为所有要使用的模板。非常重要的一点是完整克隆而不是简单的克隆。例如,创建“Linux OS”和“FreeBSD OS”模板的完整克隆,并批量更新其所有项目类型,从“Zabbix Agent”更改为“Zabbix Agent (Active)”。还需要将所有发现规则类型从“Zabbix Agent”更新为“Zabbix Agent (active)”。您还需要检查发现规则项目,单击其“项目原型”,然后将所有项目原型的类型从“Zabbix Agent”更改为“Zabbix Agent (Active)”
  • 还需要确保没有链接的(父​​)模板。如果有,您需要递归创建这些模板的完整克隆,然后取消链接并清除旧父模板,并链接新父模板。例如,如果您批量更新“Linux OS”中的所有项目类型,那么它将不会更新从链接的“Zabbix Agent”模板中使用的所谓“模板项目”。因此,您需要将“Zabbix Agents”完全克隆到“Zabbix Agents Active”,将所有项目类型更新为活动,然后重新链接(例如,从“Linux OS”取消链接并清除“Zabbix Agents”模板,然后链接新创建的“Zabbix Agents Active”)
  • 这是递归的:您需要重复所有这些步骤,直到所有项目和所有模板项目都包含“主动”模式而不是“被动模式”

您需要克隆系统中的几乎所有模板。您无法为单个项目设置与项目类型无关的单一触发器,因为没有这样的触发器。如果您想在被动和主动代理混合的环境中更改某些内容,那么您必须做两次。

最后,当您添加主机时,您需要分配主动或被动模板版本,具体取决于您想要对该特定主机使用哪种模式。

所有这些都是因为主动/被动模式不能是主机的属性。它必须是项目的属性。更糟糕的是:它也是发现规则的属性,也是发现规则的原型(原型项目不能批量更新,您必须手动逐个进行更新)。说真的,像“cpu.load”这样的项目与数据的收集方式完全无关。我的意思是,您可以改变主意,从主动模式切换到被动模式,或者切换回来。这不应该强迫您删除所有旧项目,创建新项目。但如果您决定这样做,您将丢失所有历史记录,因为您不仅仅是在更改项目,而且还在替换它们。这真的非常烦人!

我希望他们能在即将推出的 4.0 版本中修复这个问题。

答案3

更改 /etc/zabbix/zabbix_agentd.conf 的值并输入 zabbix 的 ip 地址

相关内容