Graylog Collector Sidecar as nonroot

时间:2016-09-19 08:08:01

标签: graylog nxlog

我想实现这个图片左侧显示的架构(因为我想使用NXLog):http://docs.graylog.org/en/2.1/_images/sidecar_overview.png。 我已经在我的RedHat服务器上安装了Graylog2,现在我正在研究收集器边车的配置。由于我的工作是nonroot,我不得不更改collector-sidecar和NXLog的配置文件中的几个目录。现在问题:每次我尝试启动收集器边车,我得到INFO /错误消息:

    [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权限外,您是否看到了解决方案?

2 个答案:

答案 0 :(得分:1)

默认情况下,sidecar使用root帐户。创建一个新用户作为“收集者”并给他提供他需要的文件,并在自己周围玩耍时切换到他的用户将解决此问题。

创建用户并授予所有权/权限:

# useradd -r collector
# chown -R collector /etc/graylog
# chown -R collector /var/cache/graylog
# chown -R collector /var/log/graylog
# setfacl -m u:collector:r /var/log/*

告诉systemd有关新用户的信息:

# nano /etc/systemd/system/collector-sidecar.service

[Service]
User=collector
Group=collector

# systemctl daemon-reload
# systemctl restart collector-sidecar

从现在开始,后端(NXLog或Beats)将使用用户收集器。希望它对您有用!

答案 1 :(得分:0)

目前,这是您在代码中看到的固定路径。要以普通用户身份运行它,您还必须在默认NXlog配置文件中进行一些更改。目前我会建议您编写自己的NXlog文件,并在没有Sidecar的情况下使用它。但是你可以创建GH问题,以便我们可以添加所需的选项。

干杯, 的Marius