Graylog Collector Sidecar 作为非根用户

Posted

技术标签:

【中文标题】Graylog Collector Sidecar 作为非根用户【英文标题】:Graylog Collector Sidecar as nonroot 【发布时间】:2016-09-19 08:08:00 【问题描述】:

我想实现如图左侧所示的架构(因为我想使用 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 权限的地方,但我认为没有配置文件可以做到这一点。所以我查看了collector-sidecar的二进制文件,发现了这个:

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 权限之外,您还有其他解决方案吗?

【问题讨论】:

我建议将您的问题发布到官方 Graylog 社区支持频道:graylog.org/community-support 【参考方案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 新用户:

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

[Service]
User=collector
Group=collector

# systemctl daemon-reload
# systemctl restart collector-sidecar

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

【讨论】:

另一种方法是创建不带 -r 选项的用户并将 sidecar 安装在主目录中;)【参考方案2】:

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

干杯, 马吕斯

【讨论】:

以上是关于Graylog Collector Sidecar 作为非根用户的主要内容,如果未能解决你的问题,请参考以下文章

Graylog-Sidecar

没有配置API令牌 - 启动graylog-sidecar时

Graylog之基本使用

公司使用graylog来收集Docker日志

部署 Graylog 日志系统 - 每天5分钟玩转 Docker 容器技术(92)

搭建Graylog2集群(基于ElasticSearch的日志收集分析平台)