
把Zabbix部署这件事写成保姆间教程是因为这几年帮团队落地监控系统真正卡住人的往往不是Zabbix本身而是环境准备和几个高频报错。如果你正打算用Zabbix搭一套能同时盯着服务器、数据库、交换机的中小型监控体系按这篇的路径走一遍就够了环境准备、服务端安装、Web前端汉化、添加第一台Linux主机再到最让人头疼的zabbix server is not running和权限报错排查一条线讲完。我习惯先把丑话说在前面Zabbix不是最简单的监控系统但它是开源监控里覆盖面和成熟度最均衡的一个。它自带阈值告警、可视化图表、权限体系和一套完整的管理后台不像Prometheus那样需要从头拼一堆组件。对于以Linux服务器、Windows机器、网络设备为主的传统IT环境Zabbix开箱即用社区资料也足够撑起日常排障。这篇教程面向的是从零开始的人所以每一步我都会解释为什么要这样操作而不是把命令堆完就完事。1. 部署前必须想清楚的几件事架构角色、版本选型与部署方式1.1 先确认Zabbix适合你的场景很多初学者容易把Zabbix和Grafana、Prometheus混在一起。简单区分一下Zabbix是一个完整的监控系统它自己负责采集数据、存储数据、触发告警、展示图表Prometheus只是监控生态里的采集与存储组件告警要靠Alertmanager展示要靠Grafana链路更长。Zabbix的优势在于传统IT基础设施监控Linux、Windows、VMware、交换机和各种数据库中间件模板库非常庞大装上就能用。如果你要监控的场景以容器和Kubernetes为核心Prometheus那一套确实更顺手但如果你要管的是几十台到几百台传统服务器和网络设备Zabbix的投入产出比是最高的。这也是为什么很多企业内部从Zabbix起步几年后也没有换掉它的原因——它一直在迭代6.0、7.0版本对性能和数据存储做了大量优化已经完全不是早年那个卡顿的Zabbix了。这篇保姆间教程就以最常见的场景为例一台全新的Linux服务器装上Zabbix Server再把另一台Linux主机接入监控目标。1.2 版本与数据库选型别等装完再后悔版本这块是第一个容易踩坑的地方。目前主流是6.0 LTS和7.0 LTS5.0 LTS已经进入维护末期不建议新项目使用。新部署我推荐直接上7.0 LTS它对历史数据存储做了重构在大数据量场景下性能比6.0强不少而且官方对7.0的技术支持周期很长不用刚装完就考虑迁移。数据库选择上Zabbix支持MySQL、MariaDB和PostgreSQL。7.0版本建议MySQL 8.0或更新版本字符集必须用utf8mb4排序规则建议utf8mb4_bin否则后面导入官方Schema的时候很容易报错。不推荐在这步贪图省事用系统自带的旧版MariaDB除非你已经很了解它的兼容性边界。Zabbix本身的数据写入模式是高频批量写入数据库的innodb_buffer_pool_size和磁盘IO对整体性能影响非常大这台数据库服务器尽量别和业务数据库混用。1.3 部署方式对比包安装、源码还是Docker部署方式我直接给结论生产环境用官方RPM/DEB包安装测试环境用Docker源码编译只适合有特殊需求的场景。理由很简单——包安装走systemd管理升级和回滚都方便日志、配置目录、权限都会帮你放好源码编译虽然能自定义路径但每次升级都要重新编译维护成本完全划不来。有人会问Docker部署不是更快吗确实快但Zabbix的Docker方案会把Server、数据库、前端拆成多个容器数据持久化和版本升级的复杂度更高对于没有容器化经验的团队反而容易产生新的坑。尤其生产环境我见过太多docker run一遍装好三个月后数据全没了的案例。这篇教程就以Rocky Linux 9为例做RPM包安装其他RHEL系发行版操作基本一致Ubuntu/Debian的差异我会在相应位置标注出来。2. 从空服务器到数据库就绪每个依赖和参数都标清楚了2.1 操作系统选择与基础环境调整系统版本方面Zabbix 7.0官方支持Rocky Linux 9、AlmaLinux 9、Ubuntu 22.04这种较新的发行版。如果你手头还是CentOS 7我建议要么把系统升级到Rocky/AlmaLinux 9要么装Zabbix 6.0 LTS因为7.0在CentOS 7上会有一堆PHP依赖冲突解决起来非常折磨人。国内很多老旧生产环境还在CentOS 7上这种情况我一般直接劝退装7.0的想法6.0在CentOS 7上还能跑但也要注意PHP版本必须大于等于7.2。拿到一台新机器后先更新系统和设置主机名dnf update -y hostnamectl set-hostname zabbix-server exec bash主机名会直接影响Zabbix Server自身监控里的显示名称建议在一开始就设置成有意义的名称比如zabbix-server、监控服务器不要用默认的localhost。这一步虽然不影响功能但后面配置告警通知时邮件和钉钉消息里显示的主机名如果是一堆随机字符会让人看得头皮发麻。2.2 时间同步、防火墙与SELinux细节时间同步是Zabbix部署里最容易被忽略、但问题最多的一环。Zabbix的Agent到Server之间、主动模式和被动模式的心跳判断都依赖时间一致性。如果Server和Agent的系统时间差了哪怕30秒就会出现数据采集不到、图表显示异常、告警误触发等一堆莫名其妙的问题。dnf install -y chrony systemctl enable --now chronyd timedatectl set-timezone Asia/Shanghai chronyc sources -v如果是在内网环境建议直接把chrony配置里的默认NTP服务器换成内网可用的NTP源或者保持默认的公网源也要确保能通外网。这一步没有做好后面无论怎么排查Zabbix server is not running都查不出问题因为根本原因在时间上。这一点是无数人踩过的坑我也踩过后来养成了习惯任何监控系统的部署文档第一步永远是时间同步。防火墙和SELinux的处理原则是内网测试环境可以直接关掉生产环境必须放行端口而不是关闭防火墙。需要放行的端口有Web前端用的80或443Zabbix Server接收Agent数据用的10051Agent监听用的10050。如果主机之间还有额外防火墙设备同样要放行。systemctl stop firewalld systemctl disable firewalld # 或者生产环境只放行必要端口 # firewall-cmd --permanent --add-port80/tcp --add-port10050/tcp --add-port10051/tcp # firewall-cmd --permanent --add-servicehttp # firewall-cmd --reload setenforce 0 sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/configSELinux这块我多说一句如果你不想关闭SELinux就必须给Zabbix相关的服务手动添加策略模块过程比较繁琐。对于大多数企业内部网络环境来说关闭SELinux是常见选择但如果你所在企业对安全基线有严格要求还是建议查一下官方文档里SELinux相关的配置说明不要直接一刀切。2.3 数据库安装与初始化参数数据库是Zabbix的存储底座安装和初始化直接影响后续能否正常导入Schema。这里以MySQL 8.0为例dnf install -y mysql-server systemctl enable --now mysqldMySQL 8.0在RHEL系上需要先配置官方仓库或者用系统自带的mysql模块。密码策略默认是强密码策略测试环境可以调整生产环境建议保持默认复杂度。登录MySQL后创建Zabbix专用数据库和用户CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER zabbixlocalhost IDENTIFIED BY YourStrongPassword; GRANT ALL PRIVILEGES ON zabbix.* TO zabbixlocalhost; FLUSH PRIVILEGES;这里有两个关键点第一字符集必须utf8mb4排序规则必须utf8mb4_bin这个组合是官方要求如果用了默认的utf8mb4_general_ci后面导入Schema或者查看中文数据时可能出问题。第二数据库用户名我建议直接用zabbix不要图个性用别的名字因为后面Zabbix Server的配置文件里默认值是zabbix保持一致能少踩一个坑。MySQL的参数优化里最重要的是innodb_buffer_pool_size。如果给Zabbix独立部署的服务器内存有8GB可以把这项设置为4GB左右4GB内存的机器就设置2GB。另外max_allowed_packet建议设置为64M以上避免采集到的某些大报文写入失败。这些配置在/etc/my.cnf.d/目录下加一个配置文件即可[mysqld] innodb_buffer_pool_size 2G max_allowed_packet 64M log_bin ON binlog_format rowbinlog这里建议开启但不要保留太长时间一般保留1到2天就够了因为Zabbix的数据本身刷新频率很高长期保留binlog会很占磁盘空间。如果机器磁盘小于100GB建议直接关闭binlog或者用专门的备份策略替代否则很可能撑满磁盘。3. 服务端安装与初始化原本最耗时的环节这样能一次过3.1 安装Zabbix仓库与Server/Web/Agent组件Zabbix的安装包通过官方仓库下发第一步是装仓库rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpm dnf clean all dnf makecache如果服务器访问外网速度慢可以把仓库地址换成国内镜像源。方法很简单把/etc/yum.repos.d/zabbix.repo里的baseurl修改为镜像站地址比如清华源或阿里源。这里我提醒一下一定要在makecache之前改源否则缓存了官方源元数据后面还是会走慢速通道。接下来安装服务端相关组件dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent2zabbix-agent2装在这里是为了监控Zabbix Server自己。生产环境我建议Server本身的Agent一定要装这样你会有第一个自监控数据来源后面排查问题时会非常有用。zabbix-web-mysql会自动拉取Apache和PHP相关依赖这一步网络通畅的话大约需要几分钟。3.2 创建数据库并导入初始Schema安装完成后需要把官方预置的Schema导入数据库。这里有个易错点不同版本Schema脚本路径不同。7.0的脚本路径是/usr/share/zabbix-sql-scripts/mysql/server.sql.gzzcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-setutf8mb4 -uzabbix -pYourStrongPassword zabbix这条命令是整个安装过程中最耗时的一步视机器性能可能需要几分钟。如果中途报错最常见的原因就是字符集排序规则不对制或者MySQL版本低于8.0。导入期间不要中断否则会产生残缺的表结构后面查问题会非常痛苦。验证导入是否成功mysql -uzabbix -pYourStrongPassword zabbix -e USE zabbix; SHOW TABLES;执行后如果能看到几十张表就说明Schema导入成功。常见的users、hosts、items、triggers这些表都会出现。如果表数量明显偏少大概率是导入过程被中断过需要drop database后重新来一遍不要直接在上面的基础上继续因为后续初始化建表会各种报错。3.3 修改Server配置并启动服务Zabbix Server的核心配置文件是/etc/zabbix/zabbix_server.conf需要修改的主要是数据库连接信息vim /etc/zabbix/zabbix_server.conf找到这几行并修改DBHostlocalhost DBNamezabbix DBUserzabbix DBPasswordYourStrongPasswordDBHost这里有个隐藏细节如果填localhostZabbix Server会通过MySQL的socket文件连接如果填127.0.0.1走的是TCP连接。在某些系统上socket路径不一致会导致连接失败报错信息里能看到类似Cant connect to local MySQL server through socket /var/lib/mysql/mysql.sock。如果遇到这种情况把DBHost改成127.0.0.1基本能解决这也是我推荐直接写127.0.0.1的原因能少一个变量。PHP这边需要调整时区。RHEL系安装zabbix-web-mysql后PHP配置文件在/etc/php-fpm.d/zabbix.conf里面有一项php_value[date.timezone] Asia/Shanghai确认时区为Asia/Shanghai后重启所有服务并设置开机自启systemctl restart zabbix-server zabbix-agent2 httpd php-fpm systemctl enable zabbix-server zabbix-agent2 httpd php-fpm启动后监听端口检查ss -lntp | grep -E 10051|80正常情况下10051端口是Zabbix Server在监听80端口是Apache在监听。如果10051没起来先查看/var/log/zabbix/zabbix_server.log不要反复重启日志会告诉你真实原因。最常见的就是数据库连接失败其次是数据库用户密码携带了特殊字符导致配置解析出错。4. Web前端配置与中文化当心这几步操作改错了要重来4.1 Web安装向导与PHP依赖检查服务端启动后浏览器访问http://服务器IP/zabbix会自动进入安装向导。第一步是语言选择直接选Chinese (zh_CN)也能走下一步但我个人建议先选English等登录后再切成中文因为安装向导本身是Zabbix校验环境参数的必经流程英文状态下报错信息有时更好在搜索引擎里定位。安装向导会检查PHP前置条件页面上会列出所有必选项。如果出现红色的Fail项常见需要安装的PHP扩展有PHP检查项缺失时的安装命令RHEL系php-bcmathdnf install -y php-bcmathphp-mbstringdnf install -y php-mbstringphp-gddnf install -y php-gdphp-xmldnf install -y php-xmlphp-ldapdnf install -y php-ldap装完扩展后需要重启php-fpm和httpd再刷新页面。这一步不要跳过任何红色项否则即使强行走完安装向导后面登录、图形展示都可能有隐患。等所有检查项都变绿填写数据库连接信息数据库类型选MySQL主机填127.0.0.1端口3306数据库名zabbix用户zabbix密码为你设置的值。4.2 首次登录、汉化与安全设置安装向导完成后默认账号是admin默认密码是zabbix。登录进去第一件事是改密码这不用我多说。Zabbix 7.0的界面已经比较现代但操作逻辑依然是Configuration管采集配置Monitoring管数据和告警展示Administration管用户、媒体、系统设置。汉化路径是点击右上角头像进入User profile在Language里选择Chinese (zh_CN)保存后刷新就会变成中文界面。注意是老版本是Preference里改语言6.0和7.0在用户资料里如果你看到的是英文界面但找不到改语言的位置多半是把位置找错了。改完语言后还有一个安全细节需要处理默认安装向导在完成后仍然保留任何人都可以通过访问/zabbix/install.php重新触发安装流程。生产环境建议把这个文件删除或改名mv /usr/share/zabbix/install.php /usr/share/zabbix/install.php.bak虽然Zabbix新版对重复安装有保护机制但保险起见删除或改名是最稳妥的做法。这也是很多安全扫描器会报出来的中危风险点。4.3 中文乱码与图形字体修复Zabbix切到中文后默认图表里如果出现中文标题或告警内容大概率会显示成一堆方块。这是因为默认图形字体是DejaVu Sans不支持中文字符。这个问题几乎每个中文用户都会遇到解法也简单系统中安装一个中文字体然后让Zabbix使用它。以文泉驿微米黑为例dnf install -y wqy-microhei-fonts cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/修改字体定义文件vim /usr/share/zabbix/include/defines.inc.php找到类似这样的配置行define(ZBX_GRAPH_FONT_NAME, wqy-microhei);有些版本是在$fonts数组里定义把其中一项的值改成wqy-microhei即可具体格式取决于版本。改完后清一下浏览器缓存或强制刷新再去看图形中文就正常了。如果在defines.inc.php里找名字找不到也可以直接新建一个自定义字体数组把graphfont指向你复制进去的字体文件名。这一步做完Web层面的基础配置才算完整。很多教程到这里就结束了但对于真正要上监控的人来说后面的Agent接入才是重头戏。5. 把第一台Linux主机接入监控Agent安装、模板选择与连通性验证5.1 Agent vs Agent2选哪个更省事Zabbix有两代Agentzabbix-agent第一代和zabbix-agent2第二代。新部署我推荐直接用Agent2它支持插件机制监控MySQL、PostgreSQL、Redis这些中间件时不需要再单独写脚本插件装好就能用而且官方持续在新版本中为Agent2增加功能。第一代Agent虽然稳定但功能边界已经定型了没有太多扩展空间。安装Agent2dnf install -y zabbix-agent2 systemctl enable --now zabbix-agent2这步在Zabbix Server本机执行也可以在你要监控的目标机器上执行也可以安装包来源必须是同一个Zabbix仓库。版本一致性很重要尽量让Agent2和Server保持同大版本跨大版本的Agent连Server有时会出现部分key不兼容的情况。5.2 Agent配置主动模式与被动模式Agent2的核心配置文件是/etc/zabbix/zabbix_agent2.conf里面有三个关键参数Server、ServerActive、Hostname。理解这三个参数是理解Zabbix工作方式的关键。默认情况下Zabbix用的是被动模式Zabbix Server主动向Agent发起请求Agent收到请求后返回数据。此时需要在Agent配置里写Server10.0.0.10这个IP就是Zabbix Server的IPAgent只接受来自这个IP的采集请求。主动模式则是Agent按照固定周期主动把数据推给Server此时需要配置ServerActive10.0.0.10:10051 Hostnameweb-01ServerActive告诉Agent往哪里推数据Hostname告诉Server这一批数据是哪台主机的。注意Web端添加主机时主动模式下主机名必须和Agent配置文件的Hostname完全一致否则Server拒绝接收数据。两种模式的场景差异少量几台机器用被动模式就够Server主动拉取是最直观的但如果监控几百台机器且机器分布在多个网段主动模式能显著减轻Server压力也更容易穿透NAT。实际生产里两种模式可以混用即同时配置Server和ServerActive这样既能被Server拉取也能主动推送。这种混用模式也是我推荐的生产配置灵活性和稳定性兼顾。5.3 Web端添加主机、链接模板与验证回到Zabbix Web界面进Configuration - Hosts - Create host。核心配置项Host name填主机名。如果Agent配置了主动模式必须和zabbix_agent2.conf里的Hostname一致。Visible name显示名称可以随便填比如Web服务器-01。Templates搜索Linux by Zabbix agent并选择对应模板。如果Agent是主动模式选择Linux by Zabbix agent active被动模式则选择Linux by Zabbix agent。两个模板都链接也可以但如果主动被动混用部分item会重复采集。Interfaces添加Agent接口填Agent机器的IP地址端口默认10050。保存后大概等几秒钟到几分钟列表里主机的ZBX标识会从灰色变成绿色说明连通正常。如果一直是灰色先做手动连通性测试dnf install -y zabbix-get zabbix_get -s 10.0.0.101 -p 10050 -k agent.ping返回1说明Agent已正常响应是Web端配置问题返回超时则说明网络或Agent进程有问题需要检查防火墙和Agent进程状态。这一步能快速你想问题的边界不会让你瞎猜。模板链接上之后过两三分钟进Monitoring - Latest data选择这台主机就能看到CPU、内存、磁盘、网络等一堆监控项的数据了。看到数据在跳第一台主机接入完成Zabbix部署的骨架已经搭好。6. zabbix server is not running与权限报错一条完整的排查链路6.1 Server is not running的典型原因拆解Zabbix server is not running: the information displayed may not be current.这段红字是所有Zabbix使用者迟早会碰到的。它的意思是Web前端连不上后端Server进程数据无法刷新。这个错误我已经处理过无数次了每次的排查链路都是一样的第一步看进程systemctl status zabbix-server如果进程没在跑直接看日志tail -n 50 /var/log/zabbix/zabbix_server.log日志是所有排障的第一信息源90%的not running根源都能在这里找到。看到access denied去查数据库账号看到cannot start preprocessing handler去查内存配置看到cannot send data to database去查数据库连接。第二步验证数据库连接mysql -uzabbix -pYourStrongPassword -h 127.0.0.1 zabbix -e SELECT 1;手动能连上说明是和zabbix_server.conf的配置或权限不一致手动都连不上先去数据库端解决。第三步看端口ss -lntp | grep 1005110051端口没监听服务器进程肯定没正常起来或者起来了又崩了继续回到日志。第四步是PHP的坑。如果zabbix-server在跑Web前端还是显示not running检查php-fpm是否启动systemctl status php-fpm另外PHP的date.timezone必须设置否则前端会因为时区配置错误而拒绝和后端正常通信表现出来也是一样的红字。7.0版本对次数的内存要求更高如果你机器内存只有1GBCacheSize这些参数最好手动调小比如CacheSize64M HistoryCacheSize16M TrendCacheSize16M否则Server进程会频繁OOM表现也是进程不在、或者起来了又死。第五步查磁盘df -h根分区或/var/log分区写满Zabbix Server写入日志失败也会退出。这一步在长期运行的机器上很常见尤其是默认把所有数据都放在系统盘、系统盘又只有20G的环境里。还有一个适合内网机器的情况就是SELinux没有关闭。RHEL系上如果忘记处理SELinuxZabbix Server能起来但连不上数据库或者无法监听端口日志里会有类似Permission denied的信息这种问题用常规思维去查会卡很久。6.2 replace_user权限报错的真正来源Zabbix报错里有一句非常经典的Access denied for user replace_userlocalhost (using password: YES)。我为什么会把这个单独拉出来讲因为这个词几乎直接暴露了问题来源——很多网上的安装教程在创建数据库用户时会写CREATE USER replace_userlocalhost IDENTIFIED BY replace_password; GRANT ALL PRIVILEGES ON *.* TO replace_userlocalhost;这里的replace_user和replace_password是占位符意思是让你换成自己的用户名和密码。但很多新手直接照抄于是数据库里真的创建了一个叫replace_user的用户。后续配置zabbix_server.conf时写的是DBUserzabbixServer拿着zabbix这个用户去登录MySQLMySQL说不认识你于是报Access denied for user zabbixlocalhost或者如果你把配置也改成了replace_user那报错就是英语字面的那个样子。排查方式很明确SELECT user, host FROM mysql.user;看看数据库里到底有哪些用户。如果发现zabbix没有直接创建正确用户再授权如果zabbix存在但密码不对修改密码或重新授权ALTER USER zabbixlocalhost IDENTIFIED BY NewPassword;然后同步更新zabbix_server.conf里的DBPassword重启zabbix-server。另外提醒一点如果密码里有特殊字符比如、#、^zabbix_server.conf的DBPassword不支持转义容易解析错。遇到这种问题最安全的办法就是把数据库用户密码改成纯字母数字组合或者用Zabbix配置工具重新生成。另一种常见情况是zabbix-server.conf里DBHost填了localhost但PHP和Server找的MySQL socket路径不一样也会报Cant connect through socket或者Access denied。这种情况把DBHost改成127.0.0.1强制走TCP绕过socket路径差异就解决了。6.3 其他高频故障Unreachable、Not supported除了Server本身的报错日常碰到最多的是主机状态变成红色ZBX或灰色ZBX。灰色ZBX加Host unreachable表示Agent连不上通常的排查链路是ping一下主机IP通不通确认非本机防火墙拦截10050端口检查Agent进程是否正常运行最后用zabbix_get手动采集key。按这个顺序来不用慌。另一个高频状态是ZBX_NOTSUPPORTED鼠标放到监控项上会提示Not supported的原因。这代表Server连上了Agent但Agent不认这个key。最常见原因是模板类型不匹配你在Web端用的模板是Linux by Zabbix agent被动模式但Agent配置的Hostname和ServerActive和主动模式相关导致某些key的指标获取方式不对或者Agent2插件的某个模块没有启用。还有一种情况是Agent版本太老不支持模板里某些新key把Agent升级到和Server同版本基本能解决。7. 从交换机到告警通知让Zabbix真正用起来的几个进阶配置7.1 用SNMP监控交换机部署好了服务器监控很多人下一步就想把交换机纳入监控。Zabbix通过SNMP协议实现对网络设备的监控不需要在交换机上装任何Agent只需开启SNMP服务。以常见交换机为例先在设备上配置SNMP读社区字符串snmp-server community public ro然后在Zabbix Web端添加主机时接口类型选择SNMP填写交换机的管理IP端口默认161SNMP community填public。模板选择Networking by SNMP这一类的通用模板就能自动带上接口状态、流量、CPU、内存等监控项。在把设备接入Zabbix之前建议先手动验证SNMP联通性snmpwalk -v2c -c public -On 10.0.0.253 .1.3.6.1.2.1.1能返回一堆系统信息就说明SNMP配置没问题。如果snmpwalk没有返回数据Zabbix这边怎么配都是白费劲。注意SNMP版本老设备可能只支持SNMPv1或v2c新设备支持SNMPv3有安全要求的环境建议用v3虽然配置麻烦一点但Community明文传输在安全性上确实是个短板。7.2 接报警钉钉/企业微信/邮件监控建起来之后报警通知是让监控系统真正发挥价值的环节。Zabbix的告警链路是触发器Trigger产生事件动作Action将事件推送到媒体Media type媒体再发送到你的钉钉、企业微信或邮箱。以钉钉机器人告警为例先在钉钉群里添加一个自定义机器人拿到Webhook地址。然后在Zabbix里创建Media type选择Webhook类型或使用社区现成的钉钉告警脚本模板填入Webhook URL。接下来给用户配置媒体接收人Administration - Users - 选择你的用户 - Media - Add选择刚才创建的钉钉媒体类型输入接收人的手机号或群机器人设置的手机号。最后创建动作Configuration - Actions - Trigger actions - Create action。条件里选Trigger severity大于等于Warning操作里配置发送消息给指定用户组恢复操作也配一条告警恢复时也能收到通知。触发器表达式举例last(/Linux by Zabbix agent active/system.cpu.util[,5m])80这个表达式表示最近5分钟的CPU平均使用率超过80%时触发告警。阈值不要直接用默认值要根据业务机器实际负载来调否则默认触发器很容易误报或者真正该告警的反而没告。我强烈建议任何告警动作都要同时配置问题发生和问题恢复两个操作否则告警恢复时你完全不知道只能一直处于焦虑状态。这就好比你家的烟雾报警器只响铃但不解除谁也受不了。7.3 大屏展示与数据保留策略Zabbix 7.0内置的Dashboard已经很好用了通过拖拽不同Widget组成一个大屏页面可以放CPU趋势、内存使用、磁盘空间、网络流量等几种图形。进入Monitoring - Dashboard默认有一个全局概览可以新建自定义Dashboard并分享链接放在办公室大屏幕上所有团队成员都能看到整体资源水位。如果觉得Zabbix内置图表不够好看可以接Grafana。Grafana通过插件连接Zabbix APIgrafana-cli plugins install alexanderzobnin-zabbix-app数据源类型选ZabbixAPI地址填http://Zabbix服务器IP/api_jsonrpc.php账号用Zabbix的管理员账号和密码。这样就能在Grafana里用更灵活的图表面板来展示Zabbix采集的数据适合那种需要给领导做汇报展示的场景。数据保留策略是运维层面的必修课。Administration - General - Housekeeping里可以设置历史数据保留天数与趋势数据保留天数。默认历史数据保留31天趋势数据保留365天。如果磁盘有限历史数据改成7天或14天就够毕竟老数据用到的频率并不高。Zabbix自带的分区表优化TimescaleDB在7.0里也更好用了大数据量下性能会有明显提升但对数据库架构有要求需要安装时选PostgreSQL才能用如果已经是MySQL注意控制历史保留天数来避免磁盘膨胀。我自己在实际使用中的体会是监控系统部署完成只是一个开始真正花精力的往往是后面的告警调优和阈值治理。Zabbix的默认模板只是给了一个合理起点你不能指望开箱即用的默认阈值完全适配你的业务。建议先把基础资源监控跑上两周观察正常时期的CPU、内存、磁盘水位再根据这些真实基线去调整触发器的阈值和告警级别这样才能真正让告警在关键时刻响起来而不是天天半夜被不痛不痒的通知吵醒。另外从交换机到告警通知这些进阶功能不要一天之内全部配完每加一类监控就观察一段时间Zabbix的部署力不大但维护好告警质量才是长期的事。