Установка ELK Stack (Elasticsearch, Logstash, Kibana)
Надежное решение для поиска, анализа и визуализации данных.
Elasticsearch распространяет поисковую и аналитическую систему RESTful NoSQL на основе Lucene, облегчённый конвейер обработки данных, Logstash используется для управления событиями и журналами из разных источников, а Kibana, который является веб-приложением, используется для визуализации данных, который работает поверх Elsticsearch.
Минимальные требования
Процессор: 2
Оперативная память: 4Gb
ОС: CentOS/Debian/Ubuntu
В данной статье будет рассмотрен вариант с установкой ELK на систему CentOS 7.
Поскольку многие структуры ELK построены на Java, то память - основной ресурс потребления и чем её больше, тем лучше. Идеальное решение - 64Gb
Процессор менее востребован, но между быстрыми процессорами или несколькими ядрами, выбирайте тот, где больше ядер.
Дополнительный параллелизм, предлагаемый несколькими ядрами, намного перевесит чуть более высокую тактовую частоту.
Дисковая подсистема так же важна, особенно если строится кластерное решение. Использовать зеркалирование не обязательно, поскольку Elastic прекрасно кластеризуется, а сохранив RAID0 можно получить существенный прирост в скорости.
Всё рекомендую использовать SSD-накопители при интенсивной записи.
Установка Java
Компоненты стека ELK работают на Java. Поддерживает как OpenJDK, так и Oracle Java.
Я рекомендую использовать Oracle JDK 1.8.
Загружаем RPM с последней стабильной версией, на момент написания статьи - это 8u201.
1 | 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 |
Установим пакет в систему:
1 | rpm -ivh jdk-8u201-linux-x64.rpm |
Проверяем установку:
1 | # java -version |
Установка Elasticsearch
Elasticsearch — масштабируемая поисковая система полнотекстового поиска и аналитики данных с открытым исходным кодом. Данная утилита позволяет в режиме реального времени хранить, искать и анализировать большие объемы данных.
Приступим к установке компонентов ELK.
Установим и настроим Elasticsearch.
Добавим ключ elastic.co
в систему:
1 | rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch |
Загружаем пакет Elasticsearch с официального сайта:
1 | wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.rpm |
Установим пакет в систему:
1 | rpm -ivh elasticsearch-6.6.2.rpm |
Выполняем базовую конфигурацию Elasticsearch
Редактируем файл /etc/elasticsearch/elasticsearch.yml
Включаем блокировку памяти:
1 | bootstrap.memory_lock: true |
Раскомментируем сетевые настройки сервиса:
1 | network.host: localhost |
Сохраняем файл конфигурации.
Редактируем настройки Elasticsearch
Вносим изменения в конфигурационный файл сервиса /usr/lib/systemd/system/elasticsearch.service
для конфигурации блокировки памяти.
Раскомментируем или добавим параметр:
1 | LimitMEMLOCK=infinity |
А так же расскоментируем параметр MAX_LOCKED_MEMORY
в файле /etc/sysconfig/elasticsearch
1 | MAX_LOCKED_MEMORY=unlimited |
Перезагружаем настройки systemd, добавляем сервис в автозапуск и стартуем:
1 | systemctl daemon-reload |
Проверяем состояние работы сервиса
1 | # lsof -i :9200 -Pn |
Установка Kibana
Kibana — утилита с открытым исходным кодом которая визуализирует работу Elasticsearch. Он используется для взаимодействия с данными, хранящимися в индексах Elasticsearch. Kibana имеет веб-интерфейс, который позволяет быстро создавать и обмениваться динамическими панелями мониторинга, отображающими изменения в запросах Elasticsearch в реальном времени.
Загружаем пакет Kibana с официального сайта:
1 | wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-x86_64.rpm |
Установим пакет в систему:
1 | rpm -ivh kibana-6.6.2-x86_64.rpm |
Редактируем настройки Kibana
Редактируем конфигурационный файл Kibana /etc/kibana/kibana.yml
. Оставляем работать сервис Kibana на локальном IP, а проксировать приложение будем при помощи NGINX.
Раскомментируем строки:
1 | server.port: 5601 |
Сохраняем конфигурационный файл и запускаем сервис:
1 | systemctl enable kibana |
Проверяем состояние раборты сервиса
1 | # lsof -i :5601 -Pn |
Установка Logstash
Logstash — механизм сбора событий, который обеспечивает конвейер в реальном времени. Он может принимать данные из нескольких источников и преобразовывать их в документы JSON.
Загружаем пакет Logstash с официального сайта:
1 | wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.2.rpm |
Установим пакет в систему:
1 | rpm -ivh logstash-6.6.2.rpm |
Запускаем сервис и добавляем в автозагрузку:
1 | systemctl restart logstash |
Конфигурация Logstash зависит от ваших личных предпочтений и плагинов, которые вы будете использовать.
Вы можете найти больше информации о том, как настроить Logstash в официальной документации.
Установка NGINX
Добавляем CentOS 7 Nginx репозиторий.
1 | rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
Установка Nginx.
1 | yum install nginx |
Проверить, что веб-сервер запущен можно по адресу http://example.com/
Мы увидим дефолтную страницу Nginx.
После проверки успешного запуска, добавим сервис в автозагрузку при старте системы.
1 | systemctl enable nginx.service |
Добавим новый виртуальный хост
Создадим новый конфигурационный файл в директории NGINX /etc/nginx/conf.d/elk.devservers.network.conf
1 | server { |
Запускаем NGINX.
1 | systemctl start nginx.service |
Проверяем: