Подписка на блог

Расширьте границы знаний о Linux и станьте настоящим гиком

Установка стека ELK на CentOS

Подготовка сервера

Для загрузки установочных файлов во время установки пакетов необходимо иметь установленный wget на системе, обычно он сразу предустановлен.
1. Установка wget

sudo yum install wget

2. Настройка брандмауэра
Открываем порты 5044, 5601 для работы ELK.
5044 — порт Logstash, 5601 — порт Kibana.

sudo firewall-cmd --permanent --add-port={5044,5601}/tcp
sudo firewall-cmd --reload

3. Отключение SELinux
При установке ELK рекомендуется отключить SELinux из-за возможных конфликтов, блокировок доступа к файлам и портам, сложностей настройки политик безопасности и для упрощения диагностики проблем. Отключаем двумя командами, где первая команда отключает до перезагрузки система, а вторая команда отключает навсегда.

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

Установка Java

Все компоненты стека ELK написаны на языке Java, поэтому они требуют наличия соответствующей платформы на сервере для корректной работы.

1. Установка openjdk

sudo yum install java-11-openjdk

2. Проверяем

java --version

Должно выйти что-то подобное

openjdk 11.0.18 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.10-3.el9) (build 11.0.18+10-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.10-3.el9) (build 11.0.18+10-LTS, mixed mode, sharing)

Установка Elasticsearch

1. Загрузка RPM пакета.
Заходим на страницу загрузки Elasticsearch и копируем ссылку на самую свежую версию пакета RPM. И скачиваем:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-x86_64.rpm

Если ваш сервер расположен на территории России, то при скачивании получим ошибку 403, т. к. они закрыли доступ на скачивание с российских ip адресов. В этом случае поможет скачивание с помощью прокси.
2. Установка RPM пакета

sudo rpm -ivh elasticsearch-*.rpm

После успешной установки вы должны увидеть подобное сообщение

----------------- Security autoconfiguration information --------------------
...
The generated password for the elastic built-in superuser is : 3O#9cYap&%5#627a
...
-----------------------------------------------------------------------------

где 3O#9cYap&%5#627a — пароль для пользователя elastic, поэтому сохраните его.

Если хотите поменять данный пароль, то это можно сделать данной командой:

sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

2. Запуск Elasticsearch
Разрешаем автоматический запуск сервиса и активируем его:

sudo systemctl enable elasticsearch --now

3. Проверка работоспособности сервера

curl -k -u elastic:3O#9cYap&%5#627a https://localhost:9200

где elastic:3O#9cYap&%5#627a — это логин:пароль, которые мы получили после установки.

Мы должны увидеть что-то на подобии этого:

{
  "name" : "server",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "P0wbroKxSUOJLv-X0ZOUew",
  "version" : {
    "number" : "8.12.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "48a287ab9497e852de30327444b0809e55d46466",
    "build_date" : "2024-02-19T10:04:32.774273190Z",
    "build_snapshot" : false,
    "lucene_version" : "9.9.2",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

Установка Kibana

1. Загрузка RPM пакета.
Перейдите на страницу загрузки Kibana и скопируйте ссылку на самую последнюю версию пакета RPM.

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.12.2-x86_64.rpm

2. Установка RPM пакета

sudo rpm -ivh kibana-*.rpm

3. Настройка Kibana
Редактируем конфигурационный файл /etc/kibana/kibana.yml и редактируем параметр server.host, чтобы хост слушал тот интерфейс, который нам необходим:

server.host: 10.10.1.10

4. Запуск Kibana

systemctl enable kibana --now

Далее открываем веб-браузер и переходим по указанной ссылке: http://:5601. После этого на экране должна появиться форма для ввода токена.
Заходим на сервер и вводим команду для получения токена:

sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

Появится набор символов — скопируйте его и вставьте в Kibana. Затем нажмите по «Configure Elastic».
Появится окно для ввода проверочного кода. Вернемся на сервер и выполним команду:

sudo /usr/share/kibana/bin/kibana-verification-code

После завершения процесса вы получите шестизначный код. Введите его в поле на экране Kibana и нажимаем Verify, начнется процесс настройки. По завершению этого процесса появится окно для ввода логина и пароля. Далее мы перейдем к настройке Logstash.

Установка Logstash

1. Загрузка RPM пакета.
Переходим на страницу загрузки Logstash и копируем ссылку на последнюю вервию пакета RPM:

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.12.2-x86_64.rpm

2. Установка RPM пакета

sudo rpm -ivh logstash-*.rpm

3. Запуск Logstash.

sudo systemctl enable logstash --now

4. Настройка Logstash.
Конфигурационные данные для Logstash хранятся в директории /etc/logstash/conf.d в файлах JSON. Для настройки используются три основные секции:

  1. input (входящие данные).
  2. filter (обработка данных).
  3. output (исходящие данные).

Для каждой из них мы будем создавать отдельный файл.
input.conf

input {
  beats {
    port => 5044
  }
}

filter.conf

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

output.conf

output {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Выполняем перезапуск сервиса Logstash:

sudo systemctl restart logstash

Спустя примерно минуту проверяем работоспособность сервиса:

ss -tunlp | grep 5044

И должны увидеть что-то подобное

tcp  LISTEN   0   128   :::5044   :::*   users:(("java",pid=11745,fd=114))
Подписаться на блог
Отправить
Поделиться