Как ограничить Filebeat только отправкой журналов в ELK, если они содержат определенное поле? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь собрать журналы с узлов 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 работает как DaemonSet в Kubernetes.Вот пример расширенной записи журнала: https://i.imgur.com/xfTwbhl.png

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

У вас есть варианты номера, чтобы сделать это:

  1. Фильтрация данных по файлу
processors:
 - drop_event:
     when:
        contains:
           source: "field"
  1. Использовать входящий трубопровод в эластичный поиск :
output.elasticsearch:
  hosts: ["localhost:9200"]
  pipeline: my_pipeline_id

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

{
  "drop": {
    "if" : "ctx['field'] == null "
  }
}
  1. Использовать дроп-фильтр logstash :
filter {
  if ![field] {
    drop { }
  }
}
0 голосов
/ 03 апреля 2019

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

...