2021-12-18 09:24:26
使用Zabbix Agent2监控Redis的核心方法是通过插件获取Redis的存活性、配置信息、运行状态及慢查询日志数量,需结合配置优先级和连接管理机制实现高效监控。 以下是具体实现步骤和关键原理:
一、Redis监控插件实现原理插件位置与代码结构
插件位于zabbix-agent2/src/go/plugins/redis目录,核心代码为redis.go,通过实现Exporter接口的方法获取数据。
根据不同的key值调用对应函数(如info、config、ping等),支持多会话监控多个Redis实例。
连接构建与优先级
URI构建:通过whereToConnect函数基于配置文件或key参数生成连接URI,key中定义的URI优先级高于配置文件中的redis.session。
配置参数优先级:
插件代码默认值
全局配置(Plugins.Redis.<parameter>)
会话配置(Plugins.Redis.Sessions.<sessionName>.<parameter>)
监控项key参数

数据获取方式
Info信息:执行INFO命令,支持指定section参数获取部分信息,结果通过parseRedisInfo函数格式化为map类型。

Config信息:执行CONFIG GET *命令,可通过pattern参数筛选特定配置。

存活状态:执行PING命令,返回PONG表示服务正常。
慢查询日志数量:通过查询慢查询日志的最后一个ID计算数量。

连接管理机制
通过GetConnection方法获取连接,若连接存在则更新lastTimeAccess并与keepalive参数比较,超时则关闭未使用连接;若不存在则创建新连接。
使用互斥锁保证多URI监控时的线程安全。

环境准备与配置修改
关闭Redis保护模式:若Redis处于保护模式(protected-mode yes),需修改redis.conf文件或通过命令禁用:
CONFIG SET protected-mode no或直接编辑配置文件并重启服务:protected-mode no错误提示:保护模式启用时,外部连接会被拒绝,需确保Redis不对公卜培网开放(如碧液设置绑定地址或密码)。
模板应用与URI配置
导入Zabbix Redis模板,修改宏变量{$REDIS.URI}为实际连接地址(如tcp://127.0.0.1:6379),支持tcp和unix两种协议。
监控效果验证
数据展示:配置完成后,Zabbix界面可显示Redis的存活性、内存使用、键数量等指标。


通过上述方法,可实现Zabbix Agent2对Redis的全面监控,覆盖存活性、性能指标及日志分析等核心场景。