无法通过gelf驱动程序将docker容器连接到logstash

无法通过gelf驱动程序将docker容器连接到logstash,docker,logstash,docker-compose,elastic-stack,gelf,Docker,Logstash,Docker Compose,Elastic Stack,Gelf,嗨,伙计们,我很难将我的服务器容器日志发送到我的ELK堆栈。没有向logstash发送任何输入,因此我无法设置收集日志的kibana索引。我想我的问题在于端口设置 以下是LAMP堆栈(仅服务器服务)的docker compose yml: 这是docker编写的麋鹿堆栈的yml,基于 您需要使用gelf输入插件。下面是一个功能性撰写文件的示例: services: logstash: image: docker.elastic.co/logstash/logstash:5.3.1

嗨,伙计们,我很难将我的服务器容器日志发送到我的ELK堆栈。没有向logstash发送任何输入,因此我无法设置收集日志的kibana索引。我想我的问题在于端口设置

以下是LAMP堆栈(仅服务器服务)的docker compose yml:

这是docker编写的麋鹿堆栈的yml,基于


您需要使用gelf输入插件。下面是一个功能性撰写文件的示例:

services:
  logstash:
    image: docker.elastic.co/logstash/logstash:5.3.1
    logging:
      driver: "json-file"
    networks:
      - logging
    ports:
      - "127.0.0.1:12201:12201/udp"
    entrypoint: logstash -e 'input { gelf { } } output { stdout{ } }'    
您可以通过运行以下命令进行测试:

docker run --log-driver=gelf --log-opt gelf-address=udp://127.0.0.1:12201 ubuntu /bin/sh -c 'while true; do date "+%d-%m-%Y %H:%M:%S:%3N"; sleep 1 ; done

并检查logstash容器上的docker日志。

您需要使用gelf输入插件。下面是一个功能性撰写文件的示例:

services:
  logstash:
    image: docker.elastic.co/logstash/logstash:5.3.1
    logging:
      driver: "json-file"
    networks:
      - logging
    ports:
      - "127.0.0.1:12201:12201/udp"
    entrypoint: logstash -e 'input { gelf { } } output { stdout{ } }'    
您可以通过运行以下命令进行测试:

docker run --log-driver=gelf --log-opt gelf-address=udp://127.0.0.1:12201 ubuntu /bin/sh -c 'while true; do date "+%d-%m-%Y %H:%M:%S:%3N"; sleep 1 ; done

检查logstash容器上的docker日志。

我发现了错误,我必须在logstash服务端口定义中指定UDP协议

logstash:
  build: logstash/
  volumes:
    - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
    - ./logstash/pipeline:/usr/share/logstash/pipeline
  ports:
    - "5000:5000/udp"
  environment:
    LS_JAVA_OPTS: "-Xmx256m -Xms256m"
  networks:
    - elk
  depends_on:
    - elasticsearch

我发现了错误,我必须在logstash服务端口定义中指定UDP协议

logstash:
  build: logstash/
  volumes:
    - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
    - ./logstash/pipeline:/usr/share/logstash/pipeline
  ports:
    - "5000:5000/udp"
  environment:
    LS_JAVA_OPTS: "-Xmx256m -Xms256m"
  networks:
    - elk
  depends_on:
    - elasticsearch

当然,我使用的是这个管道配置
input{gelf{port=>5000 type=>docker}}output{elasticsearch{hosts=>“elasticsearch:9200”}
但不起作用尝试输出到stdout而不是elastic,因此您可以确定问题不在logstash和elastic之间,而是在logstash上没有收到任何东西。我告诉你的配置为我工作,因此你可以使用它来找出配置问题所在。logstash的日志是怎么说的?当然我使用的是这个管道配置
input{gelf{port=>5000 type=>docker}}output{elasticsearch{hosts=>“elasticsearch:9200”}
但不工作尝试输出到标准输出,而不是弹性输出,这样您就可以确定问题不在logstash和弹性之间,而是在logstash上没有接收到任何东西。我告诉你的配置为我工作,因此你可以使用它来找出配置问题所在。logstash的日志怎么说?