Elasticsearch + Kibana + Logstash на Rocky Linux

Используемые термины: Elasticsearch , Rocky Linux .

Если в двух словах, Elasticsearch предоставляет механизм хранения данных и их поиска, Kibana — веб-интерфейс для работы с данными, хранящимися в Elasticsearch, Logstash — инструмент для преобразования полученных от агента логов и их передачи в Elasticsearch. Таким образом, связка Elasticsearch + Kibana + Logstash (или ELK Stack) является инструментом по получению и хранению журналов. При этом поддерживаются разные платформы (Windows, Linux, BSD).

В данной инструкции мы рассмотрим пример установки серверной части ELK на Linux CentOS / Rocky. Также мы настроим сбор логов с помощью Filebeat в CentOS, Ubuntu, Windows.

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

Прежде чем начать, подготовим к установке и настройке наш сервер.

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

В процессе установки пакетов нам понадобиться скачивать установочные файлы. Для этого в системе должен быть установлен wget:

yum install wget

2. Настройка брандмауэра

Открываем порты для работы ELK:

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

firewall-cmd —reload

где:

  • 5044 порт, на котором слушаем Logstash.
  • 5601 — Kibana.

3. SELinux

Отключаем SELinux двумя командами:

setenforce 0

sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config

* первая команда выключит систему безопасности до перезагрузки сервера, вторая — навсегда.

Установка Java

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

Выполним установку LTS-версии openjdk:

yum install java-17-openjdk

Проверяем:

java —version

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

openjdk 17.0.13 2024-10-15 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.13.0.11-1) (build 17.0.13+11-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.13.0.11-1) (build 17.0.13+11-LTS, …

Подробнее процесс описан на странице Установка OpenJDK на Linux .

Elasticsearch

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

… и скачиваем по ней сам пакет:

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

* в моем случае была версия 8.9.1 .

Мы можем получить ошибку ERROR 403: Forbidden , так как загрузка файлов с официального сайта для российский IP-адресов может быть заблокирована. Используем VPN, прокси или браузер Tor.

После устанавливаем эластик на наш сервер:

rpm -ivh elasticsearch-*.rpm

По завершении инсталляции мы должны были увидеть сообщение типа:

—————— Security autoconfiguration information ———————

The generated password for the elastic built-in superuser is : qVeTdew73OFkaZn_VCwp

——————————————————————————

* где qVeTdew73OFkaZn_VCwp — пароль для пользователя elastic. Его записываем — он нам пригодится позже.

Если мы захотим сменить данный пароль, вводим:

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

Разрешаем автозапуск сервиса и запускаем его:

systemctl enable elasticsearch —now

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

curl -k -u elastic:qVeTdew73OFkaZn_VCwp https://localhost:9200

* где elastic:qVeTdew73OFkaZn_VCwp — логин elastic и пароль, который мы получили после установки.

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

{
«name» : «monitoring»,
«cluster_name» : «elasticsearch»,
«cluster_uuid» : «ddE_7u9zRBGvufj1Wgdjvw»,
«version» : {
«number» : «8.9.1»,
«build_flavor» : «default»,
«build_type» : «rpm»,
«build_hash» : «a813d015ef1826148d9d389bd1c0d781c6e349f0»,
«build_date» : «2023-08-10T05:02:32.517455352Z»,
«build_snapshot» : false,
«lucene_version» : «9.7.0»,
«minimum_wire_compatibility_version» : «7.17.0»,
«minimum_index_compatibility_version» : «7.0.0»
},
«tagline» : «You Know, for Search»
}

Идем дальше.

Kibana

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

Скачиваем по ней пакет для установки kibana:

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

Устанавливаем приложение:

rpm -ivh kibana-*.rpm

Открываем на редактирование конфигурационный файл:

vi /etc/kibana/kibana.yml

Редактируем параметр host:

server.host: 192.168.1.10

* в данном примере мы говорим, что сервер должен слушать на интерфейсе 192.168.1.10 .

Разрешаем автозапуск 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

Мы получим 6-ти значный код. Вводим его в окне Kibana:

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

Logstash

Процесс установки Logstash аналогичен — переходим на страницу загрузки программного продукта, копируем ссылку на пакет RPM:

Скачиваем пакет на нашем сервере:

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

… и устанавливаем его:

rpm -ivh logstash-*.rpm

Разрешаем автозапуск и стартуем сервис:

systemctl enable logstash

systemctl start logstash

Настройка Logstash

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

  1. input (входные данные).
  2. filter (фильтры).
  3. output (выходные данные).

Для каждой из них мы создадим свой файл.

vi /etc/logstash/conf.d/input.conf

input {
beats {
port => 5044
}
}

* в данном примере мы настроили logstash для приема логов на порту 5044.

vi /etc/logstash/conf.d/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» ]
}
}
}

vi /etc/logstash/conf.d/output.conf

output {
elasticsearch { hosts => [«localhost:9200»]
hosts => «localhost:9200»
manage_template => false
index => «%{[@metadata][beat]}-%{+YYYY.MM.dd}»
document_type => «%{[@metadata][type]}»
}
}
output {
elasticsearch {
hosts => [«https://localhost:9200»]
ssl => true
ssl_certificate_verification => false
manage_template => false
index => «%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}»
user => elastic
password => «qVeTdew73OFkaZn_VCwp»
}
}

Перезапускаем сервис logstash:

systemctl restart logstash

Проверяем статус:

systemctl status logstash

Немного подождем — приложению нужно около 1 минуты, чтобы запуститься. После, введя команду:

ss -tunlp | grep 5044

… мы увидим что-то на подобие:

tcp LISTEN 0 128 :::5044 :::* users:((«java»,pid=11745,fd=114))

Сервис запустился и готов принимать логи.

Установка и настройка клиента

Для отправки логов на сервер, мы будем использовать пакет Filebeat. Он поддерживается для различных систем — Linux, Windows, Mac. Мы разберем процедуру установки и настройки для первых двух.

Установка на Linux CentOS

Инструкция подходит для CentOS / Red Hat / Fedora. Переходим на страницу загрузки Filebeat — копируем ссылку на установочный пакет:

Используя скопированную ссылку, скачиваем пакет на сервере:

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.9.1-x86_64.rpm

Если система вернет ошибку, устанавливаем wget командой:

yum install wget

После устанавливаем пакет:

rpm -ivh filebeat-*.rpm

Установка на Linux Ubuntu

Инструкция подходит для Ubuntu / Debian. Переходим на страницу загрузки Filebeat — копируем ссылку на установочный пакет:

Используя скопированную ссылку, скачиваем пакет на сервере:

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.9.1-amd64.deb

После устанавливаем пакет:

dpkg -i filebeat-*.deb

Установка на Windows

Переходим на страницу загрузки Filebeat — скачиваем архив для Windows:

Распаковываем его в папку C:Program Files (где C: — диск, на котором установлена система).

Открываем Powershell и вводим команду:

set-executionpolicy unrestricted

На запрос «Вы хотите изменить политику выполнения?» отвечаем утвердительно:

(значением по умолчанию является «N»): Y

Переходим в каталог с Filebeat:

cd «C:Program FilesFilebeat»

… и запускаем скрипт установки сервиса:

.install-service-filebeat.ps1

Настройка после установки

Открываем конфигурационный файл для filebeat.

а) в Linux

vi /etc/filebeat/filebeat.yml

б) в Windows открываем файл filebeat.yml любым текстовым редактором (сам файл находится в каталогекоторый мы распаковали скаченный архив).

Находим раздел filebeat.inputs в нем type: log или type: filestream . Нам интересны две опции — это enabled и paths :

filebeat.inputs:

— type: filestream

enabled: true

paths:
— /var/log/*.log
#- c:programdataelasticsearchlogs*
— /var/log/secure
— /var/log/messages

* в данном примере мы включили опцию сбора лога (enabled: true ) и добавили отправку логов безопасности ( /var/log/secure ) и системных событий ( /var/log/messages ).
* для Windows пути будут другиенапример

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago