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

Logstash在docker中执行

1、拉取镜像

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

复制代码
1
2
docker search logstash
复制代码
1
2
docker pull docker.elastic.co/logstash/logstash:7.10.1
2、运行Logstash
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
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文件路径配置

复制代码
1
2
3
4
5
6
7
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容器

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
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

进入容器执行更新

复制代码
1
2
3
4
5
6
7
# 进入正在运行的容器 docker exec -it logstash /bin/bash # 在容器中执行 logstash-plugin update logstash-input-jdbc # 完成更新后退出容器 exit

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

复制代码
1
2
3
4
5
6
7
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

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

复制代码
1
2
docker restart logstash

最后

以上就是粗暴饼干最近收集整理的关于Logstash在docker中执行和解决Logstash7在JDK11的运行环境下加载jdbc驱动报错的问题的全部内容,更多相关Logstash在docker中执行和解决Logstash7在JDK11内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部