docker启动logstash失败的问题及解决(可能原因)

 更新时间:2023年08月23日 11:11:31   作者:杨林伟  
这篇文章主要介绍了docker启动logstash失败的问题及解决(可能原因),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

docker启动logstash失败的问题

使用docker启动logstash时,可能会提示成功,然后自动就退出了,我的启动方式如下(以挂载的方式启动):

docker run \
-v /usr/local/logstash/lib/mysql-connector-java-5.1.46.jar:/usr/share/logstash/lib/mysql-connector-java-5.1.46.jar \
-v /usr/local/logstash/config/mysql.conf:/usr/share/logstash/config/mysql.conf \
-v /usr/local/logstash/config/mysql1.conf:/usr/share/logstash/config/mysql1.conf \
-v /usr/local/logstash/config/pipelines.yml:/usr/share/logstash/config/pipelines.yml \
-d --name logstash-cluster logstash:5.6.12

上面的脚本在 7.x版本 是可以启动成功的,但是在 5.x版本 启动不了

下面直接贴出解决方案,把第一行和最后一行改为:

docker run \
-d --name logstash-cluster logstash:7.6.1

改为:

docker run -p 5044:5044 \
-d --name logstash -itd logstash:5.6.12

即:加上了指定端口 -p (指定容器暴露的端口)和 -itd ,这可能是原因之一,其它原因到时遇到在补充。

docker运行logstash

前提条件:docker已安装

1.下载镜像

docker pull logstash:7.17.0

2.编写logstash.yml配置文件

(如果不想用自己的yml配置文件,可以跳过此步骤)

在主机创建/mnt/logstash/config目录,然后在此目录下编写logstash.yml配置文件,内容如下:

path.config: /usr/share/logstash/pipeline    

注意:

(1)7.17版本的管道配置文件默认是在pipeline下,之前版本默认是在conf.d目录下,详细参考官网:https://www.elastic.co/guide/en/logstash/7.17/dir-layout.html

(2)path.config参数名不要写错(写错了的话logstash启动一小段时间后就自动退出了)

3.编写logstash.conf配置文件

在主机创建/mnt/logstash/pipeline目录,然后在此目录下编写logstash.conf配置文件,

内容如下:

input {
  stdin { }
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}
output {
  #elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}

4.前台方式运行logstash

docker run --rm -it -v /mnt/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v /mnt/logstash/pipeline/:/usr/share/logstash/pipeline/ logstash:7.17.0

如果第2步跳过,执行如下命令

docker run --rm -it -v /mnt/logstash/pipeline/:/usr/share/logstash/pipeline/ logstash:7.17.0

这样logstash.conf会自动解析

(先不要后台方式运行,因为如果有问题不好查找原因,前台方式运行会有日志打印;我先把path.config参数名写错了,老是启动不成功,后来通过前台方式运行才找到原因!)

5.测试

输入如下内容:

127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"

再回车出现如下内容就表示配置生效:

{
        "message" => "127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"",
    "httpversion" => "1.1",
       "response" => "200",
       "clientip" => "127.0.0.1",
           "host" => "d0c6b2bee4eb",
           "verb" => "GET",
          "agent" => "\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"",
      "timestamp" => "11/Dec/2013:00:01:45 -0800",
           "auth" => "-",
          "bytes" => "3891",
       "@version" => "1",
       "referrer" => "\"http://cadenza/xampp/navi.php\"",
     "@timestamp" => 2013-12-11T08:01:45.000Z,
          "ident" => "-",
        "request" => "/xampp/status.php"
}

6.后台方式运行

logsashdocker run -itd --name logstash -v /mnt/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v /mnt/logstash/pipeline/:/usr/share/logstash/pipeline/ logstash:7.17.0

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker限制容器的内存使用大小的实战指南

    Docker限制容器的内存使用大小的实战指南

    在使用 Docker 部署服务时,如果不加限制,某个容器可能因为内存泄漏或负载过高,导致主机内存被耗尽,拖垮其他容器甚至整个系统,所以本文给大家介绍了Docker如何限制容器的内存使用大小,需要的朋友可以参考下
    2026-02-02
  • docker容器调用yum报错的解决办法

    docker容器调用yum报错的解决办法

    在本篇文章里小编给大家分享的是关于docker容器调用yum报错的解决办法,有兴趣的朋友们可以参考下。
    2020-03-03
  • Docker-compose 建立ELK集群的实现方法

    Docker-compose 建立ELK集群的实现方法

    这篇文章主要介绍了Docker-compose 建立ELK集群的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Docker 存储管理的几种方式

    Docker 存储管理的几种方式

    本文主要使用三种不同的方式将数据从Docker主机挂载到容器中,分别为卷(volumes),绑定挂载(bind mounts),临时文件系tmpfs,还介绍了数据卷容器、数据卷的备份与恢复,对Docker 存储管理相关知识感兴趣的朋友一起看看吧
    2022-07-07
  • 如何使用docker对容器资源进行限制

    如何使用docker对容器资源进行限制

    这篇文章主要介绍了如何使用docker对容器资源进行限制,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Docker搭建Redis主从复制的实现步骤

    Docker搭建Redis主从复制的实现步骤

    本文主要介绍了Docker搭建Redis主从复制的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • 在Docker中动态配置前端请求地址的三种方式

    在Docker中动态配置前端请求地址的三种方式

    在使用 Docker Compose 部署前后端分离项目时,前端容器需要根据不同的环境(开发、测试、生产)动态请求后端服务的地址,本文给大家介绍了在Docker中动态配置前端请求地址的三种实践方式:构建时注入 vs 运行时动态配置 vs 挂载外部配置文件,需要的朋友可以参考下
    2025-05-05
  • docker安装的mysql修改配置文件方式

    docker安装的mysql修改配置文件方式

    本文描述了在修改MySQL容器配置文件后遇到的异常问题,并给出了解决方法,原来是因为iptables规则冲突导致,重启docker后问题解决
    2026-04-04
  • Docker 创建centos容器集群并实现远程登录功能

    Docker 创建centos容器集群并实现远程登录功能

    这篇文章主要介绍了Docker 创建centos容器集群并实现远程登录,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Docker本地部署SSR前端项目实战指南

    Docker本地部署SSR前端项目实战指南

    本文介绍了Docker本地部署SSR前端项目实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01

最新评论