Day 16-Zabbix管理(下)

📅 2026/8/9 12:11:01
Day 16-Zabbix管理(下)
文章目录Zabbix全栈监控实操复盘触发器、邮件告警、服务监控到第三方集成全流程前言一、基础监控与触发器配置1.1 CPU负载与磁盘空间触发器1.2 多周期CPU负载图形搭建二、邮件告警体系落地2.1 报警媒介配置与测试2.2 告警动作与通知验证2.3 用户与权限体系搭建三、模板封装与自动发现注册3.1 自定义模板创建与封装3.2 主机自动发现配置3.3 主机自动注册实现四、业务服务监控接入4.1 Nginx服务状态监控4.2 MySQL官方模板监控4.3 Percona MySQL深度监控模板4.4 Tomcat JMX监控五、第三方告警与API拓展5.1 睿象云告警平台集成5.2 Zabbix API基础调用踩坑汇总与实操总结核心踩坑点汇总实操心得Zabbix全栈监控实操复盘触发器、邮件告警、服务监控到第三方集成全流程前言这次实操把Zabbix基础监控、告警体系、模板化、自动发现注册、多服务监控以及第三方告警集成完整走了一遍全程踩了不少细节坑比如触发器键值写错、邮件授权码搞混、Percona脚本缺依赖、JMX一直不生效等等一步步排查下来总算把整条链路跑通整理成完整的实操记录。一、基础监控与触发器配置1.1 CPU负载与磁盘空间触发器最先上手的是基础指标告警先给server2主机配置CPU负载触发器。在触发器配置页填写名称“cpu负载过高”严重性选择“告警”级别问题表达式设置为1分钟平均负载≥0.5时触发告警恢复表达式设置为0.5时自动恢复。配置完成后在触发器列表中可以看到这条规则问题与恢复表达式都正常显示。接下来配置根分区空闲空间触发器设置空闲占比低于95%时触发告警。为了验证告警是否能正常触发直接用dd命令在根目录生成一个1G的测试文件来占用空间ddif/dev/zeroof/bigfilebs1Gcount1命令执行完成后很快就触发了告警界面弹出根分区空间不足的告警提示。验证完告警逻辑后立刻删除测试文件释放空间等待片刻后告警自动恢复在告警记录中可以看到这条告警持续了3分钟状态标记为已解决。1.2 多周期CPU负载图形搭建只有告警不够还需要可视化趋势图。先创建基础的CPU每分钟负载图形设置宽度900px、高度200px绑定对应的1分钟负载监控项。预览图形可以看到负载波动曲线底部展示最新值、最小值、平均值、最大值同时标注了触发器阈值线。后续补充了5分钟、15分钟两个周期的CPU负载监控项实现不同时间维度的负载趋势观测。先创建“cpu每5分钟负载”监控项类型为Zabbix客户端键值为system.cpu.load[all,avg5]更新间隔设置为1分钟历史数据保留90天。再创建“cpu每15分钟负载”监控项键值为system.cpu.load[all,avg15]其余参数与5分钟监控项保持一致。两个监控项创建完成后回到图形配置页将它们都添加到同一张图中这样一张图里就能同时查看1分、5分、15分三条负载曲线方便对比趋势。system.cpu.load的参数直接写all,avg5即可不需要加尖括号。二、邮件告警体系落地2.1 报警媒介配置与测试监控项和触发器都就绪后开始配置邮件告警通道使用163邮箱作为发件方。在报警媒介类型中新建Email媒介SMTP服务器填写smtp.163.com端口465安全连接选择SSL/TLS认证方式为用户名和密码。重点提醒这里的密码不是邮箱登录密码是邮箱的SMTP授权码。配置完成后一定要做测试输入收件人地址发送测试邮件提示“媒介类型测试成功”就说明通道打通了登录收件邮箱可以正常收到Zabbix发来的测试消息。测试通过后把系统默认的其他报警媒介全部禁用只保留我们配置的Email通道避免多余告警渠道干扰。2.2 告警动作与通知验证媒介通道打通后先给用户配置收件邮箱设置告警接收时段和级别。进入动作配置页面准备配置告警触发规则系统默认自带一条“Report problems to Zabbix administrators”动作会给管理员组发告警测试阶段可以先保留后续根据需求调整。触发一次CPU高负载测试后在告警记录中可以看到动作已执行告警消息发送给了Admin用户。切换到紧凑视图可以看到完整的告警时间线问题产生时间、动作执行时间一目了然。告警恢复后收件邮箱也会收到恢复通知邮件里面包含问题名称、持续时间、主机、严重性等完整信息。2.3 用户与权限体系搭建实际运维中需要做权限隔离不能都用Admin账号所以开始搭建用户和用户组体系。先创建名为test的用户组。给用户组分配主机群组权限Zabbix servers群组给读写权限Linux servers群组先设为拒绝实现细粒度权限控制。接下来创建普通用户用户名为lb归属到test用户组设置登录密码界面语言选择简体中文。给这个新用户配置报警媒介收件人填写对应告警邮箱启用时段为全天7*24小时所有告警级别都接收。角色分配为Admin role这里注意一个核心规则Zabbix的主机群组权限只能指派给用户组不能直接指派给单个用户用户权限继承自所属用户组。最开始用新用户登录后发现看不到模板列表排查后发现是用户组没有模板群组的访问权限。切换回Admin账号给test用户组加上Templates/Operating systems群组的读写权限后就正常了授权后可以看到完整的系统模板列表。当前主机列表中有server2、server3两台主机Agent状态都正常启用。默认动作覆盖范围太广我们新建一个精准的触发器动作只针对server2的CPU负载过高告警发送邮件。动作名称设为“邮件通知”条件设置为“触发器等于server2:cpu负载过高”操作配置中设置发送消息给test用户组仅通过Email媒介发送。配置完成后再次触发测试告警就会按照我们设定的规则发送给指定用户组。三、模板封装与自动发现注册3.1 自定义模板创建与封装手动给每台主机加监控项效率太低所以把之前配置好的监控项、触发器、图形都封装成自定义模板方便批量复用。新建模板名称为node status归属到Templates/Operating systems群组。把server2上已经配置好的CPU负载、根分区空间等5个监控项连同对应的触发器、图形全部复制到这个自定义模板中。后续新增主机只要链接这个模板就能自动继承所有监控配置不用重复手动创建。3.2 主机自动发现配置手动加主机还是麻烦Zabbix支持自动发现网段内的主机并自动添加监控。先配置发现动作设置接收到的值包含Linux、服务类型为Zabbix客户端时自动将主机添加到Linux servers群组并链接Linux by Zabbix agent模板。然后创建自动发现规则名称为Local networkIP范围设置为192.168.48.163-170更新间隔1小时检查方式为Zabbix客户端的system.uname键值【图38】【图39】。注意操作顺序一定要先激活发现动作再激活自动发现规则不然发现到主机也不会执行添加动作规则启用后等待片刻就能在自动发现状态页看到已经发现了3台设备并且都成功添加为监控主机。3.3 主机自动注册实现除了服务端主动发现还有客户端主动注册的方式更适合跨网段、客户端IP不固定的场景。测试前先删掉之前手动加的server2停用自动发现规则避免冲突。先配置自动注册动作设置动作执行三个操作添加主机、添加到Linux servers群组、链接node status模板。然后到客户端主机修改Agent配置文件开启元数据配置添加HostMetadataItemsystem.uname配置项让客户端上报系统信息用于匹配注册规则。配置完成重启Agent后等待片刻主机就会自动注册到服务端并且自动链接上对应的模板。四、业务服务监控接入4.1 Nginx服务状态监控基础系统监控搞定后开始接入业务服务监控先从Nginx开始。先在server2的Agent端安装Nginxyuminstallnginx然后给server2主机链接Nginx by Zabbix agent官方模板。接下来修改Nginx配置文件添加stub_status状态页面路径为/basic_status关闭这个路径的访问日志vim/etc/nginx/nginx.conflocation /basic_status { stub_status on; access_log off; }配置完成重启Nginx用curl测试状态页面是否正常返回curlhttp://127.0.0.1/basic_status能正常返回Active connections、连接数、请求数等信息就说明配置成功Zabbix就能通过这个页面采集Nginx的运行状态数据。4.2 MySQL官方模板监控接下来配置MySQL监控先使用Zabbix官方的MySQL模板。先看官方模板的前置要求需要安装Zabbix Agent和MySQL客户端拷贝用户参数配置文件创建专用监控用户配置客户端连接文件。先在MySQL中创建专用监控用户zbx_monitor并授予对应权限CREATEUSERzbx_monitor%IDENTIFIEDBY123456;GRANTREPLICATIONCLIENT,PROCESS,SHOWDATABASES,SHOWVIEWON*.*TOzbx_monitor%;然后拷贝模板对应的用户参数配置文件到Agent配置目录创建zabbix家目录编写MySQL客户端配置文件[client] protocoltcp userzbx_monitor password123456配置完成重启Zabbix Agent服务然后在Web端给server2主机链接MySQL by Zabbix agent模板。链接完成后可以看到主机的监控项、触发器、图形数量都大幅增加MySQL的各项指标都开始采集。4.3 Percona MySQL深度监控模板官方模板监控维度比较基础想要更细粒度的MySQL监控可以用Percona的监控模板。先导入Percona的模板文件到Zabbix中。导入完成后可以看到Template Percona MySQL Server模板包含191个监控项、44个图形监控维度非常丰富。先在server3上部署安装Percona监控模板的rpm包rpm-ivhpercona-zabbix-templates-1.1.8-1.noarch.rpm安装完成后把用户参数配置文件拷贝到Agent配置目录然后重启Agent服务。Percona的监控脚本是PHP写的所以需要安装PHP和MySQL扩展同时安装MariaDB作为测试环境yuminstall-ymariadb-server.x86_64 yuminstall-yphp php-mysql启动MariaDB并给root用户设置权限方便脚本连接数据库grantallon*.*torootlocalhostidentifiedby123456;进入Percona脚本目录找到PHP统计脚本。修改里面的数据库连接信息改成自己的数据库账号密码。配置完成后用zabbix用户身份执行测试脚本有返回值就说明脚本运行正常su-s/bin/sh-c/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ggzabbix脚本测试通过后给server3主机链接Percona MySQL模板等待片刻就能看到监控数据正常采集。然后用同样的步骤在server2上部署安装rpm包、拷贝配置文件、修改脚本数据库配置注意server2用的是之前创建的zbx_monitor用户同样执行脚本测试确认返回正常。这里踩了个大坑最开始没装PHP脚本一直执行失败排查了半天才发现Percona模板依赖PHP环境安装完php和php-mysql之后就正常了。4.4 Tomcat JMX监控最后配置Java应用的监控用JMX方式监控Tomcat。先在server3上解压Tomcat安装包做软链接方便访问tarzxf apache-tomcat-9.0.120.tar.gz-C/usr/local/ln-s/usr/local/apache-tomcat-9.0.120 /usr/local/tomcat安装JDK环境yuminstalljava-1.8.0-openjdk.x86_64进入Tomcat的bin目录修改catalina.sh文件添加JMX远程监控配置CATALINA_OPTS-Dcom.sun.management.jmxremote.port8888 \ -Dcom.sun.management.jmxremote.rmi.port8888 \ -Dcom.sun.management.jmxremote.sslfalse \ -Dcom.sun.management.jmxremote.authenticatefalse \ -Djava.rmi.server.hostname192.168.48.165配置完成重启Tomcat浏览器访问8080端口能看到Tomcat默认页面就说明启动成功。然后在Zabbix主机配置里给server3添加JMX接口IP地址填客户端IP端口8888同时链接Generic Java JMX模板。最开始添加完JMX状态一直不亮排查后发现Zabbix Server端没有安装Java Gateway。回到server1服务端安装zabbix-java-gatewayyuminstall-yzabbix-java-gateway.x86_64然后修改zabbix_server.conf配置文件开启Java Gateway相关配置vim/etc/zabbix/zabbix_server.conf重启Zabbix Server服务。等待片刻后JMX图标变亮说明JMX监控通道打通Tomcat的各项指标开始正常采集。五、第三方告警与API拓展5.1 睿象云告警平台集成自带的邮件告警功能比较单一想要电话、微信、排班等高级告警功能可以集成第三方告警平台这里用睿象云做演示。先在睿象云平台添加Zabbix集成获取对应的appke。到Zabbix Server端的告警脚本目录下载并解压睿象云的Agent包cd/usr/lib/zabbix/alertscripts/wgethttps://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.5.tar.gztarzxf ca_zabbix_release-4.0.5.tar.gzchown-Rzabbix.zabbix cloudalert/进入安装脚本目录执行安装脚本传入appkey然后按照提示输入Zabbix地址、管理员账号密码cdcloudalert/bin/ ./install.sh 40e241e34fdc4cb088a6d8e0d1372878安装脚本会自动创建报警媒介、用户组、用户和对应动作全程自动化。安装完成后可以看到系统里多了Cloud Alert Media媒介、Cloud Alert User用户和对应的动作。之后就可以在睿象云平台配置通知策略设置不同告警级别、不同时间段的通知方式支持电话、短信、微信、邮件等多种渠道。5.2 Zabbix API基础调用Zabbix提供了完整的API接口可以用来做二次开发、自动化运维。先测试最基础的登录接口用curl调用获取认证tokencurl--requestPOST\--urlhttp://192.168.48.162/zabbix/api_jsonrpc.php\--headerContent-Type:application/json\-d{ jsonrpc:2.0, method:user.login, params:{ username:Admin, password:zabbix }, id:1, auth:null }|python-mjson.tool调用成功会返回对应的auth token后续所有API调用都需要带上这个token。为了方便后续使用把登录逻辑封装成shell脚本#!/bin/bashZABBIX_URLhttp://192.168.48.162/zabbix/api_jsonrpc.phpUSERAdminPWDzabbixcurl-s-XPOST$ZABBIX_URL\-HContent-Type:application/json\-d{\jsonrpc\:\2.0\,\method\:\user.login\,\params\:{\username\:\$USER\,\password\:\$PWD\},\id\:1,\auth\:null }|python-mjson.tool给脚本加执行权限后直接运行就能获取认证token后续可以基于这个脚本拓展更多自动化操作。踩坑汇总与实操总结核心踩坑点汇总触发器键值格式错误参数拼写、符号写错都会导致监控项不支持一定要对照官方文档核对邮件告警授权码混淆163/QQ邮箱的SMTP密码是授权码不是登录密码自动发现顺序错误必须先启用发现动作再启用发现规则否则发现主机不会执行添加操作Percona模板依赖PHPPercona监控脚本由PHP编写必须提前安装php和php-mysql扩展否则脚本执行失败JMX监控需要Java GatewayZabbix Server端必须安装并配置zabbix-java-gateway否则JMX接口一直不生效权限继承规则主机群组、模板权限只能分配给用户组不能直接分配给单个用户实操心得这次实操把Zabbix从基础到进阶的核心功能都跑通了最大的感受是Zabbix的配置细节非常多差一个参数、错一个顺序就会导致功能失效排查起来很费时间。模板化、自动发现/注册是提升运维效率的核心学会封装模板之后新增主机的配置成本会低很多。服务监控部分官方模板能满足基础需求深度监控还是要靠第三方模板或者自定义监控项。第三方告警平台集成能大幅提升告警触达能力适合生产环境使用。后续还可以继续探索自定义模板、自定义告警脚本、分布式Proxy部署等更进阶的玩法。