# Программный стек ELK. Часть 1. Elasticsearch
Программный стек ELK — связка из нескольких приложений (Elasticsearch, Logstash, Kibana, Filebeat), позволяющая быстро собирать и обрабатывать всю информацию об обслуживаемой системе.
Elasticsearch — это ядро программного стека ELK, поисковый движок для работы с большими объёмами данных. Он позволяет осуществлять быстрый и эффективный поиск по всему объёму собранных данных. Для сбора системных логов в данной конфигурации стека используется FileBeat, передающий данные в фильтрационную систему Logstash, а для визуализации представляемых данных используется Kibana.
В данной серии инструкций мы рассмотрим установку и настройку всего программного стека ELK на VPS под управлением CentOS или Ubuntu.
Начнём с установки и первичной настройки Elasticsearch. Устанавливать Elasticsearch будем из официальных репозиториев разработчиков на подготовленный к работе VPS с CentOS 8 stream или Ubuntu 20.04. Все необходимые зависимости и дополнительные приложения будут установлены в процессе.
# Установка Elasticsearch
# CentOS
Устанавливать Elasticsearch будем из официального репозитория Elastic. Для этого сначала добавим GPG-ключ на сервер:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
После этого добавим репозиторий в список репозиториев, используемых dnf. Создадим в папке с репозиториями конфигурационный файл, содержащий все сведения о добавляемом источнике:
sudo vi /etc/yum.repos.d/elasticsearch.repo
В открывшемся текстовом файле укажем основные параметры устанавливаемого репозитория:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
Здесь мы указали имя, адрес, откуда устанавливать Elasticsearch, и gpg-ключ. В адресе установки мы указали 7.x
— 7 версию. Если вы хотите установить более свежую версию, проверьте страницу доступных версий (opens new window) и укажите номер версии, который хотите установить.
Теперь переходим к установке:
sudo dnf --enablerepo=elasticsearch install elasticsearch
Эта команда добавит репозиторий Elasticsearch в список репозиториев, из которых возможна установка, и проверит доступность пакета Elasticsearch, после чего предложит установить его.
В процессе установки Elasticsearch установит дополнительные необходимые зависимости, в том числе необходимые для работы версии Open JDK и JVM.
После завершения установки можно добавить Elasticsearch в автозагрузку и запустить:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
После этого проверим статус программы:
sudo systemctl status elasticsearch.service
Вывод должен быть примерно таким:
# Ubuntu
Последовательность действий при установке Elasticsearch на Ubuntu будет примерно такой же, как и при установке на CentOS. Основное отличие — способ добавления репозитория.
Начнём с добавления gpg-ключа:
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
После этого добавим репозиторий в список репозиториев apt. Для этого можно воспользоваться любым текстовым редактором. Мы используем команду echo
:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Обратите внимание, что в данном случае мы тоже устанавливаем 7 версию Elasticsearch.
После добавления репозитория в список источников apt обновим его и запустим установку:
sudo apt update
sudo apt install elasticsearch
После завершения установки запустим Elasticsearch и проверим его статус, чтобы убедиться, что всё работает верно:
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
Если установка прошла как положено, правильные зависимости установились и запустились, и сам Elasticsearch запустился без ошибок, то на экране появится примерно такое сообщение:
# Настройка Elasticsearch
Основные настройки Elasticsearch производятся через конфигурационный файл elasticsearch.yml
, файл конфигурации виртуальной машины Java jvm.options
и файл журнала Elasticsearch log4j2.properties
.
На данном этапе нужно проверить сетевые настройки работы Elasticsearch. Для этого откроем основной конфигурационный файл:
sudo vi /etc/elasticsearch/elasticsearch.yml
Найдём здесь блок Network
, отвечающий за сетевое соединение Elasticsearch. В качестве хоста указан localhost
с номером порта 9200. Оставим именно эти значения, потому что в нашем случае Elastcisearch будет работать только на внутренней машине, доступ к нему будет осуществляться из локальной сети сервера.
В этом же файле в разделе Paths
указаны директории хранения логов работы программы и основных данных, с которыми будет работать Elasticsearch. Программный стек будет работать с большими объёмами данных, поэтому размещать их хранилище нужно там, где будет достаточно дискового пространства.
# Проверка работы Elasticsearch
После проверки сетевых настроек и статуса Elasticsearch (active, enabled) проверим непосредственный доступ к приложению.
Сначала проверим правильность его размещения на сервере. Посмотрим, какое приложение занимает порт 9200, указанный в качестве рабочего порта Elasticsearch:
sudo netstat -tulpn | grep 9200
# Output
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 17895/java
Как видим, порт 9200 локального адреса занят java — это виртуальная машина, на которой запущен Elasticsearch.
Теперь отправим к Elasticsearch curl-запрос:
curl -X GET 'http://localhost:9200'
Результат выдачи должен быть примерно следующим:
# Output
{
"name" : "localhost_name",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "-JKGBFLLS5itNHDokWrPzQ",
"version" : {
"number" : "7.17.1",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
"build_date" : "2022-02-23T22:20:54.153567231Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Это означает, что Elasticsearch запущен и правильно функционирует, возвращая по запросу свои основные данные.
Теперь можно переходить к следующей части нашей инструкции, в которой мы будем устанавливать компонент для визуализации получаемых данных — Kibana.