我试图从正在运行的docker容器中获取docker日志。我已经在我的docker compose中将splunk配置为日志记录驱动程序,我知道如果splunk服务器无法访问,那么容器将无法启动。
proxysecurity:
image: test/image
network_mode: host
depends_on:
- zookeeper
ports:
- '8083:8083'
logging:
driver: "splunk"
options:
splunk-url: "http://XX.X2.X3.X1:XXX7/"
splunk-token: "XXXXX5-9CA1-44B8-B9E8-2XXX25"
splunk-format: json
tag: "{{.ImageName}}/{{.Name}}/{{.ID}}"
environment:
XXXCONNECT: localhost:32181
XXXXXRS: http://localhost:8083
现在,如果容器启动并运行时无法访问splunk服务器,是否有任何后备机制,我们可以告诉docker容器在本地登录? 或者有没有办法登录到splunk以及本地内部容器?
答案 0 :(得分:3)
我是Splunk Logging Driver的作者。
如果Splunk不可用,驱动程序会在内存中保留小缓冲区并继续重试。记录缓冲区大小的配置没有驱动程序https://docs.docker.com/engine/admin/logging/splunk/
的官方文档 SPLUNK_LOGGING_DRIVER_BUFFER_MAX
If driver cannot connect to remote server, what is the maximum amount of messages it can hold in buffer for retries.
不幸的是,这并不理想,考虑到这个缓冲区可以很快填充,并且将缓冲区增加到更高的数量可能会影响您的容器。但这就是大多数司机的写作方式。
我已经构建了另一个向Splunk提供日志和指标的解决方案。此解决方案包括带收集器和Splunk Certified Application的微小图像。它建立在json-file
驱动程序之上,这意味着当Splunk不可用时,它将继续从日志文件的位置重试。日志文件可以有自己的轮换设置,可以使用dockerd
daemon configuration进行配置。您可以阅读我们的解决方案Comparing with Splunk Logging Driver的其他好处。以及如何开始Monitoring Docker。