我想实现如图左侧所示的架构(因为我想使用 NXLog):http ://docs.graylog.org/en/2.1/_images/sidecar_overview.png 。我已经在我的 RedHat 服务器上安装了 Graylog2,现在我正在处理收集器边车的配置。由于我以非 root 身份工作,我不得不更改收集器边车和 NXLog 的配置文件中的几个目录。现在问题来了:每次我尝试启动收集器边车时,我都会收到信息/错误消息:
[gunge@bsul0959 bin]$ ./graylog-collector-sidecar -c /opt/ansible/sidecar/etc/graylog/collector-sidecar/collector_sidecar.yml
INFO[0000] Using collector-id: 13a3d80f-cb69-4391-8520-7a760b9b964e
INFO[0000] Fetching configurations tagged by: [linux apache syslog]
ERRO[0000] stat /var/run/graylog/collector-sidecar: no such file or directory
INFO[0000] Trying to create directory for: /var/run/graylog/collector-sidecar/nxlog.run
ERRO[0000] Not able to create directory path: /var/run/graylog/collector-sidecar
INFO[0000] Starting collector supervisor
ERRO[0010] [UpdateRegistration] Sending collector status failed. Disabling `send_status` as fallback! PUT http://127.0.0.1:12900/plugins/org.graylog.plugins.collector/collectors/13a3d80f-cb69-4391-8520-7a760b9b964e: 400 Unable to map property tags.
Known properties include: operating_system
在这个启动过程之后,我的 Graylog Web 界面上会出现一个收集器,但如果我中止启动过程,收集器会再次消失。在启动过程中,它尝试在/var/run/graylog/collector-sidecar中创建一个路径,但由于我不是 root,所以它不能。因此,他无法在该目录中创建 nxlog.run。我已经尝试将路径更改为不需要 root 权限的地方,但我认为没有配置文件可以做到这一点。所以我查看了收集器边车的二进制文件,发现了这个:
func (nxc *NxConfig) ValidatePreconditions() bool {
if runtime.GOOS == "linux" {
if !common.IsDir("/var/run/graylog/collector-sidecar") {
err := common.CreatePathToFile("/var/run/graylog/collector-sidecar/nxlog.run")
if err != nil {
return false
}
}
}
return true
}
看来,该路径已编码到应用程序中,并且无法配置其他路径。除了获得 root 权限之外,您是否看到了解决方案?