Zabbix 监控实例,核心是添加主机、关联模板、配置监控项 / 触发器、设置告警,下面给你一套可直接落地的完整实战流程(以 Linux 服务器为例)。
一、环境准备(Zabbix Server 已部署)
- Zabbix Server 已安装(版本 6.0+)
- 被监控端:Linux 服务器(CentOS/RHEL/Ubuntu)
- 网络:Zabbix Server 与被监控端网络互通,端口 10050/10051 开放
二、被监控端安装与配置 Zabbix Agent
1. 安装 Zabbix Agent
# CentOS/RHEL
yum install -y zabbix-agent
# Ubuntu/Debian
apt update && apt install -y zabbix-agent
2. 配置 Agent(关键)
vim /etc/zabbix/zabbix_agentd.conf
修改以下核心参数:
# Zabbix Server IP(被动模式,允许 Server 拉取数据)
Server=192.168.1.100
# Zabbix Server IP(主动模式,Agent 主动推送数据)
ServerActive=192.168.1.100
# 主机名(必须唯一,后续 Web 界面要一致)
Hostname=web-server-01
# 开启自定义监控(后续自定义脚本用)
UnsafeUserParameters=1
3. 启动并设置开机自启
systemctl restart zabbix-agent
systemctl enable zabbix-agent
# 验证端口监听(10050)
netstat -tulnp | grep zabbix_agentd
三、Zabbix Web 界面添加主机(核心步骤)
- 登录 Zabbix Web → Configuration(配置) → Hosts(主机) → Create host(创建主机)
- 填写主机信息:
- Host name :与 Agent 配置的
Hostname一致(如web-server-01) - Visible name :自定义显示名(如
Web服务器-01) - Groups :选择主机组(如
Linux servers) - Interfaces :添加 Agent 接口
- Type:
Agent - IP address:被监控端 IP
- Port:
10050(默认)
- Type:
- Host name :与 Agent 配置的
- Templates(模板) 标签页:
- 点击 Select → 搜索
Template OS Linux by Zabbix agent→ Add - 点击 Add 保存主机
- 点击 Select → 搜索
- 等待 1--2 分钟,查看 Monitoring → Latest data,即可看到 CPU、内存、磁盘等基础监控数据
四、实战:自定义监控实例(以监控 Nginx 进程为例)
1. 被监控端:编写监控脚本
# 创建脚本目录
mkdir -p /etc/zabbix/scripts
vim /etc/zabbix/scripts/check_nginx.sh
脚本内容(检查 Nginx 进程数):
#!/bin/bash
count=$(ps -ef | grep nginx | grep -v grep | wc -l)
echo $count
# 赋予执行权限
chmod +x /etc/zabbix/scripts/check_nginx.sh
2. 被监控端:配置自定义 Key
vim /etc/zabbix/zabbix_agentd.conf
# 末尾添加
UserParameter=nginx.process.count,/etc/zabbix/scripts/check_nginx.sh
# 重启 Agent
systemctl restart zabbix-agent
3. Zabbix Web:创建监控项
- 进入主机 → Items(监控项) → Create item(创建监控项)
- 配置:
- Name:Nginx 进程数
- Type:Zabbix agent
- Key :
nginx.process.count(与自定义 Key 一致) - Type of information:Numeric (unsigned)
- Update interval:30s
- 点击 Add
4. 创建触发器(告警)
- 进入主机 → Triggers(触发器) → Create trigger(创建触发器)
- 配置:
- Name:Nginx 进程异常(进程数 < 1)
- Severity:High(高)
- Expression :
{web-server-01:nginx.process.count.last()}<1 - 点击 Add
5. 验证
- 停止 Nginx:
systemctl stop nginx - 查看 Monitoring → Problems,应触发告警
五、实战:监控 MySQL 主从状态
1. 被监控端:MySQL 授权(允许 Zabbix 读取状态)
# 登录 MySQL
mysql -uroot -p
# 创建监控用户
CREATE USER 'zabbix_mon'@'localhost' IDENTIFIED BY 'Zabbix@123';
GRANT REPLICATION CLIENT ON *.* TO 'zabbix_mon'@'localhost';
FLUSH PRIVILEGES;
2. 被监控端:编写监控脚本
vim /etc/zabbix/scripts/check_mysql_slave.sh
脚本内容:
#!/bin/bash
# 获取 Slave_IO_Running 和 Slave_SQL_Running 状态
IO_STATUS=$(mysql -uzabbix_mon -pZabbix@123 -e "SHOW SLAVE STATUS\G" | grep Slave_IO_Running | awk '{print $2}')
SQL_STATUS=$(mysql -uzabbix_mon -pZabbix@123 -e "SHOW SLAVE STATUS\G" | grep Slave_SQL_Running | awk '{print $2}')
# 状态正常返回 0,异常返回 1
if [ "$IO_STATUS" = "Yes" ] && [ "$SQL_STATUS" = "Yes" ]; then
echo 0
else
echo 1
fi
chmod +x /etc/zabbix/scripts/check_mysql_slave.sh
3. 配置自定义 Key
vim /etc/zabbix/zabbix_agentd.conf
# 末尾添加
UserParameter=mysql.slave.status,/etc/zabbix/scripts/check_mysql_slave.sh
systemctl restart zabbix-agent
4. Zabbix Web:创建监控项与触发器
- 监控项 Key:
mysql.slave.status - 触发器表达式:
{mysql-server:mysql.slave.status.last()}=1(值为 1 时告警)
六、告警配置(邮件 / 钉钉)
1. 配置告警媒介(以邮件为例)
- Administration(管理) → Media types(告警媒介) → Email
- 配置 SMTP 信息(如 QQ/163 邮箱)
- Users(用户) → 选择管理员 → Media → 添加 Email 告警媒介
2. 配置动作(触发告警)
- Configuration(配置) → Actions(动作) → Create action(创建动作)
- Conditions(条件):默认匹配所有触发器
- Operations(操作) :
- 发送消息到用户邮箱
- 消息内容可使用宏(如
{HOST.NAME}、{TRIGGER.NAME})
七、常用监控模板推荐
- 系统基础 :
Template OS Linux by Zabbix agent - 数据库 :
Template DB MySQL by Zabbix agent - Web 服务 :
Template App Nginx by Zabbix agent、Template App Apache by Zabbix agent - 云资源 :
AWS EC2 by Zabbix agent、Azure VM by Zabbix agentZabbix
八、常见问题排查
- 无数据:检查 Agent 配置
Server/ServerActive、防火墙 10050 端口、主机名是否一致 - 自定义 Key 不生效:检查脚本权限、
UnsafeUserParameters=1、重启 Agent - 触发器不触发:检查表达式语法、监控项数据更新间隔