docker - RSyslog/Syslog-ng-在容器内运行日志收集器

标签 docker logging syslog rsyslog syslog-ng

可以说,我们有一个Kubernetes集群(正在生产中),它记录到Logstash。

我们希望将日志的特定部分发送到我们的远程Splunk计算机(VM)。

设计是添加Splunk forwarder来收集日志并将其转发。

我们可以只运行splunk forwarder in a docker container并公开它在k8s集群中有一个服务。

,但我希望将日志收集器与Splunk转发器分离,并在侧车容器中运行更轻便的Log Collector(如RsyslogSyslog-ng),该容器将与Splunk转发器(或将来可能替换它的任何其他转发器)共享一个卷)。

在寻找解决方案时,我发现了一些似乎尚未准备就绪的项目(下面列出)。

对我而言,解耦日志收集器似乎是一种琐碎的设计模式,但是由于缺乏稳定的官方解决方案,我开始怀疑也许是有原因的。

另一方面,也许更现代(且更轻便)的解决方案(如fluentd)接管了Syslog遗留解决方案。

有任何想法吗?

Rsyslog-docker项目:

https://github.com/rsyslog/rsyslog-docker

https://github.com/jumanjihouse/docker-rsyslog

https://github.com/deoren/rsyslog-docker

https://github.com/camptocamp/docker-rsyslog-bin/blob/master/Dockerfile

https://github.com/megastef/rsyslog-logsene

Syslog-ng-docker项目:

https://github.com/mumblepins-docker/syslog-ng-alpine

https://hub.docker.com/r/balabit/syslog-ng/ <-看起来是最稳定的解决方案。

最佳答案

有点晚,但也许会帮助某人。

您可以使用logstash sidecar通过HTTP(Splunk HEC)将日志转发到splunk。
logstash容器可以与其他容器共享卷并遵循日志文件。

在每个新日志中,它将转发给Splunk。
这是logstash.conf文件(logstash的输入和输出配置文件)的示例:

input {
 file {
  path => "${LOGS_FILE_PATH}"
  start_position => "beginning"
 }
}

 http {
  http_method => "post"
   url => "http://XX.XX.XX.XX:8088/services/collector/event"
   headers => ["Authorization", "Splunk XXXXX-XXXX-XXXXX-XXXXX"]
   mapping => {
    "event" => "%{[message]}"
   }
 }
}

有关配置logstash的更多信息:
https://www.elastic.co/guide/en/logstash/current/docker-config.html

关于docker - RSyslog/Syslog-ng-在容器内运行日志收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346815/

相关文章:

docker - 如何使用cirrus-ci创建docker multiarch list ?

php - Symfony 服务器 :run in php Docker container

docker - docker 是否验证图像?如果是这样,它是如何实现的?

multithreading - 尝试重新定义 IO::Tee::PRINT 以确保线程安全

python - 日志记录模块不写入文件

c - 进程线程被 __pthread_enable_asynccancel () 卡住

json - golang 从 json 字符串中获取 key 的有效方法/lib,并使用此 key 执行 geoip,然后将 geoip 信息添加到 json

amazon-web-services - AWS EC2 实例中的 Kubernetes 仪表板?

linux - 了解系统日志

java - ch.qos.logback.core.util.DynamicClassLoadingException : Failed to instantiate type ch. qos.logback.classic.net.SMTPAppender