我在 64 位 Fedora 19 机器上的 Zabbix 2.0.6 中遇到了 vfs.file.exists 问题。在撰写本文时,2.0.6 是 Fedora yum 存储库中可用的最新版本。
我想检查文件 /tmp/test 是否存在:
[root@localhost ~]# ls -l /tmp/test
-rw-r--r-- 1 root root 14 Sep 16 10:30 /tmp/test
如果我运行我直接使用 zabbix_agentd 检查,它会正确确定该文件存在:
[root@localhost ~]# zabbix_agentd -t "vfs.file.exists[/tmp/test]"
vfs.file.exists[/tmp/test][/tmp/test] [u|1]
但是,如果我使用 zabbix_get,无论文件是否存在,它总是返回 0:
[root@localhost log]# zabbix_get -s 127.0.0.1 -k "vfs.file.exists[/tmp/test]"
0
这很奇怪,因为当从同一台服务器连接到运行旧版本 Zabbix 代理(1.8.13)的远程计算机(也是 Fedora)时,相同的测试可以完美运行:
[root@localhost log]# zabbix_get -s remote.example.com -k "vfs.file.exists[/tmp/test]"
1
有些事情会起作用:
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "system.uname"
Linux host.example.com 3.9.5-301.fc19.x86_64 #1 SMP Tue Jun 11 19:39:38 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "system.uptime"
237830
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "system.run[whoami]"
zabbix
据我所知,所有 vfs.file.* 键均不起作用:
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "vfs.file.cksum[/tmp/test]"
ZBX_NOTSUPPORTED
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "vfs.file.contents[/tmp/test]"
ZBX_NOTSUPPORTED
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "vfs.file.md5sum[/tmp/test]"
ZBX_NOTSUPPORTED
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "vfs.file.size[/tmp/test]"
ZBX_NOTSUPPORTED
[root@localhost ~]# zabbix_get -s 127.0.0.1 -k "vfs.file.time[/tmp/test]"
ZBX_NOTSUPPORTED
我已经检查过 zabbix 用户可以访问该文件,所以这不是权限问题:
[root@localhost ~]# sudo su -s /bin/bash zabbix
bash-4.2$ whoami
zabbix
bash-4.2$ ls -l /tmp/test
-rw-r--r-- 1 root root 14 Sep 16 10:30 /tmp/test
SELinux 也被禁用。
是我做错了什么,还是这是 Zabbix 特定版本/发行版中的错误?
答案1
在当前版本的 Fedora 中,Zabbix 代理与许多其他系统服务一样,具有私有命名空间/tmp
并且无法查看/tmp
其他进程创建的文件。由于您正在测试,请尝试检查另一个目录中是否存在文件。