Filebeat не отправляет данные в Logstash - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь отправить оповещения из Snort IDS в Elasticsearch, поэтому я использую 3 технологии:

Мой файл конфигурации filebeat имеет этот код внутри:

input {
beats {
    port => 5044
}

} фильтр {

if [type] == "snort" {

    # parse the message into individual fields
    grok {
        match => { "message" => "(?<ts>.*\d{2}:\d{2}:\d{2})\s(?<host>.*?)\s.*?\s\[(?<generator_id>.*?)::(?<signature_id>.*?):.*?\]\s(?<signature>.*?)\s\[Classification:\s(?<classification>.*?)\]\s\[Priority:\s(?<priority>.*?)\].*?{(?<protocol>.*?)\}\s(?<source_ip>.*?):(?<source_port>.*?)\s-\>\s(?<destination_ip>.*?):(?<destination_port>.*)" }
    }

    # remove the original message if parsing was successful
    if !("_grokparsefailure" in [tags]) {
        mutate {
            remove_field => [ "message" ]
        }
    }

    # parse the timestamp and save in a new datetime field
    if [ts] {
        date {
            match => [ "ts", "MMM dd HH:mm:ss" ]
            target => "sys_timestamp"
        }

        # remove the original timestamp if date parsing was successful
        if !("_dateparsefailure" in [tags]) {
            mutate {
                remove_field => [ "ts" ]
            }
        }
    }
}

} output {

# save events to Elasticsearch with the uuid as the document id
elasticsearch {
    hosts => ["localhost:9200"]
manage_template => false
    index => "teste-%{+YYYY-MM-dd}"
}

}

Я ожидаю увидеть журналы оповещений snort при проверке "http://localhost:9200/ola-*/_search?pretty",, однако оповещения не получены. Я изо всех силчтобы решить эту проблему ... Я понятия не имею, в чем проблема.

Заранее спасибо!

1 Ответ

0 голосов
/ 03 февраля 2019

Какая версия вашего стека?Ваш файл конфигурации filebeat имеет как filebeat.prospectors, так и filebeat.inputs, начиная с версии 6.3, вы должны использовать filebeat.inputs вместо filebeat.prospectors.

Также конфигурация document_type была удалена начиная с версии 6.0, возможно, ваше сообщениене имеет поля с именем type со значением snort, которое является вашим основным фильтром в конвейере logstash.Лучше фильтровать ваши сообщения, используя теги.

Вместо этого используйте это в своем filebeat.yml.

filebeat.inputs:
- type: log
  paths:
    - /var/log/snort/*.log
  tags: ["snort"]

И измените свой фильтр logstash, просто используйте if "snort" in [tags] вместо if [type] == "snort"

Ваш вывод отправляет любое полученное вами сообщение в индекс с именем teste-%{+YYYY-MM-dd}, почему вы выполняете поиск по индексу с именем ola-*?Вам следует выполнить поиск по индексу teste-*.

Я рекомендую запустить конвейер с выводом stdout, чтобы посмотреть, что происходит.

Просто поместите это в свой конвейер, чтобыпосмотрите, получаете ли вы какое-либо сообщение и как эти сообщения.

output {
  stdout { }
}
...