docker-部署logstach

本文档介绍了如何在Docker环境下部署和配置Logstash,用于日志收集。Logstash会监听Beats输入插件的消息,并将日志发送到指定端口。配置可以通过绑定挂载卷或使用环境变量进行,允许自定义输入和输出管道。默认配置会监听5044端口,日志输出到stdout。建议确保配置文件具有正确的权限并选择合适的日志存储方式。
摘要由CSDN通过智能技术生成

前言

logstach是一个采集日志的框架,本文介绍如何在docker上部署logstash系统。更多信息请参考官方文档

管道配置

必须将管道配置放在Logstash可以找到的位置。默认情况下,容器将在/usr/share/logstash/pipeline/中查找管道配置文件。

在本例中,我们使用绑定装载的卷通过docker run命令提供配置:

docker run --rm -it -v ~/pipeline/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:7.9.2

然后,Logstash将解析主机目录~/pipeline/中的每个文件作为管道配置。

如果您不为Logstash提供配置,它将使用一个最小的配置来运行,该配置侦听来自Beats输入插件的消息,并将接收到的任何消息反馈给stdout。在本例中,启动日志将类似于以下内容:

Sending Logstash logs to /usr/share/logstash/logs which is now configured via log4j2.properties.
[2016-10-26T05:11:34,992][INFO ][logstash.inputs.beats    ] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
[2016-10-26T05:11:35,068][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
[2016-10-26T05:11:35,078][INFO ][org.logstash.beats.Server] Starting server on port: 5044
[2016-10-26T05:11:35,078][INFO ][logstash.pipeline        ] Pipeline main started
[2016-10-26T05:11:35,105][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

这是映像的默认配置,在/usr/share/logstash/pipeline/logstash.conf中定义。如果这是您观察到的行为,请确保正确地选择了您的管道配置,并且替换logstash.conf或整个pipeline目录。

设置

该映像提供了几种配置设置的方法。传统的方法是提供一个定制的logstash。但是也可以使用环境变量来定义设置。

绑定装载设置文件

设置文件也可以通过绑定挂载提供。Logstash希望在/usr/share/logstash/config/上找到它们。

有可能提供一个完整的目录,包含所有需要的文件:

docker run --rm -it -v ~/settings/:/usr/share/logstash/config/ docker.elastic.co/logstash/logstash:7.9.2

或者,可以挂载单个文件:

docker run --rm -it -v ~/settings/logstash.yml:/usr/share/logstash/config/logstash.yml docker.elastic.co/logstash/logstash:7.9.2

绑定装载的配置文件将在容器中保留与它们在主机系统上相同的权限和所有权。确保设置权限,使文件具有可读性,理想情况下,容器的logstash用户(UID 1000)不可写。

自定义镜像

当然,绑定装载的配置并不是唯一的选择。如果你喜欢不可变的基础设施的方法,你可以准备一个自定义镜像包含你的配置使用Dockerfile像这样:

FROM docker.elastic.co/logstash/logstash:7.9.2
RUN rm -f /usr/share/logstash/pipeline/logstash.conf
ADD pipeline/ /usr/share/logstash/pipeline/
ADD config/ /usr/share/logstash/config/

一定要替换或删除自定义映像中的logstash.conf,这样就不会从基本映像保留示例配置。

环境变量配置

在Docker下,可以通过环境变量配置Logstash设置。当容器启动时,一个助手进程检查环境中可以映射到Logstash设置的变量。在环境中找到的设置将合并到logstash中。作为容器启动。

为了与容器编排系统兼容,这些环境变量都以大写字母书写,并以下划线作为分隔符

下面是一些翻译示例:

表1 Docker环境变量示例

环境变量Logstash设置
PIPELINE_WORKERSpipeline.workers
LOG_LEVELlog.level
MONITORING_ENABLEDmonitoring.enabled

通常,设置文档中列出的任何设置都可以使用这种技术配置。

使用环境变量定义设置会导致logstash.yml需要在适当的地方修改。如果使用logstash.yml是从主机系统绑定装载的,这种行为可能不受欢迎。因此,不建议将绑定挂载技术与环境变量技术结合使用。最好选择一个定义Logstash设置的方法。

Docker默认

使用Docker镜像时,以下设置有不同的默认值:

http.host0.0.0.0
monitoring.elasticsearch.hostshttp://elasticsearch:9200

设置monitoring.elasticsearch.hosts未在-oss镜像中定义。

这些设置在默认的logstash.yml中定义。可以使用自定义logstash.yml或通过环境变量覆盖它们。

如果用自定义版本替换logstash.yml,请确保将上述默认值复制到自定义文件中,如果您想保留它们的话。如果没有,它们将被新文件“屏蔽”。

日志配置

在Docker下,Logstash日志默认为标准输出。要改变这种行为,请使用上面的任何技术替换/usr/share/logstash/config/log4j2.properties上的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值