Logstash: использование смещения как document_id

У меня есть следующая настройка:

FileBeat -> Logstash -> Elasticsearch -> Kibana (все 5.1.1)

Когда я загружаю файл журнала (JSON) в Filebeat и пытаюсь увидеть его в интерфейсе Kibana, одни и те же журналы добавляются 3-4 раза (дубликаты). После проверки журналов FileBeat я узнал, что это может быть связано с тем, что Filebeat не получает подтверждения для отправленных журналов и поэтому продолжает отправлять повторно. чтобы перестать получать дубликаты документов, я думаю, мне придется использовать document_id в файле конфигурации logstash.
т.е.

output
{ 
    elasticsearch { 
        document_id => "%{offset}"
        index => "ap-index"
        hosts => ["localhost:9222"]
    }
}

Мой вопрос: уникально ли поле смещения для каждого документа? и это правильный способ перестать получать дубликаты?


person Vishal Kinjavdekar    schedule 11.04.2017    source источник


Ответы (1)


Если Filebeat не получает подтверждения от Logstash, это признак или проблема, и вы должны сначала найти основную причину (в вашем конвейере может быть перегрузка).

Смещение не является уникальным, если у вас есть более одного файла журнала или выполняется ротация журналов. Если ваши сообщения журнала содержат метки времени, я рекомендую использовать фильтр отпечатков пальцев для создания хэша сообщения. Затем используйте хэш отпечатка пальца в качестве идентификатора документа в Elasticsearch.

input {
  beats {
    port => 5044
  }
}

filter {
  fingerprint {
    method => "SHA1"
    key    => "some_random_hmac_key"
    source => ["[beat][hostname]", "offset", "message"]
    concatenate_sources => true
    target => "[@metadata][id]"
  }
}

output {
  elasticsearch {
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
    document_id =>"%{[@metadata][id]}"
  }
}
person A J    schedule 11.04.2017
comment
У меня может быть больше одного файла журнала, и да, может быть ротация журнала. Также моя временная метка может быть не уникальной. В таком случае хеш может быть разным?? - person Vishal Kinjavdekar; 13.04.2017
comment
Вы можете изменить этот хэш, чтобы включить смещение, заданное Filebeat. Если ваши временные метки имеют низкое разрешение, например, в секундах, я бы сделал это. Я обновлю ответ, чтобы включить смещение. - person A J; 13.04.2017