Zabbix运维监控部署,服务器异常自动告警
很多刚接触服务器运维的朋友都遇到过类似问题:网站突然打不开,登录服务器才发现磁盘满了或者内存耗尽。
如果有一套监控系统能在故障发生前自动告警,就能避免大部分被动救火。
本文就带你从零开始完成Zabbix运维监控部署,让服务器异常自动告警真正落地。
部署前的环境确认
Zabbix采用服务端-代理端架构,服务端负责收集数据和触发告警,代理端安装在被监控服务器上。
建议准备两台Linux主机(CentOS 7或Ubuntu 20.04以上),服务端最低2核4G,被监控端1核1G即可。
开始前先关闭防火墙和SELinux,或者提前放行相关端口。
Zabbix服务端默认使用10051端口,代理端使用10050端口,Web界面使用80端口。
# 临时关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
安装Zabbix服务端与数据库
以CentOS 7为例,先安装MariaDB数据库和Zabbix官方源。
# 安装数据库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum install -y mariadb-server mariadb
systemctl start mariadb && systemctl enable mariadb
mysql_secure_installation
# 创建Zabbix数据库和用户
mysql -uroot -p
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'YourStrongPassword';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 导入初始数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
接着安装Zabbix服务端、前端和代理,并修改配置文件。
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
# 编辑 /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=YourStrongPassword
启动服务并设置开机自启。
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
完成后浏览器访问 http://服务端IP/zabbix,默认账号Admin,密码zabbix。
登录后进入Web安装向导,数据库信息填写正确即可。
添加被监控主机并关联模板
登录Zabbix Web界面,依次点击“配置”->“主机”->“创建主机”。
主机名称自定义,群组选Linux servers,IP地址填写被监控服务器的内网或公网IP。
关键一步是关联模板。
在“模板”标签页搜索并添加 Template OS Linux by Zabbix agent,这个模板会自动采集CPU、内存、磁盘、网络等常用指标。
随后在被监控服务器上安装zabbix-agent,并配置服务端地址。
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
# 编辑 /etc/zabbix/zabbix_agentd.conf
Server=服务端IP
ServerActive=服务端IP
Hostname=本机主机名(需与Web界面主机名一致)
systemctl restart zabbix-agent && systemctl enable zabbix-agent
回到Web界面,主机列表中的ZBX图标变为绿色,说明数据采集正常。
配置异常自动告警
Zabbix通过触发器判断异常,再通过动作发送告警。
系统自带模板已包含常见触发器,例如CPU负载过高、磁盘空间不足。
你可以在“配置”->“主机”->“触发器”中查看或自定义阈值。
要实现自动告警,需要配置告警媒介。
以邮件为例,进入“管理”->“报警媒介类型”->“Email”,填写SMTP服务器、端口、发件邮箱和密码。
保存后,再到“管理”->“用户”->“Admin”->“报警媒介”中添加收件邮箱。
最后创建动作:点击“配置”->“动作”->“创建动作”。
条件设置为“触发器严重性 >= 警告”,操作中发送消息给Admin用户,并勾选“恢复消息”以便故障恢复时收到通知。
判断条件:当触发器表达式成立且严重性达到设定级别,Zabbix会立即执行动作发送告警。
如果未收到邮件,优先检查动作条件是否匹配、用户媒介是否启用、SMTP连通性。
常见部署问题与避坑
- 数据库导入报错:通常是字符集或权限问题,确认数据库创建时使用utf8,且zabbix用户有全部权限。
- ZBX图标红色:检查被监控端防火墙是否放行10050端口,
zabbix_agentd.conf中Server和Hostname是否准确。 - 邮件收不到:很多云服务器封禁25端口,建议改用465加密端口或其他告警方式,如钉钉、企业微信。
- 告警风暴:合理设置触发器依赖和告警抑制,避免同一故障重复通知。
验证告警是否生效
最简单的方法是在被监控服务器上模拟高负载,例如执行 stress --cpu 4 --timeout 60,观察Zabbix是否在几分钟内触发告警并发送邮件。
也可以在触发器列表中手动选择一个触发器,点击“测试”按钮查看动作执行情况。
如果测试成功,说明Zabbix运维监控部署已基本完成,服务器异常自动告警可以正常工作。
后续根据业务需求逐步添加更多监控项和告警媒介即可。
常见疑问
Zabbix服务端和代理端可以在同一台机器吗? 可以,但不建议生产环境这样用,因为服务端资源占用较高,可能影响被监控业务的稳定性。
必须使用MariaDB吗? Zabbix支持MySQL、PostgreSQL等多种数据库,选择你熟悉的即可,注意版本兼容性。
告警邮件有延迟怎么办? 检查动作中的默认操作间隔,适当调小;
同时确认网络到SMTP服务器的延迟。
如何监控Windows服务器? 安装Zabbix agent for Windows,配置方式与Linux类似,模板选择Windows by Zabbix agent。
如果你正在处理Zabbix运维监控部署,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。