
Zabbix 企业级监控平台从零部署与实战指南 文章目录第一部分Zabbix 基础部署与环境搭建1. 安装和配置 Zabbix2. 安装 Zabbix Server、Web 前端及 Agent3. 创建初始数据库4. 添加 Agent (Rocky Linux)第二部分核心监控功能配置与实践5. Web 界面创建主机与添加第二台 Agent6. 添加监控项6.1 监控 CPU 负载6.2 监控根分区使用情况6.3 监控根分区剩余空间百分比7. 添加 CPU 负载过高触发器8. 添加根分区空闲空间低于 95% 触发器9. 添加 CPU 每分钟负载图形第三部分告警中心与媒介配置10. 设置媒介11. 启用自动发现第四部分高级监控与自动化扩展12. 监控 Nginx13. MySQL 服务监控14. Percona 监控数据库15. Tomcat 监控15.1 Agent 配置 Tomcat15.2 Zabbix Server 上安装 Java Gateway15.3 Web 端添加 JMX 接口16. 集成外部告警 - 睿象云17. Zabbix API17.1 获取 API Token17.2 生成主机列表17.3 删除主机17.4 添加主机第五部分附录与故障排查18. 扩展Rocky Linux 修改网卡名前言本文旨在为系统管理员、运维工程师、DevOps 从业者以及对 IT 监控感兴趣的开发者提供一份从零开始的 Zabbix 实战指南。无论您是在 Rocky Linux/CentOS 环境下搭建全新的监控平台还是希望扩展 Zabbix 对 Nginx、MySQL、Tomcat 等常见服务的监控能力亦或是探索自动化发现、API 集成等高级特性本文都将为您提供清晰的步骤和实用的配置示例。通过阅读本文您将能够独立完成 Zabbix Server、Web 前端及 Agent 的完整部署与基础配置。掌握核心监控概念熟练创建主机、监控项、触发器与图形构建基础监控视图。扩展监控范围实现对 Web 服务Nginx、数据库MySQL/Percona及 Java 应用Tomcat/JMX的深度监控。配置高效的告警流程集成外部告警平台如睿象云确保问题及时通知。利用 Zabbix API 实现自动化运维进行主机的批量查询、添加与删除。理解并应用自动发现与自动注册功能实现监控环境的动态扩展。本文以 Rocky Linux 9 为主要环境操作步骤详尽并配有大量截图力求让您能够边看边做快速搭建起一套功能完备的企业级监控系统。安装和配置zabbix建议添加6.0LTS仓库# 添加 Zabbix 7.4 官方仓库rpm-Uvhhttps://repo.zabbix.com/zabbix/7.4/release/rocky/9/noarch/zabbix-release-latest-7.4.el9.noarch.rpm dnf clean all安装Zabbix server,Web前端agent# 安装 Zabbix Server、Web 前端和 Agentdnfinstallzabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent创建初始数据库# 安装并启动 MySQL 服务yuminstall-ymysql-server systemctl start mysqld.service mysql-uroot-p-- 创建 Zabbix 数据库和用户mysqlcreatedatabasezabbixcharactersetutf8mb4collateutf8mb4_bin;Query OK,1rowaffected(0.01sec)mysqlcreateuserzabbixlocalhostidentifiedbypassword;Query OK,0rowsaffected(0.02sec)mysqlgrantallprivilegesonzabbix.*tozabbixlocalhost;Query OK,0rowsaffected(0.00sec)mysqlsetgloballog_bin_trust_function_creators1;Query OK,0rowsaffected,1warning(0.00sec)mysqlquit;# 导入 Zabbix 数据库结构zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz|mysql --default-character-setutf8mb4-uzabbix-pzabbix# 输入密码并等待导入完成#重新登录mysql默认没有密码[rootserver1~]# mysqlmysqlusezabbix;Readingtableinformationforcompletionoftableandcolumnnames You can turnoffthis featuretoget a quicker startupwith-ADatabasechanged mysqlshowtables;vim/etc/zabbix/zabbix_server.confsystemctl restart zabbix-server zabbix-agent httpd php-fpm systemctlenablezabbix-server zabbix-agent httpd php-fpm安装中文支持 dnfinstallglibc-langpack-zh-ylocalectl list-locales|grepzh_CN点击完成登录界面用户填Admin,密码填zabbix。vim/etc/zabbix/zabbix_agentd.conf systemctl restart zabbix-server systemctl restart zabbix-agent systemctlenable--nowzabbix-agent dnfinstall-ynet-toolsnetstat-antlp|grep:10050测试[rootserver1 fonts]# zabbix_get -s 192.168.88.151 -p 10050 -k agent.ping1[rootserver1 fonts]# zabbix_get -s 192.168.88.151 -p 10050 -k system.hostnameserver1添加agent(rocky linux)centos:192.168.88.152rpm-Uvhhttps://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm yuminstall-yzabbix-agentvim/etc/zabbix/zabbix_agentd.confweb界面创建主机添加第二台agentrpm-Uvhhttps://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-latest-6.0.el7.noarch.rpm yum clean all yuminstallzabbix-agent systemctlenable--nowzabbix-agent systemctl start zabbix-agentvimzabbix_agentd.conf在server机192.168.88.151检测添加监控项右上角创建监控项监控cpu负载点击添加每五分钟负载均衡每十分钟监控根分区使用情况监控根分区剩余空间百分比检测ddif/dev/zeroof/bigfilebs1Gcount2添加cpu负载过高触发器last(/server2/system.cpu.load[all,avg1])0.5last(/server2/system.cpu.load[all,avg1])0.5添加根分区空闲空间低于95%触发器添加cpu每分钟负载图形设置媒介Zabbix 集成外部告警的核心思路是报警媒介类型怎么发→ 动作什么时候发→ 用户发给谁。开启IMAP服务获取授权码为用户添加报警媒介启用触发器动作创建用户组添加模版启用自动发现创建自动注册动作agent操作vim/etc/zabbix/zabbix_agentd.confHostMetadataItemsystem.uname systemctl restart zabbix-agent.service监控nginxyuminstallnginxvim/etc/nginx/nginx.confsystemctlenable--nownginx#测试curllocalhost/basic_statusmysql服务监控cp/usr/share/doc/zabbix-agent/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/ systemctl restart zabbix-agent yuminstall-ymysql-server systemctlenable--nowmysqldmysql mysqlCREATEUSERzbx_monitor%IDENTIFIEDBY654321;Query OK,0rowsaffected(0.02sec)mysqlGRANTREPLICATIONCLIENT,PROCESS,SHOWDATABASES,SHOWVIEWON*.*TOzbx_monitor%;Query OK,0rowsaffected(0.00sec)mysqlquit;mkdir/var/lib/zabbixvim/var/lib/zabbix/.my.cnf[client]protocoltcpuserzbx_monitorpassword654321percona监控数据库功能说明采集 200 项 MySQL 指标连接数、慢查询、InnoDB 缓冲池、锁等待、复制延迟等直接读取 MySQL 内部状态通过 PHP 脚本执行SHOW STATUS、SHOW ENGINE INNODB STATUS缓存机制脚本采集结果缓存到/tmp/避免频繁查询压垮数据库预置模板提供zbx_percona_mysql_template.xml含触发器、图形、监控项agent:server3:centos-7##安装数据库和phpyuminstall-ymariadb-server.x86_64 yuminstall-yphp php-mysql systemctlenable--nowmariadb.servicecd/var/lib/zabbix/percona/scriptsvimss_get_mysql_stats.php$mysql_userroot;$mysql_pass654321’ systemctl restart zabbix-agent.service测试su -s /bin/sh -c “/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg” zabbixagent:server2:rockyrpm-ivhpercona-zabbix-templates-1.1.8-1.noarch.rpmcd/var/lib/zabbix/percona/templatescp/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/ systemctl restart zabbix-agent.servicecd/var/lib/zabbix/percona/scriptsvimss_get_mysql_stats.php yuminstallphp-mysqlnd.x86_64su-s/bin/sh-c/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ggzabbixtomcat监控JMXJava Management Extensions暴露 Tomcat 内部指标Zabbix 可以采集监控维度具体指标作用JVM 内存堆内存使用、非堆内存、GC 次数防止 OutOfMemoryError线程池活跃线程数、最大线程数、队列积压发现请求堆积、线程耗尽连接池活跃连接数、空闲连接、等待队列数据库连接池耗尽预警请求处理每秒请求数、处理耗时、错误率定位性能瓶颈Servlet 容器各应用加载状态、会话数应用级健康度agent配置tomcattarzxf apache-tomcat-8.5.24.tar.gz-C/usr/localcd/usr/local/tomcatvimbin/catalina.sh##编辑 Tomcat 启动脚本添加 JMX 参数CATALINA_OPTS-Dcom.sun.management.jmxremote.port8888 -Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.management.jmxremote.authenticatefalsecdbin ./startup.shzabbix server上安装Java Gatewayyuminstallzabbix-java-gateway systemctlenable--nowzabbix-java-gatewayvim/etc/zabbix/zabbix_server.conf systemctl restart zabbix-serverweb端添加jmx接口集成外部警告–睿象云点击“集成”–监控工具”–zabbix页面右侧有详细的配置步骤#找到警报脚本所在位置vim/etc/zabbix/zabbix_server.confcd/usr/lib/zabbix/alertscriptswgethttps://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.5.tar.gztar-xzfca_zabbix_release-4.0.5.tar.gzchown-Rzabbix.zabbix cloudalertcdcloudalert/binbashinstall.shApp Key当主机出现问题时zabbix apiZabbix API 是 Zabbix 提供的程序化接口通过代码/脚本操控整个监控系统。获取apitokencurl-s-XPOST\-HContent-Type: application/json\-d{ jsonrpc: 2.0, method: user.login, params: { username: Admin, password: Lzc200512151298 }, id: 1 }\http://192.168.88.151/zabbix/api_jsonrpc.php|python-mjson.tool http://192.168.88.151/zabbix/api_jsonrpc.php|python-mjson.tool{jsonrpc:2.0,result:2f3ca216dcb0539f08226ebd2cfbf7f1,id:1}生成主机列表##编辑自动化脚本vimzabbix-api.sh##授予可执行权限chmodx zabbix-api.sh##执行脚本./zabbix-api.sh返回结果192.168.88.148有两个接口zabbixagent和jml分别是31和33。删除主机server2为例curl-s-XPOST-HContent-Type:application/json-d { jsonrpc: 2.0, method: host.delete, params: [ 主机列表里的hostid ], auth: 获取的api token, id:1 }http://192.168.88.151/zabbix/api_jsonrpc.php|python-mjson.tool再次获取主机列表./zabbix-api.sh由于我们在web端设置了自动注册动作当 Zabbix Agent主动模式 向 Server 发送自动注册请求时如果满足条件 “主机元数据包含 Linux”Zabbix 会自动执行以下操作操作说明添加主机自动在主机列表里创建这台机器添加到主机群组: Linux servers把它分到 “Linux servers” 组链接到模板: node status自动挂上 “node status” 监控模板添加主机curl-s-XPOST-HContent-Type:application/json-d { jsonrpc: 2.0, method: host.create, params: { host: server3, #主机名称与agent设置一致 interfaces: [ { type: 1, main: 1, useip: 1, ip: 192.168.88.152, #agent主机IP dns: , port: 10050 } ], groups: [ { groupid: 2 #主机组ID } ], tags: [ { tag: Host name, value: Linux server } ], templates: [ { templateid: 模版id } ] }, id: 1, auth: 2f3ca216dcb0539f08226ebd2cfbf7f1 }http://192.168.88.151/zabbix/api_jsonrpc.php|python-mjson.tool如何查看模版id扩展rocky-linux修改网卡名cd/boot/loader/entriesvim094eb1bc4aaa428caaad7dc524bd0002-5.14.0-570.17.1.el9_6.x86_64.confrebootnmcli c delete ens160 nmcli c delete Wired\connection\1