Zabbix是成熟的开源监控解决方案,支持服务器、网络设备、应用服务的全面监控。分布式架构通过Proxy组件扩展监控范围,自动发现机制减少手动维护成本。本文涵盖Zabbix Server+Proxy分布式部署、LLD自动发现、告警分级与通知渠道配置。
Zabbix Server与Proxy分布式架构部署
单台Zabbix Server在监控超过2000台主机时会出现采集延迟。引入Proxy层做区域代理,Proxy负责采集数据并批量回传Server,减轻Server压力:
# Zabbix Server (中心节点) - CentOS/RHEL
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpm
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent2
dnf install zabbix-sql-scripts
# 创建数据库
mysql -uroot -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"
mysql -uroot -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ZbxPass2026';"
mysql -uroot -e "GRANT ALL ON zabbix.* TO 'zabbix'@'localhost';"
# 导入初始Schema
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -pZbxPass2026 zabbix
# 编辑Server配置
cat > /etc/zabbix/zabbix_server.conf << 'EOF'
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=ZbxPass2026
ListenPort=10051
StartPollers=30
StartPollersUnreachable=10
StartTrappers=20
StartDiscoverers=5
CacheSize=256M
HistoryCacheSize=128M
TrendCacheSize=64M
ValueCacheSize=256M
Timeout=10
LogSlowQueries=3000
EOF
systemctl enable --now zabbix-server
Zabbix Proxy部署在异地区域或网络隔离环境:
# Zabbix Proxy节点
dnf install zabbix-proxy-mysql zabbix-agent2
# Proxy数据库
mysql -uroot -e "CREATE DATABASE zabbix_proxy CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"
mysql -uroot -e "CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ZbxProxy2026';"
mysql -uroot -e "GRANT ALL ON zabbix_proxy.* TO 'zabbix'@'localhost';"
zcat /usr/share/zabbix-sql-scripts/mysql/proxy.sql.gz | mysql -uzabbix -pZbxProxy2026 zabbix_proxy
# Proxy配置
cat > /etc/zabbix/zabbix_proxy.conf << 'EOF'
ProxyMode=0
Server=10.0.0.100
ServerPort=10051
Hostname=proxy-beijing
ListenPort=10051
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=ZbxProxy2026
ConfigFrequency=60
DataSenderFrequency=10
StartPollers=20
CacheSize=128M
EOF
systemctl enable --now zabbix-proxy
Proxy部署后在Server的Web界面添加Proxy,Agent2配置中指向本地Proxy的IP。Proxy主动模式下定时向Server拉取配置变更并回传采集数据,DataSenderFrequency控制回传频率。
LLD自动发现规则配置与主机自动注册
低级别发现(LLD)自动创建监控项、触发器和图表。以磁盘分区监控为例,手动为每台服务器的每个分区添加监控项维护成本极高。通过LLD规则自动发现所有挂载分区:
# Agent2自定义发现脚本
cat > /etc/zabbix/scripts/disk_discovery.sh << 'EOF'
#!/bin/bash
# 输出JSON格式的磁盘分区列表
disk_json='{"data":['
for partition in $(df -h | awk 'NR>1 {print $NF}' | grep '^/'); do
disk_json="${disk_json}{\"{#FSNAME}\":\"${partition}\"},"
done
disk_json="${disk_json%,}]}"
echo "$disk_json"
EOF
chmod +x /etc/zabbix/scripts/disk_discovery.sh
# Agent2配置 - 自定义UserParameter
cat >> /etc/zabbix/zabbix_agent2.conf << 'EOF'
UserParameter=vfs.fs.discovery.custom,/etc/zabbix/scripts/disk_discovery.sh
UserParameter=vfs.fs.size.custom[*],df -B1 "$2" | awk 'NR==2 {print $$4}'
UserParameter=vfs.fs.pused.custom[*],df "$2" | awk 'NR==2 {print $$5}' | tr -d '%'
EOF
systemctl restart zabbix-agent2
在Zabbix前端创建发现规则:
发现规则名称: 自定义磁盘分区发现
键值: vfs.fs.discovery.custom
更新间隔: 3600s
# 监控项原型
名称: 磁盘可用空间 {#FSNAME}
键值: vfs.fs.size.custom[free,{#FSNAME}]
单位: B
类型: 数值(无符号)
# 触发器原型
名称: 磁盘空间不足 {#FSNAME}
表达式: last(/host/vfs.fs.size.custom[free,{#FSNAME}]) < 5368709120
严重级别: 警告
主机自动注册(Active Agent Auto-registration)让新部署的Agent2自动注册到Server,无需手动导入。在Agent2配置:
# Agent2主动注册配置
cat >> /etc/zabbix/zabbix_agent2.conf << 'EOF'
ServerActive=10.0.0.100
HostnameItem=system.hostname
HostMetadata=Linux-WebServer
HostMetadataItem=system.uname
RefreshActiveChecks=60
EOF
Server端的Action配置匹配HostMetadata自动将新主机加入对应主机组并应用模板。HostMetadata建议用结构化标签如"OS-CentOS-Role-WebDB",便于Action规则匹配。
告警分级与多渠道通知配置
Zabbix告警分6个等级:未分类、信息、警告、一般严重、严重、灾难。不同等级对应不同通知策略:
# 配置钉钉Webhook通知媒介
cat > /etc/zabbix/alertscripts/dingding.sh << 'EOF'
#!/bin/bash
to=$1
subject=$2
body=$3
webhook="https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
curl -s -X POST "$webhook" \
-H "Content-Type: application/json" \
-d "{
\"msgtype\": \"markdown\",
\"markdown\": {
\"title\": \"Zabbix告警\",
\"text\": \"### Zabbix告警通知\\n> **主机**: ${subject}\\n> **详情**: ${body}\\n> **时间**: $(date '+%Y-%m-%d %H:%M:%S')\"
}
}"
EOF
chmod +x /etc/zabbix/alertscripts/dingding.sh
Action规则按严重级别分流:信息级仅记录日志,警告级发钉钉,严重及以上同时发邮件和短信。Action的条件表达式支持严重级别、主机组、触发器名称多维过滤。告警抑制(Maintenance period)在计划维护窗口期暂停告警通知,避免运维操作误触发告警风暴。
Trend数据的保留策略影响存储空间。推荐原始History保留7-30天,Trend保留1-2年。MySQL监控项较多时考虑启用Housekeeping定期清理和数据库分区,避免大表影响查询性能。通过Zabbix API集成到统一运维平台,可实现告警聚合和根因分析自动化。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/zabbix-fen-bu-shi-jian-kong-gao-jing-ti-xi-da-jian-yu-zi/