我正在尝试将docker日志从Java容器发送到graylog保存:
我的当前设置很有趣:
现在,使用filbeat docker输入将docker日志发送到graylog,但是除味精和容器ID之外的所有信息在传输中都会丢失。另外,当我尝试从json格式的 docker 插件切换到 log 时,我得到 null 作为Graylog中的消息,且文件拍子没有错误。
我的配置:
filebeat容器:
filebeat:
image: docker.elastic.co/beats/filebeat:6.4.3
user: root
networks:
- tool-net
configs:
- source: filebeat_config
target: /usr/share/filebeat/filebeat.yml
mode: 0644
logging:
driver: json-file
options:
max-size: "10m"
max-file: 7
tag: "filebeat"
volumes:
- "filebeat-data:/usr/share/filebeat/data:rw"
- "/var/lib/docker/containers:/usr/share/dockerlogs/data:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
resources:
limits:
memory: 1200M
cpus: '1.2'
reservations:
memory: 200M
filebeat.yml
filebeat.inputs:
- type: docker
combine_partial: true
containers:
path: '/usr/share/dockerlogs/data/'
ids:
- "*"
scan_frequency: 10s
tail_files: true
enabled: true
encoding: utf-8
multiline.pattern: '^----\s\['
multiline.negate: true
multiline.match: after
# json.keys_under_root: true
# json.add_error_key: true
# json.message_key: log
processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~
output.logstash:
hosts: ["graylog_url:graylog_beats_port"]
我的日志行:
{"log":"JAVA_OPTS: -XX:NativeMemoryTracking=summary -XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics\n","stream":"stdout","attrs":{"tag":"SomeValueINeed"},"time":"2018-12-04T16:36:20.341352823Z"}
现在在graylog中缺少标签字段,因为我想在一个群集上运行多个docker swarm堆栈,所以我需要那些值来过滤Graylog流中的日志msg(例如dev-branch-1,dev-branch-2)。 ..)。而且我不知道如何完成它。
任何帮助将不胜感激