Как ограничить Filebeat отправкой журналов в ELK только в том случае, если они содержат определенное поле?

#elasticsearch #kubernetes #elastic-stack #filebeat

#elasticsearch #kubernetes #elastic-stack #filebeat

Вопрос:

Я пытаюсь собирать журналы с узлов Kubernetes с помощью Filebeat и отправлять их в ELK ТОЛЬКО в том случае, если журналы происходят из определенного пространства имен Kubernetes.

До сих пор я обнаружил, что вы можете определить процессоры, которые, я думаю, выполняют это. Однако, независимо от того, что я делаю, я не могу ограничить отправленные журналы. Правильно ли это выглядит?

Хм, тогда это выглядит правильно?

 filebeat.config:
  inputs:
    path: ${path.config}/inputs.d/*.yml
    reload.enabled: true
    reload.period: 10s
    when.contains:
      kubernetes.namespace: "NAMESPACE"
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false
  processors:
    - add_kubernetes_metadata:
      namespace: "NAMESPACE"
xpack.monitoring.enabled: true
output.elasticsearch:
  hosts: ['elasticsearch:9200']
  

Несмотря на эту конфигурацию, я все еще получаю журналы из всех пространств имен.

Filebeat выполняется как набор демонов в Kubernetes. Вот пример расширенной записи журнала:https://i.imgur.com/xfTwbhl.png

Комментарии:

1. Вы проверили фильтр удаления? elastic.co/guide/en/beats/filebeat/current /…

2. Нет, но это хорошая идея. Могу ли я указать регулярное выражение, в котором говорится, что все события удаляются, если они не соответствуют определенному пространству имен? Как это будет структурировано?

Ответ №1:

У вас есть несколько вариантов для этого:

  1. Фильтровать данные по filebeat
 processors:
 - drop_event:
     when:
        contains:
           source: "field"
  
  1. Используйте конвейер ввода в elasticsearch:
 output.elasticsearch:
  hosts: ["localhost:9200"]
  pipeline: my_pipeline_id
  

А затем тестировать события в конвейере:

 {
  "drop": {
    "if" : "ctx['field'] == null "
  }
}
  
  1. Используйте фильтр удаления logstash:
 filter {
  if ![field] {
    drop { }
  }
}
  

Комментарии:

1. Спасибо за ваш ответ. Я перепробовал много вариантов первого варианта, который вы перечислили. В конце концов, я решил эту проблему, переместив процессор удаления во входной файл конфигурации из файла конфигурации.

Ответ №2:

В конце концов, я решил эту проблему, переместив процессор удаления во входной файл конфигурации из файла конфигурации.