множественный ввод темы кафки в logstash с разными фильтрами и кодеками - PullRequest
0 голосов
/ 22 апреля 2019

Я настраиваю лося с помощью kafka и хочу отправить журнал через 2 раздела kafka (topic1 для windowslog и topic2 для wazuh log) для logstash с другим кодеком и фильтром.Я попытался с помощью нижеуказанной конфигурации ввода для logstash, но он не

input {
  kafka {
    bootstrap_servers => "kafka:9000"
    topics => ["windowslog", "system02"]
    decorate_events => true
    codec => "json"
    auto_offset_reset => "earliest"
  }
  kafka {
    bootstrap_servers => "kafka-broker:9000"
    topics => ["wazuh-alerts"]
    decorate_events => true
    codec => "json_lines"
  }
}

и файл filter.conf:

filter {
  if [@metadata][kafka][topic] == "wazuh-alerts" {
    if [data][srcip] {
      mutate {
        add_field => [ "@src_ip", "%{[data][srcip]}" ]
    }
    }
    if [data][aws][sourceIPAddress] {
      mutate {
        add_field => [ "@src_ip", "%{[data][aws][sourceIPAddress]}" ]
      }
    }
    geoip {
      source => "@src_ip"
      target => "GeoLocation"
      fields => ["city_name", "country_name", "region_name", "location"]
    }
    date {
      match => ["timestamp", "ISO8601"]
      target => "@timestamp"
    }
    mutate {
      remove_field => [ "timestamp", "beat", "input_type", "tags", "count", "@version", "log", "offset", "type", "@src_ip", "host"]
    }
  }
}

Как я могу это сделать?

1 Ответ

2 голосов
/ 22 апреля 2019

Попробуйте использовать теги для каждого input и отфильтруйте их по этим тегам.

Например:

input {
  kafka {
    bootstrap_servers => "kafka-broker:9000"
    topics => ["wazuh-alerts"]
    decorate_events => true
    codec => "json_lines"
    tags => ["wazuh-alerts"]
  }
}

А в ваших фильтрах и выходных данных вам нужно условие, основанное на этом теге.

filter {
    if "wazuh-alerts" in [tags] {
        your filters
    }
}
output {
    if "wazuh-alerts" in [tags] {
        your output 
    }
}
...