Elasticsearch предоставляет механизм хранения данных и их поиска, Kibana — веб-интерфейс для работы с данными, хранящимися в Elasticsearch, Logstash — инструмент для преобразования полученных от агента логов и их передачи в Elasticsearch. Filebeat — агент для пересылки логов серверу. Таким образом, связка Elasticsearch + Kibana + Logstash (или ELK Stack) является инструментом по получению и хранению журналов.
Настройка
Подготовка сервера
Отключаем SELinux:
setenforce 0
Правим файл по пути /etc/selinux/config
меняем строку enabled на disabled

Установка Java
Все программные продукты стека ELK разработаны на Java, поэтому не будут работать без соответствующей платформы на сервере. Нашлась 11 версия Java хотя уже есть по новее.
yum install java-11-openjdk
Проверяем:
java --version

Настройка Elasticsearch
Переходим на страницу загрузки Elacticsearch и копируем ссылку на последнюю версию пакета

С данными санкциями не забываем включить какой ни будь VPN, а то при скачивание вылететь страница 403

Скачиваем по сылке с помощью wget
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.2-x86_64.rpm
Устанавливаем Эластик
rpm -ivh elasticsearch-8.17.2-x86_64.rpm
После установки нужно сохранить пароль авторизации эластика он будет использоваться дальше.

Пароль для superuse elastic: vm06k*FHTs1btUwHeT1A
Если решим сменить пароль для пользователя elastic вводим команду
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
Добавляем в автозапуск
systemctl enable elasticsearch
Проверяем работу еластика
curl -k -u elastic:vm06k*FHTs1btUwHeT1A http://localhost:9200
где elastic:vm06k*FHTs1btUwHeT1A — логин elastic и пароль, который мы получили после установки.
Должны увидеть следующее:

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

Не забываем включить какой ни будь VPN, а то при скачивание вылететь страница 403.
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.17.2-x86_64.rpm
Устанавливаем Kibana
rpm -ivh kibana-8.17.2-x86_64.rpm
Открываем на редактирование конфигурационный файл:
mcedit /etc/kibana/kibana.yml
Редактируем 3 параметра:
server.port: 5601 server.host: "192.168.1.100" server.name: "ELK" elasticsearch.hosts: ["http://192.168.1.100:9200"]
- server.port: 5601 На каком порту будет висеть Kibana
- server.host: IP машины
- server.name: Имя, как он будет определятся
- elasticsearch.hosts: По какому порту будет доступен.
Добавляем в автозапуск Kibana и запускаем ее:
systemctl enable kibana systemctl start kibana
Открываем браузер и переходим по ссылке http://<IP-адрес сервера>:5601. Мы должны увидеть форму ввода токена.

Переходим на сервер и вводим команду для получения токена:
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
На экране отобразится последовательность из символов — копируем ее и вставляем в Kibana. Кликаем по Configure Elastic:

Откроется окно с вводом проверочного кода. Возвращаемся на сервер и вводим команду:
/usr/share/kibana/bin/kibana-verification-code

Нажимаем Verify — начнется процесс настройки. После его завершения мы увидим окно ввода логина и пароля. На этом пока останавливаемся и переходим к настройке Logstash.
Logstash
Переходим на страницу загрузки Logstash и копируем ссылку на последнюю вервию пакета RPM:

Не забываем включить какой ни будь VPN, а то при скачивание вылететь страница 403.
Скачиваем пакет:
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.17.2-x86_64.rpm
Устанавливаем
rpm -ihv logstash-8.17.2-x86_64.rpm
Добавляем автозапуск и запускаем сервис:
systemctl enable logstash systemctl start logstash
Настройка Logstash
Настройки для logstash хранятся в каталоге /etc/logstash/conf.d в файлах формата JSON. Для конфигурации используются следующие секции:
- input (входные данные).
- filter (фильтры).
- output (выходные данные).
Для каждой из них мы создадим свой файл. Открываем сперва input.
Расположение mcedit /etc/logstash/conf.d/input.conf
input { beats { port => 5044 } }
Далее открываем filter
Расположение mcedit /etc/logstash/conf.d/filter.conf
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
Далее открываем output
Расположение mcedit /etc/logstash/conf.d/output.conf
output { elasticsearch { sniffing => true manage_template => false hosts => ["localhost:9200"] user => "elastic" password => "6oDQ=NDfs0342usE" index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
Перезапускаем сервис logstash и проверяем статус.
systemctl restart logstash systemctl status logstash
Проверяем слушает ли порт
ss -tunlp | grep 5044
Увидим что то вроде этого.

Установка и настройка клиента Filebeat
По аналогии как и с предыдущими приложениями скачиваем с ресурса загрузки Filebeat, копируем ссылку.

Не забываем включить какой ни будь VPN, а то при скачивание вылететь страница 403
Вставляем ссылку и качаем.
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.2-x86_64.rpm
Устанавливаем пакет:
rpm -ihv filebeat-8.17.2-x86_64.rpm
Настройка Filebeat
Открываем конфигурационный файл filebeat расположенный по пути.
mcedit /etc/filebeat/filebeat.yml
Находим раздел filebeat.inputs, в нем type: log или type: filestream. Нам интересны две опции — это enabled и paths:
filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log #- c:\programdata\elasticsearch\logs\* - /var/log/secure - /var/log/messages
в данном примере мы включили опцию сбора лога (enabled: true) и добавили отправку логов безопасности (/var/log/secure) и системных событий (/var/log/messages).
Находим опцию output.elasticsearch и комментируем 2 строки, так как мы собираемся отправлять логи через Logstash, нам они будут мешать.
#output.elasticsearch: # Array of hosts to connect to. #hosts: ["localhost:9200"]
Находим настройку отправки лога в Logstash и снимаем комментарии, меняем адрес сервера logstash и добавляем строки с template — должно получиться:
output.logstash: # The Logstash hosts hosts: ["localhost:5044"]
Разрешаем автозапуск filebeat и стартуем сервис:
systemctl enable filebeat systemctl start filebeat
Просмотр логов в Kibana
Открываем наш веб-интерфейс с кибаной. Вводим логин elastic и пароль, который мы получили с помощью команды elasticsearch-reset-password.
Нажимаем на 3 полоски что бы открылось меню, потом нажимает Discover

В открывшемся окне нажимаем на стрелочку вниз. Для выпадающего меню и нажимаем на кнопку Create a date view.

В открывшемся окне вводим название сборщика Filebeat, и индекс поиска по базе. Выведет список доступных на текущее время.

Теперь выбираем из списка элемент который мы подгрузили filebeat.

Теперь можно наслаждается логированием в веб интерфейсе, а не в консоле.