如何在Docker上设置ELK中的logstash 并设置公网传输信息

2024年3月22日
500 次阅读
admin

前言

在之前的文章中。我们介绍了如何在Docker上进行部署ELK中的kibana和Es服务。那么在ELK环境中。不可缺少的还是有logstash的服务。那么我们该如何在Docker上去部署对应的Logstash服务呢?
Docker上部署EK服务。


Docker镜像拉取

docker pull docker.elastic.co/logstash/logstash:8.12.2

此处需要注意的是。你的ELK中的所有服务。必须是相同的版本。否则可能会有不兼容的情况。下面以8.12.2为例子


Docker镜像启动。查看日志

docker run -d --name=logstash logstash:8.12.2

此处为什么需要直接启动镜像。因为当启动镜像后。它才会生成一些文件。方便我们copy出来。启动镜像后。一般来说会报错。因为我们的配置实际上还是存在问题的。所以我们需要将Docker容器中的文件Copy出来


Docker文件从镜像中copy出来

docker cp logstash:/usr/share/logstash /mnt/elk/logstash/

文件Copy出来后。我们需要对文件进行修改。上面的命令就是指将logstash容器中的/usr/share/logstash路径Copy到/mnt/elk/logstash/路径上去。后面的路径是自己的路径。


Docker配置文件修改。

我们进入到logstash的配置文件目录中去。随后。我们需要修改两个文件。

  • 1.conf文件夹中的logstash.yml文件
http.host: "0.0.0.0"
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: password
xpack.monitoring.elasticsearch.hosts: [ "ip" ]

  • 2.pipline文件夹中的logstash.conf文件
input {
    tcp {
        port => 5044 //此处注意需要和docker映射出来的端口匹配
        codec => json
    }
}

output {
    elasticsearch {
        hosts => "ip"
        user => "elastic"
        password => "password"
        index => "fastapiblogjp_log"
        }
}

让Docker容器启动指定目录下的配置

docker run -d \
  --name=logstash \
  --restart=always \
  -p 5044:5044 \
  -v /data/elk7/logstash:/usr/share/logstash \   #冒号前面的是你copy出来的配置路径
  -v /var/log/messages:/var/log/messages \
  logstash:8.12.2

评论区

0 / 500
* 为必填项