Надежное решение для поиска, анализа и визуализации данных.
Elasticsearch распространяет поисковую и аналитическую систему RESTful NoSQL на основе Lucene, облегчённый конвейер обработки данных, Logstash используется для управления событиями и журналами из разных источников, а Kibana, который является веб-приложением, используется для визуализации данных, который работает поверх Elsticsearch.
Процессор: 2
Оперативная память: 4Gb
ОС: CentOS/Debian/Ubuntu
В данной статье будет рассмотрен вариант с установкой ELK на систему CentOS 7.
Поскольку многие структуры ELK построены на Java, то память - основной ресурс потребления и чем её больше, тем лучше. Идеальное решение - 64Gb
Процессор менее востребован, но между быстрыми процессорами или несколькими ядрами, выбирайте тот, где больше ядер.
Дополнительный параллелизм, предлагаемый несколькими ядрами, намного перевесит чуть более высокую тактовую частоту.
Дисковая подсистема так же важна, особенно если строится кластерное решение. Использовать зеркалирование не обязательно, поскольку Elastic прекрасно кластеризуется, а сохранив RAID0 можно получить существенный прирост в скорости.
Всё рекомендую использовать SSD-накопители при интенсивной записи.
Компоненты стека ELK работают на Java. Поддерживает как OpenJDK, так и Oracle Java.
Я рекомендую использовать Oracle JDK 1.8.
Загружаем RPM с последней стабильной версией, на момент написания статьи - это 8u201.
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.rpm |
Установим пакет в систему:
rpm -ivh jdk-8u201-linux-x64.rpm |
Проверяем установку:
# java -version java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) |
Elasticsearch — масштабируемая поисковая система полнотекстового поиска и аналитики данных с открытым исходным кодом. Данная утилита позволяет в режиме реального времени хранить, искать и анализировать большие объемы данных.
Приступим к установке компонентов ELK.
Добавим ключ elastic.co
в систему:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch |
Загружаем пакет Elasticsearch с официального сайта:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.rpm |
Установим пакет в систему:
rpm -ivh elasticsearch-6.6.2.rpm |
Редактируем файл /etc/elasticsearch/elasticsearch.yml
Включаем блокировку памяти:
bootstrap.memory_lock: true |
Раскомментируем сетевые настройки сервиса:
network.host: localhost http.port: 9200 |
Сохраняем файл конфигурации.
Вносим изменения в конфигурационный файл сервиса /usr/lib/systemd/system/elasticsearch.service
для конфигурации блокировки памяти.
Раскомментируем или добавим параметр:
LimitMEMLOCK=infinity |
А так же расскоментируем параметр MAX_LOCKED_MEMORY
в файле /etc/sysconfig/elasticsearch
MAX_LOCKED_MEMORY=unlimited |
Перезагружаем настройки systemd, добавляем сервис в автозапуск и стартуем:
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch |
# lsof -i :9200 -Pn COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 5751 elasticsearch 201u IPv4 27935 0t0 TCP 127.0.0.1:9200 (LISTEN) |
Kibana — утилита с открытым исходным кодом которая визуализирует работу Elasticsearch. Он используется для взаимодействия с данными, хранящимися в индексах Elasticsearch. Kibana имеет веб-интерфейс, который позволяет быстро создавать и обмениваться динамическими панелями мониторинга, отображающими изменения в запросах Elasticsearch в реальном времени.
Загружаем пакет Kibana с официального сайта:
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-x86_64.rpm |
Установим пакет в систему:
rpm -ivh kibana-6.6.2-x86_64.rpm |
Редактируем конфигурационный файл Kibana /etc/kibana/kibana.yml
. Оставляем работать сервис Kibana на локальном IP, а проксировать приложение будем при помощи NGINX.
Раскомментируем строки:
server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200" |
Сохраняем конфигурационный файл и запускаем сервис:
systemctl enable kibana systemctl start kibana |
# lsof -i :5601 -Pn COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 5853 kibana 18u IPv4 27799 0t0 TCP 127.0.0.1:5601 (LISTEN) |
Logstash — механизм сбора событий, который обеспечивает конвейер в реальном времени. Он может принимать данные из нескольких источников и преобразовывать их в документы JSON.
Загружаем пакет Logstash с официального сайта:
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.2.rpm |
Установим пакет в систему:
rpm -ivh logstash-6.6.2.rpm |
Запускаем сервис и добавляем в автозагрузку:
systemctl restart logstash systemctl enable logstash |
Конфигурация Logstash зависит от ваших личных предпочтений и плагинов, которые вы будете использовать. Вы можете найти больше информации о том, как настроить Logstash в официальной документации.
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
yum install nginx |
Проверить, что веб-сервер запущен можно по адресу http://example.com/
Мы увидим дефолтную страницу Nginx.
После проверки успешного запуска, добавим сервис в автозагрузку при старте системы.
systemctl enable nginx.service |
Создадим новый конфигурационный файл в директории NGINX /etc/nginx/conf.d/elk.devservers.network.conf
server { listen 80; server_name elk.devservers.network; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } |
systemctl start nginx.service |
Проверяем: