我是靠谱客的博主 粗暴饼干,最近开发中收集的这篇文章主要介绍Logstash在docker中执行和解决Logstash7在JDK11的运行环境下加载jdbc驱动报错的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Logstash在docker中执行

1、拉取镜像

官网关于docker获取logstash文档:https://www.elastic.co/guide/en/logstash/7.10/docker.html
也可以通过docker search查询拉取的镜像

docker search logstash
docker pull docker.elastic.co/logstash/logstash:7.10.1 
2、运行Logstash
docker run -it -d 
    -p 5044:5044 
    -p 9600:9600 
    --name logstash 
    --privileged=true  
    --restart=always  
    -m 2048m 
    --memory-swap=2724m 
    -e ES_JAVA_OPTS="-Duser.timezone=Asia/Shanghai" 
    -v /home/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml 
    -v /home/logstash/config:/usr/share/logstash/config 
    docker.elastic.co/logstash/logstash:7.10.1

注意--privileged=true参数,privileged=true使容器内的root拥有真正的root权限,在-v /home/logstash/config:/usr/share/logstash/config时需要用到,否则logstash将获取不到指定的/usr/share/logstash/config文件夹下的内容

logstash-input-jdbc插件问题

若使用7.0.x-7.4.x的版本,其自带的logstash-input-jdbc插件有bug,在JDK11的环境下运行时会无法正常加载jdbc的驱动。
详见:
https://github.com/elastic/logstash/issues/11147
https://github.com/logstash-plugins/logstash-input-jdbc/pull/356

该问题在logstash-input-jdbc的4.3.18版本被修复,而Logstash自带的logstash-input-jdbc插件是在Logstash7.51版本对logstash-input-jdbc插件进行了更新了。

如果必须要使用7.0.x-7.4.x版本的Logstash就需要通过logstash-plugin命令Logstash更新自带的logstash-input-jdbc。

更新logstash-input-jdbc插件版本

logstash.yml中先不做conf文件路径配置

node.name: logstash
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: ["192.168.1.1:9200"]
xpack.monitoring.enabled: true
#path.config: /usr/share/logstash/config/*.conf
path.logs: /var/log/logstash

启动docker容器

docker run -it -d 
    -p 5044:5044 
    -p 9600:9600 
    --name logstash 
    --privileged=true  
    --restart=always  
    -m 2048m 
    --memory-swap=2724m 
    -e ES_JAVA_OPTS="-Duser.timezone=Asia/Shanghai" 
    -v /home/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml 
    -v /home/logstash/config:/usr/share/logstash/config 
    docker.elastic.co/logstash/logstash:7.2.0

进入容器执行更新

# 进入正在运行的容器
docker exec -it logstash /bin/bash 
# 在容器中执行
logstash-plugin update logstash-input-jdbc
# 完成更新后退出容器
exit

插件更新完成后开启logstash.yml中的conf文件路径配置

node.name: logstash
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: ["192.168.1.1:9200"]
xpack.monitoring.enabled: true
path.config: /usr/share/logstash/config/*.conf
path.logs: /var/log/logstash

重新启动容器,加载配置文件

docker restart logstash

最后

以上就是粗暴饼干为你收集整理的Logstash在docker中执行和解决Logstash7在JDK11的运行环境下加载jdbc驱动报错的问题的全部内容,希望文章能够帮你解决Logstash在docker中执行和解决Logstash7在JDK11的运行环境下加载jdbc驱动报错的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部