Zabbix 监控搭建实战:Agent 安装、主机接入、CPU/内存/磁盘监控与邮件告警


服务器半夜挂了,第二天才被发现?磁盘快满了没人知道?多台机器想统一监控?Zabbix 是使用最广泛的开源监控系统之一:一台 Zabbix 服务器就能监控成百上千台机器,自动采集 CPU、内存、磁盘、网络,异常自动告警到邮件/钉钉/企业微信。这篇文章带你从零装好 Zabbix,并把第一台主机监控起来。

一、Zabbix 是什么?架构怎么理解

Zabbix 采用 C/S 架构:

被监控主机(装 Zabbix Agent)--数据--> Zabbix Server(采集+存储)--展示--> Web 前端
                                              |
                                              +--告警--> 邮件/钉钉/脚本
组件 作用
Zabbix Server 核心,负责采集、判断、告警(用 MySQL/PostgreSQL 存数据)
Zabbix Agent 装在被监控主机上,采集本机指标上报
Zabbix Web 浏览器管理界面(PHP)

监控流程:Agent 把数据发给 Server -> Server 判断是否触发阈值 -> 触发则告警并记录。

二、安装 Zabbix Server(以 CentOS 7 为例)

第 1 步:安装 Zabbix 软件源

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum clean all

第 2 步:安装 Server + 前端 + Agent

yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent

第 3 步:创建数据库

mysql -uroot -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;

第 4 步:导入初始数据

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

第 5 步:配置 Server

编辑 /etc/zabbix/zabbix_server.conf:

DBPassword=你的密码

第 6 步:配置 PHP 时区

编辑 /etc/httpd/conf.d/zabbix.conf:

php_value date.timezone Asia/Shanghai

第 7 步:启动

systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
systemctl status zabbix-server    # 确认 active (running)

第 8 步:浏览器完成安装

访问 http://服务器IP/zabbix ,按向导填写数据库信息,登录默认账号:Admin / zabbix。

三、安装 Agent 并把主机接入监控

第 1 步:在被监控主机安装 Agent(CentOS)

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum install -y zabbix-agent

Ubuntu/Debian:

wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update && apt install -y zabbix-agent

第 2 步:配置 Agent 指向 Server

编辑 /etc/zabbix/zabbix_agentd.conf:

Server=192.168.1.10        # Zabbix Server 的 IP
ServerActive=192.168.1.10  # 主动模式也指向 Server
Hostname=web-01            # 主机名,要和 Web 端添加的主机名一致

第 3 步:重启 Agent 并放行端口

systemctl restart zabbix-agent
systemctl enable zabbix-agent
# 放行 10050 端口(Agent 端口)
iptables -A INPUT -p tcp -s 192.168.1.10 --dport 10050 -j ACCEPT

第 4 步:Web 端添加主机

  1. 配置 -> 主机 -> 创建主机;
  2. 主机名称填 web-01(与 Agent 的 Hostname 一致),群组选 Linux servers;
  3. IP 地址填被监控机器 IP,端口默认 10050;
  4. 关联模板:选择 Linux by Zabbix agent(自带 CPU、内存、磁盘、网络全套监控项);
  5. 点添加,等 1-2 分钟,主机状态变绿色"已启用"、可用性显示 ZBX,就接入成功了。

四、查看监控数据

接入后稍等几分钟,进入 监测 -> 主机 -> 图表,就能看到:

  • CPU 使用率曲线;
  • 内存使用情况;
  • 磁盘空间与 IO;
  • 网络流量。

常用排查命令:

# 检查 Agent 与 Server 是否连通
zabbix_get -s 192.168.1.20 -k system.cpu.util[,iowait]
# 手动测试监控项
zabbix_get -s 192.168.1.20 -k agent.ping

zabbix_get 需要安装:

yum install -y zabbix-get

五、配置邮件告警

第 1 步:配置邮件服务器脚本(用最通用的方式,先配一个发信脚本)

编辑 /etc/zabbix/zabbix_server.conf 确认:

AlertScriptsPath=/usr/lib/zabbix/alertscripts

写一个简单的 curl 发信脚本(调用邮件 API 或直接用 mail):

cat > /usr/lib/zabbix/alertscripts/sendmail.sh <<'EOF'
#!/bin/bash
echo "$3" | mail -s "$2" "$1"
EOF
chmod +x /usr/lib/zabbix/alertscripts/sendmail.sh

第 2 步:Web 端配置

  1. 管理 -> 报警媒介类型 -> 创建媒介类型:脚本名填 sendmail,参数分别给收件人/标题/内容;
  2. 用户(Admin)-> 报警媒介 -> 添加,填你的收件邮箱;
  3. 管理 -> 用户 -> 添加用户(或用 Admin),在"报警媒介"里启用并保存;
  4. 配置 -> 动作 -> 触发器动作:启用默认动作(报告问题/恢复),或创建自定义动作选择触发条件和告警用户。

第 3 步:测试

到某一台主机手动停掉一个服务(比如 systemctl stop httpd),几秒钟后应收到问题告警邮件;恢复服务后收到"已恢复"邮件。

更专业的做法是直接接钉钉/企业微信机器人(通过 Webhook 脚本),原理相同,都是把告警内容 POST 到机器人 URL。

六、触发器:自定义告警阈值

内置模板的监控项一般够了,自定义一个"磁盘超过 85% 告警"的触发器:

  1. 配置 -> 主机 -> 选择主机 -> 触发器 -> 创建触发器;
  2. 名称:{HOST.NAME} 磁盘空间不足;
  3. 表达式:
last(/web-01/vfs.fs.size[/,pused]) > 85

表达式含义:web-01 这台主机的根分区使用率超过 85% 触发。

  1. 严重性选"警告",保存。之后磁盘超阈值就会告警。

七、常见问题排查

1. 主机显示灰色/不可达(ZBX 变红)

先确认 Agent 装了、进程在跑、10050 端口放行,再检查 Server/Agent 配置里的 IP 和 Hostname 是否一致:

systemctl status zabbix-agent
ss -tlnp | grep 10050
tail -f /var/log/zabbix/zabbix_agentd.log

2. 没有数据,全是"不支持"

监控项不支持一般是 Agent 权限不足或取值路径问题。看 Server 日志:

tail -f /var/log/zabbix/zabbix_server.log | grep "web-01"

3. 安装向导数据库报错

确认建库时用了 utf8mb4、授权用户正确、create.sql.gz 导入成功(没有报错输出)。

4. 告警没发出来

先手动执行脚本测试:/usr/lib/zabbix/alertscripts/sendmail.sh 收件人 标题 内容,能发出去再查 Web 端媒介类型、用户绑定、动作是否都配置完整。

总结

Zabbix 上手其实不难:Server 装好数据库和 Web,Agent 装在被监控机器上,Web 端关联模板接入主机,动作配好告警,一套完整监控就起来了。先监控起第一台机器,再慢慢加模板、加触发器、接告警,多台机器统一管理后就再也不用半夜人工盯服务器了。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

OpenVPN 搭建教程:从零配置服务端与客户端,手机电脑安全接入内网

iptables 防火墙详解:四表五链、常用规则、NAT 端口转发与规则持久化实战

评 论
更换验证码