zabbix_get 执行自定义监控项权限不足问题

本文介绍了在Zabbix监控中遇到的权限问题,即非sudo用户无法使用netstat命令检查sshd服务状态。通过为netstat命令文件添加s位或者将用户加入sudoers文件,成功解决了这个问题,使得Zabbix_get能够正确获取ssh_port的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

监控客户机端配置监控项–检测sshd服务是否开启

[root@centos7-client1 zabbix_agentd.d]# cat sshd.conf 
UserParameter=ssh_port,/bin/bash /server/scripts/check_ssh.sh

[root@centos7-client1 zabbix_agentd.d]# cat /server/check_ssh.sh 
#!/bin/bash
netstat -lntup | grep "sshd" >/dev/null 2>&1
echo $?

监控服务端测试,报错

[root@centos7-server1 ~]# zabbix_get -s 192.168.238.136 -p 10050 -k ssh_port

情况反映

Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.

问题分析

zabbix_get是以zabbix(安装时创建的)身份执行,涉及到权限问题
netstat -p 非sudo用户是无权限使用的

问题解决

给命令文件加s或是将该用户加到sudoers文件下

[root@centos7-client1 zabbix_agentd.d]# chmod +s /bin/netstat

[root@centos7-server1 ~]# zabbix_get -s 192.168.238.136 -p 10050 -k ssh_port
0
<think>嗯,用户在使用Zabbix的template_application_Docker模板时遇到了监控图表无数据的问题。我需要先分析可能的原因,然后给出解决方法。首先,根据引用内容,可能涉及Agent配置、监控定义、数据收集和权限问题。 首先,用户提到监控无数据,可能的原因之一是Agent配置错误。根据引用2,自定义监控需要正确配置Include路径,并确保配置文件被加载。用户需要检查zabbix_agent2.conf中的Include参数,确认模板相关的配置文件是否在正确的目录下,并且语法正确。另外,重启Agent服务是必要的,如引用3所示,重启服务能应用新配置。 其次,Docker环境的问题可能影响数据收集。模板可能依赖于特定的Docker API或命令,比如docker stats。需要确认Agent所在的宿主机是否安装了Docker,并且用户权限是否足够。如果Agent没有权限访问Docker守护进程,可能导致监控无法获取数据。可能需要将zabbix用户加入docker组,或者配置sudo权限。 另外,监控键值和数据收集脚本的正确性也很重要。根据引用2中的例子,UserParameter定义了自定义监控,用户需要检查模板中的键值是否正确,对应的脚本或命令是否存在且可执行。例如,可能需要验证docker info或docker stats命令是否能正常返回数据。 网络连接问题也不能忽视。如果Zabbix Server无法连接到Agent,或者Agent的10050端口被防火墙阻挡,数据无法传输。用户可以使用zabbix_get命令在Server端手动测试监控,如引用1提到的zabbix_get工具,来确认是否能获取数据。 还有数据收集间隔的问题。如果监控的更新间隔设置过长,图表可能显示为无数据,需要检查模板中监控的间隔设置是否合理,比如是否设置为30秒或更短。 最后,Zabbix Server的配置和模板链接是否正确。需要确认主机是否正确链接了template_application_Docker模板,并且没有冲突的模板覆盖设置。同时,检查最新数据页面是否有数据,如果这里也没有,说明问题出在数据收集阶段;如果有数据但图表不显示,可能是图表配置或前端问题。 总结下来,解决步骤应该是:检查Agent配置和权限,验证Docker环境,测试监控键值,检查网络连接,调整数据间隔,确认模板应用正确。每一步都需要逐一排查,确保每个环节都正常运作。</think>### Zabbix Docker模板监控无数据的原因及解决方法 #### 一、常见原因分析 1. **Agent配置未生效** - Docker监控依赖`zabbix_agent2`的Docker插件配置,需确认`zabbix_agent2.conf`中已启用Docker监控模块[^2] - 检查配置文件中是否包含以下内容: ```conf LoadModule=docker Docker.Endpoint=unix:///var/run/docker.sock ``` 2. **Docker权限问题** - Agent需要访问Docker守护进程的Unix套接字文件(`/var/run/docker.sock`),需确保`zabbix`用户拥有权限: ```bash usermod -aG docker zabbix systemctl restart zabbix-agent2 # 重启生效[^3] ``` 3. **监控键值不匹配** - 确认模板中的监控键值(如`docker.data.usage`)与Agent实际支持的键值一致 - 通过命令验证数据采集: ```bash zabbix_get -s 客户端IP -k "docker.containers.discovery" # 测试容器发现[^1] ``` 4. **网络或端口限制** - 检查Zabbix Server与Agent之间的10050端口通信是否正常: ```bash telnet Agent_IP 10050 ``` #### 二、解决步骤 1. **验证Agent配置** - 检查配置文件路径: ```bash grep -i "LoadModule=docker" /etc/zabbix/zabbix_agent2.conf # 确认模块加载[^2] ``` - 重启Agent服务: ```bash systemctl restart zabbix-agent2.service # 应用配置 ``` 2. **调试数据采集** - 手动执行数据采集命令: ```bash zabbix_agent2 -t "docker.containers.running" # 验证键值返回数据 ``` - 若返回`ZBX_NOTSUPPORTED`,需检查Docker接口权限或插件版本兼容性 3. **检查模板关联** - 在Zabbix Web界面确认: - 主机已正确链接`template_application_Docker`模板 - 监控状态为**已启用**且无红色报错标识 4. **日志分析** - 查看Agent日志定位具体错误: ```bash journalctl -u zabbix-agent2 -f # 实时查看日志 ``` #### 三、进阶排查 1. **自定义脚本验证** - 若模板依赖外部脚本,需确认脚本路径和权限: ```bash ls -l /etc/zabbix/zabbix_agent2.d/scripts/ # 检查脚本是否存在[^2] chmod +x /path/to/script.sh ``` 2. **Grafana变量联动问题** - 若图表在Grafana中无数据,需检查Variables配置是否匹配Zabbix监控层级[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值