惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
MyScale Blog
MyScale Blog
量子位
月光博客
月光博客
J
Java Code Geeks
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
U
Unit 42
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
G
Google Developers Blog
博客园 - 【当耐特】
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
IT之家
IT之家
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
博客园 - 叶小钗
B
Blog
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
B
Blog RSS Feed

博客园 - crockery

13-心一网络助手-XinYiNetTool 12-奥赛题库-OlympiadMath 11-核痕-KeHen 10-烽燧-FengSui 09-弈局-ChessForge 08-立方之蛇-CubeSerpent 06-纯粹数独-PureSudoku 05-砂漏-Grainfall 04-回响回廊-EchoHalls 03-烬塔-EmberTower 02-胶囊医生-DrCapsule 01-离阵-ArrowExodus 一文看懂--什么是typescript 一个项目从 0 到上线的技术路线图 windows批量部署nodeJS项目 Vue + Node + Nginx 从 0 到上线 github上有哪些star非常多的项目 一篇文章搞懂所有前端后端概念图 【基于智能监控系统的配置问题】1、zabbix部署与配置 【基于智能监控系统的配置问题】3、仪表盘的界面设定 【基于智能监控系统的配置问题】4、与grafana的连接问题 【基于智能监控系统的配置问题】5、grafana上遇到的问题 【基于智能监控系统的配置问题】6、如何生成单页的监控界面 【基于智能监控系统的配置问题】7、zabbix如何实现免登录预览监控 【基于智能监控系统的配置问题】8、关于grafana的汉化问题 【基于各种多模态文件的在线预览系统】1、多模态预览 【基于各种多模态文件的在线预览系统】2、部署问题 【基于各种多模态文件的在线预览系统】3、本地磁盘挂载虚拟机 【基于各种多模态文件的在线预览系统】4、其他值得推荐的应用 【基于各种多模态文件的在线预览系统】5、出现无法访问的情况
【基于智能监控系统的配置问题】2、zabbix如何部署centos和st...
crockery · 2026-07-10 · via 博客园 - crockery

两个系统差别主要在安装源包管理工具,配置和启动几乎一样。下面分开写,你对照着抄。

一、CentOS 7

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

二、CentOS Stream 9

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 systemsLinux 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?

你贴的是配置文件开头的注释说明部分,你要改的那三行(ServerServerActiveHostname)在文件更靠下的位置,需要往下翻才能找到。它们各自有独立的段落,而且默认状态可能被注释或是空值。

最省事的办法是别在长文件里翻找,直接用命令改。退出 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 systemsLinux 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。常见三个原因,按顺序排查。

第一步:从 server 侧确认到底通不通

在香港主机上跑(你之前测 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
  • 如果 1.7 这条也 open,那可能只是刚才没刷新,等一两分钟点 UI 的"立即检查"就好。
  • 如果是 timed outunreachable,继续往下查——问题在被监控机这端。

第二步:确认 stream9 这台 agent 真的在跑、在听 10050

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(Stream 9 默认开启,可能拦截)

如果上面都做了还不通,临时测一下是不是 SELinux:

getenforce                               # 显示 Enforcing 的话
setenforce 0                             # 临时关掉测试

关掉后如果立刻通了,说明是 SELinux,别长期关,正确做法是加策略放行(确认是它再处理,我可以给你命令)。


针对你两台的具体建议:

  • 1.7(stream9,红色):重点查第三步防火墙——你之前装 stream9 时,我提到过要 firewall-cmd --add-port=10050/tcp,确认这步做了没,没做就是它。
  • 1.5(centos7,灰色):灰色可能只是还没轮到采集。先等两分钟看会不会自己变绿/变红;如果变红且同样报 unreachable,按一模一样的流程查它的 firewalld。

最快的定位法就是先跑第一步那两条 nc。把两台的结果发我,我就能确定各自卡在哪一层。