Как отправить журналы с дополнительными атрибутами в graylog из Docker Swarm (используя filebeat) - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь отправить журналы Docker из Java-контейнеров в Graylog с сохранением:

  1. Многострочный формат
  2. Дополнительные теги

Мои текущие настройки следующие::

  • Докер для aws 18.03.0-ce
  • Graylog 2.4.6
  • Filebeat 6.4.3

Прямо сейчас докерЖурналы отправляются в GrayLog с помощью ввода док-станции filbeat, но любая информация, кроме msg и идентификатора контейнера, теряется при передаче.Также, когда я пытаюсь переключиться с docker plugin на log с форматированием json, я получаю null в виде сообщения в graylog без ошибок в filebeat.

Моя конфигурация:

Контейнер 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 прямо сейчас поле тега отсутствует, так как я хочу запустить несколько стеков стека докеров на одном рое. Мне нужны эти значения для фильтрации сообщений MSG в потоках Graylog (например, dev-branch-1, dev-branch-2 ...).И я понятия не имею, как это сделать.

Любая помощь будет очень признателен

...