# Программный стек 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

Вывод должен быть примерно таким:

«elastic_status»

# 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 запустился без ошибок, то на экране появится примерно такое сообщение:

«elsrchubuntu»

# Настройка 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.