如何有选择地将日志文件转发到Splunk中的特定索引?

时间:2018-04-27 17:21:21

标签: docker splunk

是否可以选择性地将日志文件转发到Splunk中的特定索引。

我想将运行3个服务日志的docker容器转发给Splunk索引器,问题是如果我使用Docker日志记录驱动程序,写入STDOUT的所有数据都会转到相同的索引,并且数据隔离是不可能的。而不是我设置转发器并且能够发送日志但所有都转到相同的索引,我想配置splunk转发器以将特定日志发送到特定索引。

1 个答案:

答案 0 :(得分:0)

让我从头开始。在同一容器中运行多个进程是一种反模式。尽量避免使用它。例如,Kubernetes为您的情况提供了一个很好的解决方案,他们可以在同一个Pod中部署两个容器,只需在同一个环回网络接口(127.0.0.1)上的容器之间建立通信,因此对于进程,它将看起来就像他们在同一个容器中运行一样。有关详细信息,请参阅https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/

如果您仍希望在同一容器中拥有所有三个进程,则有两个选项可以将日志包含在不同的索引中:

在索引器上路由

如果您可以识别索引器一侧的日志,您可以像往常一样转发日志,并在索引器端使用transforms.conf将它们路由到特定索引,请参阅http://docs.splunk.com/Documentation/Splunk/latest/Admin/Transformsconf

[nginx_route] 
DEST_KEY = _MetaData:Index 
REGEX = nginx .*
FORMAT = index_nginx

避免容器日志

另一种选择。您可以为日志创建一个卷,您将在容器和转发器(Splunk Universal Forwarder)或我们的收集器(https://www.outcoldsolutions.com)之间共享。并在配置中定义要转发这些日志的索引。在容器中,您需要更改编写日志的方式,而不是stdin,将它们写入文件。

相关问题