最近由于工作需要,要将logstash采集到的数据,经过过滤发送到mq中,直接用默认的logstash镜像并不能支持。查了下资料,发现有相关的插件,可以支持。在此记录一下。
准备阶段
logstash 部署在k8s集群中,之前我们已经通过helm完整的封装,在此我们只需要对于原始镜像去做修改,让它支持stomp output即可。
| 名称 |
地址 |
说明 |
| logstash基础镜像 |
docker.elastic.co/logstash/logstash-oss:7.5.1 |
所用到的基础image |
| logstash-output-stomp |
github.com/kfogle/logstash-output-stomp.git |
stomp 插件,这里用了个网友修改过的,原因是官方插件对https支持不够好 |
现在我们开始下载对应的资源:
1 2 3 4 5 6 7
| #1.下载基础镜像 docker pull docker.elastic.co/logstash/logstash-oss:7.5.1 #2.创建空的工作目录 mkdir workdir #3.下载插件 cd workdir git clone https://github.com/kfogle/logstash-output-stomp.git
|
制作dockerfile
做好以上准备之后可以动手制作镜像了,现在开始编写dockerfile
1 2 3
| #在工作目录下创建dockerfile touch Dockerfile vi Dockerfile
|
Dockerfile 文件如下:
1 2 3 4
| FROM docker.elastic.co/logstash/logstash-oss:7.5.1 COPY ./logstash-output-stomp /usr/share/logstash/logstash-output-stomp RUN echo "gem \"logstash-output-stomp\", :path => \"/usr/share/logstash/logstash-output-stomp\"" >> /usr/share/logstash/Gemfile RUN bin/logstash-plugin install --no-verify
|
编写好之后直接docker build 镜像即可:
1 2
| # -t 后面的镜像名字基于项目自己定这里给出个例子 docker build -t logstash/logstash-oss:7.5.1-plugin .
|
到此,新制作的logstash镜像已经支持stomp output 了。
logstash.conf 示例
这里给出一个 logstash output 例子,看下如何使用:
1 2 3 4 5 6 7 8 9 10 11 12 13
| ... output { if [kubernetes][namespace] == "logtest" { stomp { host => "xxxxxxxxxx-1.mq.us-west-2.amazonaws.com" port => "61614" destination => "/queue/collect_event" user => "xxx" password => "xxxxxx" } } } ...
|
大致使用方法就是这样。