Враховуючи ці ціни, можливо, краще спробувати відкриті альтернативи на кшталт Kopf чи Elasticsearch-head, про котрі я також згадував у власній статті. Проте, ймовірно, вони менш функціональні і призначені скоріше для моніторингу кластерних ресурсів: шардів, реплік, стану кластеру.
Опишу трохи майбутню тестову архітектуру. Розробники з Elastic рекомендують для Prod-середовищ виділяти окремий сервер для Marvel, адже останній логує свої сервісні дані та проводить певні розрахунки, котрі можуть впливати на завантаження самого Elasticsearch. Тому наша інсталяція складатиметься з вузлу Elasticsearch + Marvel-agent, котрий надсилатиме необхідні сервісні дані до іншого вузлу Elasticsearch, котрий буде зберігати їх локально, а Kibana та Marvel plugin, що будуть встановлені тут же, відображатимуть це все.
Установимо oracle-java8-jdk на обидва вузла кластера:
# add-apt-repository ppa:webupd8team/java
# aptitude update
# aptitude install oracle-java8-installer
# update-java-alternatives -s java-8-oracle
# java -version
java version "1.8.0_66"
Java(TM) SE Runtime Environment (build 1.8.0_66-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
Та Elasticsearch:
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
# echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
# aptitude update
# aptitude install elasticsearch
Додаємо Elasticsearch в автозавантаження:
# update-rc.d elaticsearch defaults 95 10
MONITORED HOST
Установимо marvel-agent на хості, котрий будемо моніторити:
# cd /usr/share/elasticsearch
# bin/plugin install license
# bin/plugin install marvel-agent
Редагуємо elasticsearch.yml, де указуємо на який сервер відправляти дані для Marvel:
# vim /etc/elasticsearch/elasticsearch.yml
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
...
#----------- Marvel ------
marvel.agent.exporters:
id1:
type: http
host: ["http://10.0.3.108:9200"]
Де 10.0.3.108 адреса хосту, на котрому буде зберігатись і відображатись статистика.
У разі, якщо Marvel хост буде представлений кластером Elasticsearch з декількох нод, то в список host варто додати їх адреси, щось на кшталт:
host: ["http://ip1:9200", "http://ip2:9200", "http://ip3:9200"]
Після цього необхідно перевантажити Elasticsearch.
MONITORING HOST
Налаштуємо хост, що прийматиме і відображатиме сервісні дані.
Установимо та додамо в автостарт панель Kibana, адже Marvel - це її розширення:
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list
# apt-get update
# apt-get install kibana
# update-rc.d kibana defaults 95 10
Трішки відредагуємо конфігураційний файл Kibana для роботи на всіх інтерфейсах та укажемо адресу локального Elasticsearch:
# vim /opt/kibana/config/kibana.yml
# Kibana is served by a back end server. This controls which port to use.
server.port: 5601
# The host to bind the server to.
server.host: "0.0.0.0"
elasticsearch_url: "http://localhost:9200"
....
Установимо Marvel плагін до Kibana:
# /opt/kibana/bin/kibana plugin --install elasticsearch/marvel/2.3.4
Версія Marvel має співпадати з версією установленого Elasticsearch. Взагалі всі компоненти, що випускає компанія Elastic, потребують коректних версій для спільної роботи. Скажімо, найновіша версія Elasticsearch не зможе працювати із старішою версією Kibana і, аналогічно, з Logstash. Тобто компоненти необхідно оновлювати всі разом і бажано до останніх версій. Більш того, Elastic не особливо переймається зворотною сумісністю між версіями: підтримку попередніх протоколів прибирають, попередні конфігураційні файли не підходять до новіших версій програм і т.п. І це відбувається без жодних попереджень. Більш того, часом, їхня документація неточна чи неоднозначна, хоча варто визнати, що вона досить якісна.
Усі метрики Marvel також зберігає в Elasticsearch. Відредагуємо конфігураційний файл останнього для роботи на всіх інтерфейсах:
# vim /etc/elasticsearch/elasticsearch.yml
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
...
Перезавантажуємо Kibana та Elasticsearch:
# service elasticsearch restart
# service kibana restart
Налаштуємо через браузер перегляд індексів Marvel в Kibana
Статистика Marvel в Kibana:
Та і сам Marvel:
Для підвищення відмовостійкості Elasticsearch, в котрий пише Marvel, також можна кластеризувати. А панель Kibana можна винести на окремий вузол для зручності, проте також включити в кластер задля балансування запитів. Elasticsearch, що працює на вузлі з Kibana, варто сконфігурувати як вузол без корисних даних (nodata) і без можливості голосу в кластері, для запобігання Split Brain. У такому разі elasticsearch_url в kibana.yml буде також дивитись на localhost.
Ось також стаття про хороші альтернативи Marvel, про котрі я трохи згадав на початку https://blog.codecentric.de/en/2014/03/elasticsearch-monitoring-and-management-plugins/
Посилання:
https://www.elastic.co/guide/en/marvel/current/installing-marvel.html
https://www.elastic.co/guide/en/marvel/current/configuration.html
https://www.elastic.co/guide/en/kibana/current/setup.html
https://www.reddit.com/r/elasticsearch/comments/306eex/elastic_marvel_worth_it/
Немає коментарів:
Дописати коментар