Стек ELK от резинки великолепен! В настоящее время многие компании полагаются на elasticsearch для поиска и анализа своих данных в режиме реального времени, kibana для визуализации этого анализа или поиска и logstash как конвейер обработки данных, который может принимать в качестве входных данных различные типы данных, фильтровать их и затем отправлять в какую бы заначку вы ни предпочли.

Библиотеки плагинов ELK богаты, но пока есть только стабильный плагин для вывода / записи в mongo , а в феврале 2018 г. отсутствовал новый плагин для ввода в mongo, но он зависит от JDBC Java, а elastic не предоставляет необходимый JDBC-диск mongodb! Таким образом, вы в конечном итоге попытаетесь найти рабочую и дешевую версию, которая может быть сложной и дорогой. Не говоря уже обо всех ошибках, связанных с Java, в которые вы можете попасть. Это оставляет нам два последних варианта:

  1. Монго-коннектор:

Приличная библиотека на основе Python, но, к сожалению, не обновлялась почти год, не говоря уже о том, что она не поддерживает Elasticsearch версии 6+ из коробки.

2. Транспортер:

Отличная и часто обновляемая библиотека, но на самом деле она не синхронизирует данные между mongodb и Elasticsearch в реальном времени! Это означает, что работа будет выполнена после завершения синхронизации. Единственный обходной путь - запустить его несколько раз, что создаст ненужную нагрузку на ваши серверы. Так что используйте транспортер, если вы ищете только одноразовую синхронизацию!

Синхронизация в реальном времени с Monstache:

Monstache - это демон синхронизации, написанный на Go, который непрерывно индексирует ваши коллекции MongoDB в Elasticsearch. А вот как реализовать Monstache за несколько шагов:

Примечание. Эти шаги предназначены для серверов на базе Ubuntu, те же шаги можно выполнить для любого другого сервера, но убедитесь, что вы используете правильные команды для вашего типа сервера.

Шаг 1:

Убедитесь, что вы зашли на свой сервер. Вы можете установить go, запустив

sudo apt-get install golang-go

Шаг 2:

Загрузите последнюю версию Monstache отсюда. Разархивируйте папку. Внутри папки вы найдете папку для каждого типа машины, в нашем случае linux-amd64 для Ubuntu. Запомните путь к этой папке. Если вы не хотите хранить ненужные файлы, переместите содержимое папки, относящейся к вашему серверу (linux-amd64 для Ubuntu), в любую другую папку на вашем сервере, используя FTP или любой другой метод, и запомните путь ( он нам понадобится на третьем шаге).

Шаг 3:

Экспортируйте свой путь в файл .profile вашего сервера, отредактировав его, в Ubuntu это ~ / .bashrc, где вам нужно внести изменения.

sudo vi ~/.bashrc

Добавьте в файл следующую строку, рассмотрите путь, который я просил вас держать под рукой на втором шаге

export PATH=“/home/ubuntu/build/linux-amd64:$PATH”

Обратите внимание, что путь заканчивается именем папки, связанным с типом вашего сервера.

Не забудьте указать источник файла вашего профиля

source ~/.bashrc

Выполните следующую команду, чтобы убедиться, что все настроено правильно, если это правильно, она должна вернуть вам версию вашей установки Monstache.

monstache -v

Шаг 4:

Monstache работает, отслеживая Mongodb oplog, вы можете узнать больше о mongodb oplog, но это не является целью этого учебника, проще говоря, oplog сохраняет запись любых изменений, происходящих в объекте mongodb. , и сохраняет с этим изменением _id измененного объекта. Рекомендую узнать больше об oplog.

Чтобы убедиться, что ваш mongodb запускается с активным oplog, вам нужно запустить его с параметром master как true, вы можете установить это в файле mongodb.conf или просто добавив - master к mongo при запуске

mongod --master

Шаг 5 и последний:

Запустите Monstache, просто набрав в терминале

monstache

По умолчанию monstache подключается к Elasticsearch и MongoDB на локальном хосте на портах по умолчанию и начинает отслеживать журнал операций MongoDB.

Дополнительные параметры:

И mongodb oplog, и Monstache поставляются с несколькими опциями, одно из изменений, которое вы могли бы рассмотреть, - это размер oplog mongodb, особенно если вы собираетесь использовать его в задаче с интенсивным использованием данных. Также рекомендуется часто очищать oplog mongodb, чтобы сэкономить место на вашем диске. Обратите внимание, что очистка журнала oplog вовсе не означает, что Elasticsearch удалит проиндексированный объект из своего индекса.

Monstache также поставляется с файлом конфигурации, который вы можете найти здесь

monstache -f /path/to/config.toml

Вы можете проверить значение каждой конфигурации здесь. Например, namespace-regex и namespace-exclude-regex могут оказаться полезными, если вы хотите отфильтровать, что индексировать в Elasticsearch.

Готово! По умолчанию Monstache создает индекс для каждой коллекции со следующим синтаксисом

db.collection

Итак, если имя вашей базы данных - test, а ваша коллекция - data, индекс будет test.data.

Я надеюсь, что это было полезно, не стесняйтесь задавать любые вопросы или делиться любым другим подходом с сообществом. И наконец, спасибо Ryan Wynn за создание Monstache.