Как добавить пользовательские поля / теги при использовании модулей в filebeat для различения источников записей журналов?

Вопрос или проблема

Я использую последнюю версию ELK Stack и у меня установлен Filebeat на разных серверах. Я использую различные модули Filebeat для отправки логов. Учитывая, что каждый модуль обрабатывает конфигурацию пути к лог-файлам, как мне добавить пользовательские поля или теги в качестве метаданных в зависимости от типа лога или источника лога, чтобы затем фильтровать их в Kibana?

В случае доступа к серверу приложений в GlassFish я создал вход, который включает конфигурацию: путь, поля, теги из /etc/filebeat/filebeat.yml, и это работает. Я понимаю, что при включении модулей не обязательно указывать путь логов в входах filebeat.yml.

Но если я использую другой модуль (system, mysql, postgres, apache, nginx и т. д.) для отправки записей в Logstash с помощью Filebeat, как мне вставить пользовательские поля или теги так же, как я делаю в filebeat.yml при конфигурации? Записи в пути логов? Поскольку каждый модуль обрабатывает свою собственную конфигурацию по умолчанию, где даже указывается путь к лог-файлам. Для этого мне нужно каким-то образом условно определить регистрацию (apache, system, mysql, access.log, error.log, ip / hostname, приложение), к которому я обращаюсь, чтобы вставить пользовательские поля, которые я смогу использовать для фильтрации позже в Kibana.

Я столкнулся с такой же проблемой, решил ее с помощью модулей и конвейера обработки с входом логов.

filebeat.inputs:
- type: log
   paths:
    - "/var/log/nginx/access.log*"
  fields:
    level: "INFO"
    application: "nginx"
  fields_under_root: true
  pipeline: "filebeat-7.3.0-nginx-access-default"

Вам нужно загрузить конвейер обработки из модуля, конечно.

Также вы можете изменить настройки модуля nginx.

У меня были такие же требования, поэтому я изменил конфигурацию модуля nginx.

Он находится в этой папке (пример для filebeat 7.3.1)

access log

./filebeat/module/nginx/access/config/nginx-access.yml

error log

./filebeat/module/nginx/error/config/nginx-access.yml

добавьте теги в файл конфигурации yml

type: log
paths:
{{ range $i, $path := .paths }}
 - {{$path}}
{{ end }}
exclude_files: [".gz$"]
#### ТЕГИ ЗДЕСЬ!!!!
tags: ["nginx", "anythinguwant"]
processors:
- add_locale: ~

вставьте описание изображения здесь

Для справки, следующее работает для меня (версия elk stack 7.10.2, файл /usr/share/filebeat/modules.d/nginx.yml):

- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
    input:
      fields:
        custom.event.application: "nginx"
        custom.event.channel: "access"

Ответ или решение

Для добавления пользовательских полей или тегов в конфигурацию Filebeat с использованием модулей, чтобы различать источники логов, можно воспользоваться настройками, которые предоставляет Filebeat для каждого модуля. Ниже я опишу несколько подходов для решения данной задачи.

1. Использование Конфигурационных Файлов Модулей

Каждый модуль Filebeat имеет свою конфигурацию, которая находится в каталоге /usr/share/filebeat/modules.d/. Вы можете внести изменения в соответствующий файл конфигурации модуля (например, nginx.yml, mysql.yml и т.д.) для добавления пользовательских полей или тегов.

Пример для модуля nginx:

- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
    input:
      fields:
        custom.event.application: "nginx"
        custom.event.channel: "access"
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]
    input:
      fields:
        custom.event.application: "nginx"
        custom.event.channel: "error"

В этом примере вы добавляете пользовательские поля custom.event.application и custom.event.channel для доступа и ошибок nginx. Эти поля будут доступны для фильтрации в Kibana.

2. Настройка Пользовательских Полей в filebeat.yml

Если вы хотите добавить пользовательские поля или теги для всех логов, вы можете использовать глобальную секцию fields в файле filebeat.yml. Это добавит указанные поля ко всем событиям, отправляемым Filebeat.

Пример:

fields:
  env: "production"
  application: "my-app"

filebeat.modules:
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]

- module: mysql
  enabled: true
  # остальные настройки

Все события из nginx и mysql теперь будут содержать поля env и application.

3. Использование Процессоров

Filebeat также предоставляет возможность использовать процессоры для добавления полей или тегов до отправки логов в Logstash или Elasticsearch. Пример:

filebeat.modules:
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
    input:
      processors:
        - add_fields:
            target: ''
            fields:
              custom.event.application: "nginx"
              custom.event.channel: "access"

- module: mysql
  enabled: true
  input:
    processors:
      - add_fields:
          target: ''
          fields:
            custom.event.application: "mysql"

Заключение

Для добавления пользовательских полей и тегов в модули Filebeat можно воспользоваться настройками модулей или использовать глобальные поля и процессоры. После внесения изменений важно перезагрузить Filebeat, чтобы изменения вступили в силу. Затем вы сможете фильтровать логи в Kibana на основе добавленных вами полей и тегов.

Убедитесь, что вы проверяете документацию Filebeat по мере обновления для получения самой последней информации о конфигурации и возможностях.

Оцените материал
Добавить комментарий

Капча загружается...