是否可以选择性地将日志文件转发到Splunk中的特定索引。
我想将运行3个服务日志的docker容器转发给Splunk索引器,问题是如果我使用Docker日志记录驱动程序,写入STDOUT的所有数据都会转到相同的索引,并且数据隔离是不可能的。而不是我设置转发器并且能够发送日志但所有都转到相同的索引,我想配置splunk转发器以将特定日志发送到特定索引。
答案 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,将它们写入文件。