
前言在当今的Web应用架构中MySQL作为主流的关系型数据库Redis作为高性能的缓存中间件两者共同构成了数据存储层的核心。对这两款关键组件的监控直接关系到业务系统的数据安全和响应性能。Zabbix Agent 2 原生支持MySQL和Redis的监控插件通过内置的采集模块无需额外安装脚本即可实现对数据库的全面监控。本文将分别详细介绍如何使用Zabbix Agent 2监控MySQL和Redis涵盖用户创建、权限配置、模板宏变量调整等全流程。一、实验环境说明组件配置数据库服务器AlmaLinux 9.1IP: 192.168.38.27Zabbix Server192.168.38.30Zabbix Agent 2已安装并配置完成MySQL版本8.0 / 5.7Redis版本6.x / 7.x二、Zabbix Agent 2 基础配置2.1 安装Zabbix Agent 2在数据库服务器192.168.38.27上安装Zabbix Agent 2安装过程此处不再赘述可参考前期文章。2.2 修改Agent配置文件编辑Agent配置文件/etc/zabbix/zabbix_agent2.conf# Zabbix Server地址被动模式 Server192.168.38.30 # Zabbix Server地址主动模式 ServerActive192.168.38.30 # 本机主机名需与Zabbix Web中添加的主机名一致 Hostname192.168.38.27配置完成后重启Agent服务[rootmysql-server ~]# systemctl restart zabbix-agent2 [rootmysql-server ~]# systemctl enable zabbix-agent2三、监控MySQL数据库3.1 创建Zabbix监控用户MySQL需要为Zabbix Agent 2创建一个专用的监控用户并授予必要的权限。登录MySQL创建用户mysql CREATE USER zbx_monitorlocalhost IDENTIFIED BY mysqlabc123; mysql GRANT USAGE, REPLICATION CLIENT, PROCESS, SHOW DATABASES, SHOW VIEW ON *.* TO zbx_monitorlocalhost; mysql FLUSH PRIVILEGES;权限说明权限用途USAGE允许连接数据库REPLICATION CLIENT获取主从复制状态信息PROCESS查看当前连接和进程列表SHOW DATABASES查看数据库列表SHOW VIEW查看视图定义安全建议监控用户应使用localhost限制仅允许本地连接密码建议使用强密码策略仅授予最小必要权限3.2 验证监控用户连通性在服务器本地测试监控用户能否正常连接MySQL[rootmysql-server ~]# mysql -u zbx_monitor -p -e SELECT VERSION(); Enter password: mysqlabc123 ----------- | VERSION() | ----------- | 8.0.32 | -----------3.3 配置MySQL模板宏变量Zabbix官方提供了MySQL by Zabbix agent 2模板利用Agent 2内置的MySQL插件采集数据。需要先配置模板中的宏变量。操作步骤登录Zabbix Web管理界面进入数据采集Data collection→模板Templates搜索找到MySQL by Zabbix agent 2模板点击模板名称进入详情页切换到宏Macros选项卡如下图所示宏变量配置说明宏变量默认值推荐修改值说明{$MYSQL.USER}rootzbx_monitorMySQL监控用户名{$MYSQL.PASSWORD}(空)mysqlabc123MySQL监控用户密码{$MYSQL.HOST}localhostlocalhostMySQL主机地址{$MYSQL.PORT}33063306MySQL服务端口3.4 链接MySQL监控模板进入数据采集Data collection→主机Hosts选择目标主机192.168.38.27切换到模板Templates选项卡点击链接新模板Link new templates搜索并选择MySQL by Zabbix agent 2点击更新Update保存配置如下图所示3.5 验证MySQL监控数据模板链接完成后稍等片刻验证数据是否正常采集方式一通过Zabbix Web查看进入监控Monitoring→最新数据Latest data筛选主机 192.168.38.27查看是否有MySQL前缀的监控项数据。方式二命令行快速测试在Zabbix Server端使用zabbix_get测试# 测试MySQL版本信息采集 zabbix_get -s 192.168.38.27 -k mysql.version # 测试MySQL连接数采集 zabbix_get -s 192.168.38.27 -k mysql.connections3.6 MySQL监控项概览链接模板后Zabbix会自动采集以下核心指标监控类别监控项示例说明连接状态MySQL: Connections当前连接数查询性能MySQL: Questions查询总数查询吞吐量MySQL: Queries per second每秒查询数QPS连接健康MySQL: Aborted connections异常断开的连接数主从复制MySQL: Slave status复制状态Slave_IO/SQL_Running复制延迟MySQL: Seconds behind master从库延迟秒数表锁MySQL: Table locks表锁等待情况缓存命中MySQL: Key buffer hit rateMyISAM缓存命中率InnoDB状态MySQL: InnoDB buffer poolInnoDB缓冲池使用率四、监控Redis缓存数据库4.1 安装部署Redis如果尚未安装Redis可参考以下步骤快速部署# 下载并解压Redis源码包 [rootmysql-server ~]# tar -xzvf redis-stable.tar.gz [rootmysql-server ~]# cd redis-stable # 编译安装 [rootmysql-server redis-stable]# make [rootmysql-server redis-stable]# make install # 复制配置文件 [rootmysql-server redis-stable]# cp redis.conf /etc/ # 修改Redis配置daemonize改为yes使Redis以守护进程方式运行 [rootmysql-server ~]# sed -i s/^daemonize no/daemonize yes/ /etc/redis.conf # 启动Redis服务 [rootmysql-server ~]# redis-server /etc/redis.conf # 验证Redis是否正常运行 [rootmysql-server ~]# redis-cli ping PONG生产环境建议设置Redis密码在redis.conf中配置requirepass绑定内网IP配置bind 127.0.0.1 192.168.38.27关闭保护模式如需远程访问4.2 配置Redis模板宏变量Zabbix Agent 2 内置了Redis监控插件可以获取INFO命令输出的所有信息、慢查询日志以及服务存活状态。操作步骤进入数据采集Data collection→模板Templates搜索找到Redis by Zabbix agent 2模板点击模板名称进入详情页切换到宏Macros选项卡如下图所示宏变量配置说明宏变量默认值说明备注{$REDIS.CONN.HOST}localhostRedis主机地址使用默认即可{$REDIS.CONN.PORT}6379Redis服务端口如非默认需修改{$REDIS.CONN.PASSWORD}(空)Redis连接密码如设置了密码需填写4.3 链接Redis监控模板进入数据采集Data collection→主机Hosts选择目标主机192.168.38.27切换到模板Templates选项卡点击链接新模板Link new templates搜索并选择Redis by Zabbix agent 2点击更新Update保存配置4.4 验证Redis监控数据命令行测试# 测试Redis信息采集 zabbix_get -s 192.168.38.27 -k redis.info[127.0.0.1,6379] # 测试Redis存活状态 zabbix_get -s 192.168.38.27 -k redis.ping[127.0.0.1,6379] # 测试Redis慢查询日志数量 zabbix_get -s 192.168.38.27 -k redis.slowlog.count[127.0.0.1,6379]4.5 Redis监控项详解链接模板后Zabbix会自动采集以下Redis核心指标监控类别监控项说明监控意义服务状态Redis: PingRedis服务存活检测判断服务是否在线连接状态Redis: Connected clients当前连接的客户端数监控连接是否正常内存使用Redis: Used memory已使用的内存字节数⚠️ 内存溢出告警关键指标内存使用率Redis: Used memory percentage内存使用百分比评估是否达到maxmemory上限命中率Redis: Cache hit ratio缓存命中率评估缓存效率越高越好键空间Redis: Number of keys当前存储的键数量监控数据量增长过期键Redis: Expired keys已过期的键数量监控过期策略执行情况逐出键Redis: Evicted keys因内存限制被逐出的键数量⚠️ 内存不足的信号慢查询Redis: Slow log count慢查询日志数量⚠️ 反映命令执行效率每秒操作数Redis: Instantaneous ops per sec当前每秒操作数OPS反映实时吞吐量网络流量Redis: In/Out network traffic网络出入流量监控网络带宽使用主从复制Redis: Replication state主从复制状态判断复制是否正常五、常见问题排查5.1 MySQL监控常见问题问题现象排查步骤模板链接后无MySQL数据检查Zabbix Agent 2是否运行systemctl status zabbix-agent2监控项显示不支持检查MySQL监控用户是否存在SELECT User FROM mysql.user WHERE Userzbx_monitor连接被拒绝检查MySQL是否监听3306端口netstat -tlnp | grep 3306认证失败检查宏变量中的用户名和密码是否正确注意密码中的特殊字符需要转义权限不足确认已授予所有必要权限SHOW GRANTS FOR zbx_monitorlocalhost快速诊断命令# 在数据库服务器本地测试MySQL插件 zabbix_agent2 -t mysql.ping zabbix_agent2 -t mysql.version5.2 Redis监控常见问题问题现象排查步骤Redis无数据确认Redis服务是否运行redis-cli ping连接失败检查Redis端口6379是否监听netstat -tlnp | grep 6379认证失败如果设置了Redis密码需在宏{$REDIS.CONN.PASSWORD}中配置慢查询无数据检查Redis慢查询配置redis-cli CONFIG GET slowlog-log-slower-than快速诊断命令# 在数据库服务器本地测试Redis插件 zabbix_agent2 -t redis.ping[localhost,6379] zabbix_agent2 -t redis.info[localhost,6379]六、性能调优与告警建议6.1 MySQL关键告警配置告警项建议阈值说明MySQL服务不可用状态不为1立即告警连接数使用率 80% max_connections连接池即将耗尽主从复制中断Slave_IO_Running ! Yes 或 Slave_SQL_Running ! Yes立即告警从库延迟Seconds_Behind_Master 60秒存在复制延迟慢查询数量1分钟内 10条存在SQL性能问题InnoDB缓冲池命中率 95%缓存配置不足6.2 Redis关键告警配置告警项建议阈值说明Redis服务不可用PING响应不为PONG立即告警内存使用率 80% maxmemory需扩容或清理数据缓存命中率 85%缓存效率下降逐出键数量 0内存已达上限慢查询数量1分钟内 5条存在慢命令连接数使用率 80% maxclients连接数即将耗尽6.3 MySQL参数调优参考# /etc/my.cnf 常用调优参数 # 连接数配置 max_connections 500 # InnoDB缓冲池建议设置为物理内存的60%-80% innodb_buffer_pool_size 4G # 查询缓存8.0已弃用 # query_cache_size 128M # 慢查询日志 slow_query_log ON long_query_time 26.4 Redis参数调优参考# /etc/redis.conf 常用调优参数 # 最大内存根据实际物理内存设置 maxmemory 4GB # 内存逐出策略推荐allkeys-lru maxmemory-policy allkeys-lru # 慢查询阈值微秒 slowlog-log-slower-than 10000 # 最大连接数 maxclients 10000七、高可用监控方案建议对于生产环境建议建立以下监控体系MySQL主从复制监控从库的延迟和复制状态确保数据同步正常Redis主从/哨兵/集群监控各节点状态确保高可用机制正常工作容量规划关注数据增长趋势提前进行容量规划结语通过本文的详细讲解我们完成了使用Zabbix Agent 2监控MySQL和Redis的完整部署流程。核心要点回顾Agent 2原生支持MySQL和Redis监控无需额外脚本利用Agent 2内置插件即可最小权限原则为监控用户授予最小必要权限保障数据库安全宏变量统一管理通过模板宏变量集中管理数据库凭据便于维护关键指标监控重点关注MySQL的连接数、主从延迟、慢查询Redis的内存使用率、命中率、逐出键在实际生产环境中建议将数据库监控与业务应用监控相结合构建从应用层到数据层的全链路可观测性体系。相关文章推荐《Zabbix监控NginxPHP-FPM应用实践》《Zabbix监控Apache与Nginx应用实践》《Zabbix监控Windows应用实践》如果文章对您有帮助欢迎点赞收藏如有疑问请在评论区留言交流。原创文章转载请注明出处。