无法通过gelf驱动程序将docker容器连接到logstash
嗨,伙计们,我很难将我的服务器容器日志发送到我的ELK堆栈。没有向logstash发送任何输入,因此我无法设置收集日志的kibana索引。我想我的问题在于端口设置 以下是LAMP堆栈(仅服务器服务)的docker compose yml: 这是docker编写的麋鹿堆栈的yml,基于无法通过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
您需要使用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的日志怎么说?