背景
一句话说明需求:
- Redis在配置了requirepass验证后,使用zabbix模板监控时,没有继承自模板的密码宏变量。无法监控成功,监控项报错:“NO AUTH (Authentication required)”。
一句话说明解决:
- 通过宏变量,或者通过zabbix_agent2.conf文件将密码传递给agent,完成认证,获取监控值。
短话长说:
- 使用zabbix提供的
Redis by Zabbix agent 2
模板监控开启认证的redis 7.x服务器时,因为模板中没有配置默认的requirepass宏变量,因此没有直观能填写密码的地方,因此无法成功获取整体的redis监控项。可以尝试两个解决办法: 创建zabbix能成功识别的(命名正确的)宏变量;在zabbix_agent2.conf配置文件中填写密码,传递额外变量给zabbix。
问题截图:
参考文章
【zabbix官方git仓库:redis模板及详细说明】
【Ansible安装zabbix-agent2】
【zabbix官方论坛:Discussion thread for official Zabbix Template Redis】
实际操作
解决方法一(失败,请参考方法二):尝试填写宏变量
- 安装zabbix-agent2可参考我的文章【Ansible安装zabbix-agent2】,其中说明了如何从zabbix官网获取zabbix-agent2的安装包。
- 创建使用redis模板的监控主机。
- 从默认宏变量中填写redis暴露端口:根据实际情况改为自定义端口。仅配置该宏变量,但仍然无法成功获取监控数据,下一步尝试填入密码变量测试。
- 测试新增密码宏变量,此处我尝试了多个自定义命名的宏变量,均无效。
- 尝试修改模板中的监控项,引入我自定义的宏变量也失败。解决办法一宣告失败,后续官方应该会新增默认密码宏变量。
- 宏变量不成功,该解决方法仅供参考。在【zabbix官方git仓库:redis模板及详细说明】也没有说明有关密码的宏变量,如下图。
解决方法二(成功):从zabbix_agent2.conf文件写入变量
-
从“模板管理中”获取对应模板在zabbix官方论坛的相关地址。
-
访问zabbix相关论坛查找解决办法。
访问地址:【zabbix官方论坛:Discussion thread for official Zabbix Template Redis】
-
参考外国同行提出的解决:首先修改zabbix_agent2.conf文件、然后修改宏变量{$REDIS.CONN.URI}
#宏变量为:
{$REDIS.CONN.URI}
#宏变量的值为:
Redis88140
#修改zabbix_agent2.conf文件:
vim /etc/zabbix/zabbix_agent2.conf
#修改以下内容,注释行是官方说明如何插入额外变量。
428 ####### PLUGIN-SPECIFIC PARAMETERS #######
429
430 ### Option: Plugins
431 # A plugin can have one or more plugin specific configuration parameters in format:
432 # Plugins.<PluginName>.<Parameter1>=<value1>
433 # Plugins.<PluginName>.<Parameter2>=<value2>
434 Plugins.Redis.Sessions.Redis88140.Uri=tcp://127.0.0.1:6582
435 Plugins.Redis.Sessions.Redis88140.Password=xxxxxxyourPassword
436 # Mandatory: no
437 # Range:
438 # Default:
- 重启zabbix-agent2服务,等待监控数据刷新。
- 监控数据成功。
结束
相比Prometheus的高自由度、高集成性,zabbix算是傻瓜操作,但很多监控项值得先参考,然后再通过promQL实现。