










两个系统差别主要在安装源和包管理工具,配置和启动几乎一样。下面分开写,你对照着抄。
CentOS 7 已经 EOL,官方 yum 源可能失效,但 Zabbix 仓库还在。
1. 装仓库 + agent2
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/7/x86_64/zabbix-release-latest-7.0.el7.noarch.rpm
yum clean all
yum install -y zabbix-agent2
如果
yum install报基础依赖装不上(CentOS 7 EOL 后常见),通常是系统自带的 base/updates 源失效导致。可以临时把系统源换成阿里云的 vault 镜像再装,或者直接告诉我报错内容我帮你处理。
2. 改配置
vi /etc/zabbix/zabbix_agent2.conf
Server=<香港主机内网IP>
ServerActive=<香港主机内网IP>:10051
Hostname=centos7-xxx
Hostname 取唯一名,UI 里加主机要填得一字不差。被动模式其实只用到 Server 这行,但 ServerActive 一起填上也没坏处。
3. 启动 + 自启 + 放行端口
systemctl enable --now zabbix-agent2
systemctl status zabbix-agent2
# CentOS 7 默认 firewalld
firewall-cmd --add-port=10050/tcp --permanent && firewall-cmd --reload
1. 装仓库 + agent2(注意是 el9 + dnf)
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
dnf clean all
dnf install -y zabbix-agent2
2. 改配置(和 CentOS 7 完全一样)
vi /etc/zabbix/zabbix_agent2.conf
Server=<香港主机内网IP>
ServerActive=<香港主机内网IP>:10051
Hostname=stream9-xxx
3. 启动 + 自启 + 放行端口
systemctl enable --now zabbix-agent2
systemctl status zabbix-agent2
firewall-cmd --add-port=10050/tcp --permanent && firewall-cmd --reload
Stream 9 如果默认启用了 SELinux,被动模式一般不受影响;万一连不上又确认端口通,可临时
setenforce 0验证是不是 SELinux 拦的,是的话再加策略而不是长期关掉。
在被监控机本地自测(确认 agent 自己没问题):
zabbix_agent2 -t agent.ping
返回 agent.ping [s|1] 就是正常的。
从香港 server 侧测通断(和你测 Windows 那条一样):
docker exec zabbix_axas-zabbix-server-1 nc -zv <这台的172.16.x.x> 10050
open 就说明通了。
UI 加主机:
数据采集 → 主机 → 创建主机 → 主机名称填得和配置里 Hostname 一致 → 主机群组选 Linux servers → 接口加 Agent、IP 填这台的 172.16.x.x、端口 10050、连接到选 IP → 模板进 Templates/Operating systems 选 Linux by Zabbix agent(被动,别选 active 那个)→ 保存。
等 1 分钟变绿即可。
补充一个版本对应表,方便你以后上别的机器照着改 URL 里的 el7/el8/el9:CentOS 7 → el7、Rocky/Alma/Stream 8 → el8、Stream 9 → el9,包管理 7 用 yum、8/9 用 dnf,其余完全一致。
CentOS 7 那台装的时候最容易卡在 EOL 源失效上,真遇到就把报错发我。要不要我把 Windows + CentOS 7 + Stream 9 这三套部署流程,连同你这套 zabbix_axas 栈的网络结构,一起整理成一份 Markdown 存进 Wiki.js?
你贴的是配置文件开头的注释说明部分,你要改的那三行(Server、ServerActive、Hostname)在文件更靠下的位置,需要往下翻才能找到。它们各自有独立的段落,而且默认状态可能被注释或是空值。
最省事的办法是别在长文件里翻找,直接用命令改。退出 vi(按 Esc 输入 :q! 不保存退出),然后跑下面三条:
sed -i 's|^# *Server=.*|Server=172.16.0.8|; s|^Server=.*|Server=172.16.0.8|' /etc/zabbix/zabbix_agent2.conf
sed -i 's|^# *ServerActive=.*|ServerActive=172.16.0.8:10051|; s|^ServerActive=.*|ServerActive=172.16.0.8:10051|' /etc/zabbix/zabbix_agent2.conf
sed -i 's|^# *Hostname=.*|Hostname=stream9-1-7|; s|^Hostname=.*|Hostname=stream9-1-7|' /etc/zabbix/zabbix_agent2.conf
改完验证一下三行确实写对了(只看这三个关键项,排除被注释的行):
grep -E '^(Server|ServerActive|Hostname)=' /etc/zabbix/zabbix_agent2.conf
正确的话应该输出正好这三行:
Server=172.16.0.8
ServerActive=172.16.0.8:10051
Hostname=stream9-1-7
如果某一行没出现,说明它在文件里前面带了别的格式(比如缩进),手动 vi 进去把那一项改对即可。如果
Server出现了两行,把多余的那行删掉,只留一行。
确认无误后,重启服务让配置生效:
systemctl restart zabbix-agent2
systemctl status zabbix-agent2 # 看是否 active (running)
本地自测:
zabbix_agent2 -t agent.ping
返回 agent.ping [s|1] 就正常了。
接下来记得:在香港 server 侧测一下通断 docker exec zabbix_axas-zabbix-server-1 nc -zv 172.16.0.8 10050(注意这台是 172.16.0.8,别填错),然后去 UI 加主机——主机名称填 stream9-1-7(和 Hostname 一字不差)、接口 IP 填 172.16.0.8、端口 10050、模板进 Templates/Operating systems 选 Linux by Zabbix agent。
弄完告诉我变绿没。
每一项都出现了两行——这是因为配置文件里原本就有"注释行 + 真实配置行"两处,sed 把它们都改成了相同内容,所以各重复了一次。重复的 Server / Hostname 会导致 agent 启动时报错或行为不确定,必须去重,每项只留一行。
用下面这条命令一次性删掉重复(每个键只保留第一次出现的那行):
awk '!/^(Server|ServerActive|Hostname)=/ || !seen[$0]++' /etc/zabbix/zabbix_agent2.conf > /tmp/za2.conf && cat /tmp/za2.conf > /etc/zabbix/zabbix_agent2.conf
再次验证,这次应该正好三行:
grep -E '^(Server|ServerActive|Hostname)=' /etc/zabbix/zabbix_agent2.conf
期望输出:
Server=172.16.0.8
ServerActive=172.16.0.8:10051
Hostname=stream9-1-7
如果还是各两行(说明两行内容完全一致没被去重逻辑覆盖到),最稳妥就是
vi /etc/zabbix/zabbix_agent2.conf,搜索/^Server=、/^Hostname=,把重复的那行用dd删掉,每项只留一行。
确认是三行后,重启并自测:
systemctl restart zabbix-agent2
systemctl status zabbix-agent2
zabbix_agent2 -t agent.ping
status 显示 active (running)、agent.ping 返回 [s|1] 就成了。
弄完这台就剩 UI 加主机了(主机名 stream9-1-7、IP 172.16.0.8、端口 10050、模板 Linux by Zabbix agent),加完看变绿没。
你这张表信息很清楚,先把状态读出来再对症处理:
stream9-1-7(172.16.1.7)的 ZBX 是红色不可用,鼠标悬停的报错是关键:
Cannot establish TCP connection to [172.16.1.7]:10050: Host is unreachable
centos7-1-5(172.16.1.5)的 ZBX 是灰色,灰色表示还没采集过/状态未知,不是错误,通常是刚加进来还没到第一个采集周期,或者同样连不上但还没判定。
Host is unreachable 是网络层根本到不了这台机(连 TCP 握手都没开始),这跟模板、Hostname 都无关,纯粹是 server 容器连不到 172.16.1.7:10050。常见三个原因,按顺序排查。
在香港主机上跑(你之前测 1.3 那台用过这条):
docker exec zabbix_axas-zabbix-server-1 nc -zv 172.16.1.7 10050
docker exec zabbix_axas-zabbix-server-1 nc -zv 172.16.1.5 10050
open,那可能只是刚才没刷新,等一两分钟点 UI 的"立即检查"就好。timed out 或 unreachable,继续往下查——问题在被监控机这端。到 172.16.1.7 那台机上:
systemctl status zabbix-agent2 # 必须 active (running)
ss -tlnp | grep 10050 # 必须看到 0.0.0.0:10050 或 :::10050 在监听
如果服务没跑 → systemctl restart zabbix-agent2 再看。 如果服务跑着但 ss 看不到 10050 在听,多半是配置没生效或监听绑错地址。
Host is unreachable 十有八九是 stream9 这台的 firewalld 把 10050 挡了(CentOS 7 那台 1.5 同理要查)。在对应机器上执行:
firewall-cmd --add-port=10050/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports # 确认 10050/tcp 在列表里
如果是云服务器,云平台的安全组也要放行 10050 入站(来源填香港 server 的内网 IP 或整个 172.16.0.0/16)。这一步最容易漏。
如果上面都做了还不通,临时测一下是不是 SELinux:
getenforce # 显示 Enforcing 的话
setenforce 0 # 临时关掉测试
关掉后如果立刻通了,说明是 SELinux,别长期关,正确做法是加策略放行(确认是它再处理,我可以给你命令)。
针对你两台的具体建议:
firewall-cmd --add-port=10050/tcp,确认这步做了没,没做就是它。最快的定位法就是先跑第一步那两条 nc。把两台的结果发我,我就能确定各自卡在哪一层。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。