【发布时间】:2020-09-28 08:27:29
【问题描述】:
我有一个带有 docker-compose 和弹性堆栈的设置。我的“主”容器正在运行一个 Django 应用程序(还有一些用于度量、证书等的容器)。
日志记录本身适用于此设置,但我在 Kibana 中没有容器标签或标签。所以我无法区分来自不同容器的日志(除非我知道我在寻找什么)。
如何配置 logstash 或 logspout 以使用它们来自的容器标记或标记所有日志?在最好的情况下标记容器图像和容器 id。
我尝试为容器添加标签,但这并没有改变任何东西。我还尝试了使用驱动程序 syslog 和标签指定的日志记录,但这也不起作用。
我想我必须制作一个特定的 logstash 配置并在那里做一些事情?
下面是我当前的 docker-compose.yml
version: '2'
services:
# django container
web:
build: .
command: gunicorn backend.wsgi:application --bind 0.0.0.0:8001 --log-level debug
restart: unless-stopped
container_name: web
depends_on:
- logspout
expose:
- 8001
env_file:
- ./environments/web.test.env
image: mycontainer
labels:
container: "web"
com.example.service: "web"
logspout:
image: gliderlabs/logspout:v3.2.11
command: 'udp://logstash:5000'
restart: unless-stopped
links:
- logstash
volumes:
- '/var/run/docker.sock:/tmp/docker.sock'
depends_on:
- elasticsearch
- logstash
- kibana
logstash:
image: logstash:7.9.1
restart: unless-stopped
environment:
- STDOUT=true
links:
- elasticsearch
expose:
- 5000
depends_on:
- elasticsearch
- kibana
command: 'logstash -e "input { udp { port => 5000 } } output { elasticsearch { hosts => elasticsearch } }"'
kibana:
image: kibana:7.9.1
restart: unless-stopped
links:
- elasticsearch
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200
ports:
- 5601:5601
depends_on:
- elasticsearch
elasticsearch:
image: elasticsearch:7.9.1
restart: unless-stopped
ports:
- 9200:9200
- 9300:9300
environment:
- node.name=elasticsearch
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- cluster.initial_master_nodes=elasticsearch
任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: docker docker-compose logstash elastic-stack