Я установил кластер Elasticsearch с одним выделенным главным узлом, двумя соответствующими ведущими узлами данных и одним координирующим узлом. Количество реплик установлено равным одной.
В Logstash есть два конвейера, каждый из которых получает сообщения системного журнала от брандмауэра, конвертирует их в JSON и передает их в любой из узлов данных. Я не создаю явно UUID для документов.
Grafana подключена к координирующему узлу для получения данных из кластера.
Все идет нормально. Но я заметил, что в Grafana я вижу каждый документ дважды. Я предполагаю, что это неверно, но я понятия не имею, в чем может быть проблема.
Я проверил вывод Logstash и не обнаружил копий, поэтому я предполагаю, что дублирование происходит в кластере. Кто-нибудь может мне здесь намекнуть? Нужно ли добавлять к документам идентификатор перед индексированием?
Спасибо Генри
Оказалось, я неправильно понял, как работает Logstash.
Помещение двух файлов конфигурации в каталог logstash "conf.d" [1], содержащий разделы "input {}", "filter {}" и "output {}", не означает, что вы запускаете два конвейера.
Вместо этого Logstash объединил все файлы в этом каталоге и теперь нашел два отдельных модуля вывода elasticsearch. Вот почему он написал все документы для обоих моих узлов ES. Когда я тестировал ранее, я смотрел только на один из выходов, поэтому не увидел дубликатов.
Простое добавление явного идентификатора документа не было решением, а лишь очень плохим обходным решением, поскольку каждый документ сохранялся и немедленно перезаписывался базой данных, что приводило к огромной трате ресурсов.
Теперь я использую только один файл конфигурации с двумя двумя входами, одним фильтром и одним выходом ES, в котором оба узла указаны в параметре хоста.
Надеюсь, это поможет другим, у кого есть похожие проблемы.
С уважением, Генри
[1] .deb пакет