Стек ELK - дальнейшая десериализация "сообщения", хранящегося в кубернетах. - PullRequest
1 голос
/ 17 июня 2020

У меня есть кластер кубернетов с несколькими микросервисами. Микросервисы регистрируют / экспортируют журналы в формате JSON. Итак, мой стек ELK регистрирует сообщения и визуализирует их в кибане (я использую версию 7.3), и я изо всех сил пытаюсь выполнить дальнейшую десериализацию файла сообщений, поступающих из моих микросервисов, чтобы я мог видеть отдельные поля, извлеченные в поле «сообщение». Например, JSON имеет поля «app» и «logger» - они должны выглядеть так же, как в настоящее время отображаются поля kubernetes. Я настроил filebeat следующим образом, но я не вижу дальнейшей де-сериализации поданного сообщения. Не могли бы вы мне помочь? пожалуйста, обратитесь к моей конфигурации файлового ритма.

=======================

kind: ConfigMap
metadata:
  name: filebeat-config
  labels:
    app: filebeat
data:
  filebeat.yml: |-

    # Enable filebeat config reloading
    filebeat.config:
      modules:
        enabled: true
        #path: ${path.config}/modules.d/*.yml
        reload.enabled: true
        reload.period: 10s

    # Available log levels are: error, warning, info, debug
    logging.level: warning

    # To enable hints based autodiscover, remove `filebeat.inputs` configuration and uncomment this:
    filebeat.autodiscover:
      providers:
        - type: kubernetes
          node: ${NODE_NAME}
          hints.enabled: true
          json.message_key: message
          hints.default_config:
            type: container
            paths:
              - /var/log/containers/*${data.kubernetes.container.id}.log
          templates:
            config:
              json.keys_under_root: true
              json.add_error_key: false

    processors:
      - drop_event:
          when:
              or:
                - equals:
                    kubernetes.namespace: "monitoring"
                - contains:
                    message: "NETWORK"
                - contains:
                    message: "INFO"
      - add_cloud_metadata:
      - add_kubernetes_metadata:
      - add_host_metadata:

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Я вижу, вы хотите использовать filebeat.yml для декодирования JSON. Возможно, вы захотите использовать этот подход. Я отправил это как отдельный ответ, потому что это совершенно другой подход.

filebeat.inputs:
- type: log

  # Change to true to enable this prospector configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - \PATH\TO\LOG\FILES\*

  json.keys_under_root: true
  json.add_error_key: true
  json.message_key: message

PS: Пожалуйста, обратите внимание на правильный отступ для параметров json.

1 голос
/ 17 июня 2020

Пожалуйста, покажите нам файл конфигурации logsta sh.

Я предполагаю, что это может быть достигнуто с помощью следующего кода:

input {
file {
path => "/var/log/containers/*.log"
codec => "json"
  }
}

PS: Если вы видите тег "_jsonparsefailure" и по-прежнему получать документ только в поле сообщения, как и раньше, тогда вам нужно проверить, что введенные вами данные, скорее всего, недействительны JSON.

...