ELK stack — стандартное решение для сбора логов с серверов, их анализа и визуализации.
Elasticsearch — пакет, отвечающий за поиск и хранение, основа системы.
Kibana — веб-интерфейс для Elasticsearch
Logstash — компонент, позволяющий обрабатывать логи с серверов.
Filebit — клиент, который используется для передачи логов на центральный сервер.
Чтобы стэк работал все компоненты обязательно должны быть одной версии. Основой является Elasticsearch. Клиентские приложения могут работать напрямую с Elasticsearch обмениваясь с ним информацией по RESTapi. Без других компонентов.
Краткое описание Elasticsearch
Эластик основан на библиотеке Apache Lucene. В нем есть 3 типа объектов: Document, Type и Index.
Document — аналог записи в реляционных базах данных
Type — аналог таблицы в реляционных базах данных (Schema)
Index — аналог базы в реляционных БД
Эти 3 типа объектов представлены один за другим в URL при запросе.
Особенности Elasticsearch
Дает RESTfull APIs (GET, POST, PUT)
Представляет собой NoSQL базу
Передает через piplyne syslog на центральный сервер.
shard — один экземпляр приложения, Lucene контейнер с ролью — Primary. Для каждого Primary может быть одна или более реплик (Replica)
Релевантность поиска определяется по такой формуле
Relevance = Term Frequency/ Document Frequency
PUT /testindex
{"settings":
{"number_of_shards": 3,
"number_of_replicas": 1
}}
Всего 6 серверов.
На Primary выполняется запись, чтение всегда со случайно выбранной реплики. Данные с Primary реплицируются на реплики. В случае выхода из строя одного из серверов роли автоматически меняются, конечный пользователь не замечает каких-либо изменений.