如何将具有额外属性的日志从docker swarm发送到Graylog(使用Filebeat)

时间:2018-12-04 16:44:32

标签: docker logging docker-swarm filebeat graylog

我正在尝试将docker日志从Java容器发送到graylog保存:

  1. 多行格式
  2. 额外标签

我的当前设置很有趣:

  • 适用于AWS 18.03.0-ce的Docker
  • Graylog 2.4.6
  • Filebeat 6.4.3

现在,使用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)。 ..)。而且我不知道如何完成它。

任何帮助将不胜感激

0 个答案:

没有答案
相关问题