ELK stack


ELK stack — популярное решение для сбора логов с серверов, их анализа и визуализации. Применяется в том числе для очень крупных инсталяций с сотнями и тысячами серверов.


Компоненты ELK stack:


  • Elasticsearch — пакет, отвечающий за поиск и хранение, основа системы.
  • Kibana — веб-интерфейс для Elasticsearch
  • Logstash — компонент, позволяющий обрабатывать логи с серверов.
  • Filebit — клиент, который используется для передачи логов на центральный сервер.


Чтобы стэк работал все компоненты обязательно должны быть одной версии. Основой является Elasticsearch.

Клиентские приложения могут работать напрямую с Elasticsearch обмениваясь с ним информацией по RESTapi, без других компонентов.



Краткое описание Elasticsearch — основного элемента ELK stack


Эластик основан на библиотеке Apache Lucene. В нем есть 3 типа объектов: Document, Type и Index.



Document — аналог записи в реляционных базах данных

Type — аналог таблицы в реляционных базах данных (Schema)

Index — аналог базы в реляционных БД



Эти 3 типа объектов представлены один за другим в URL при запросе.

Особенности Elasticsearch


  • Дает RESTfull APIs (GET, POST, PUT)
  • Представляет собой NoSQL базу
  • Передает через piplyne syslog на центральный сервер





Алгоритм поиска Elasticsearch



Релевантность поиска определяется по такой формуле

Relevance = Term Frequency/ Document Frequency




Репликация ELK и шарды


shard — один экземпляр приложения, Lucene контейнер с ролью Primary. Для каждого Primary может быть одна или более реплик (Replica)

Данные о количестве реплик и шардов можно увидеть в json при запросе, пример:


PUT /testindex
{"settings":
{"number_of_shards": 3,
"number_of_replicas": 1
}
}



В кластере ELK выделяют Primary ноду и реплики.

На Primary ноду всегда выполняется запись, чтение производится со случайно выбранной реплики. Данные с Primary реплицируются на реплики (по тому же принципу работает репликация MySQL).

В случае выхода из строя одного из серверов роли автоматически меняются, конечный пользователь не замечает каких-либо изменений.

Сказать спасибо
Categories: