Используемые термины: Elasticsearch , Rocky Linux .
Если в двух словах, Elasticsearch предоставляет механизм хранения данных и их поиска, Kibana — веб-интерфейс для работы с данными, хранящимися в Elasticsearch, Logstash — инструмент для преобразования полученных от агента логов и их передачи в Elasticsearch. Таким образом, связка Elasticsearch + Kibana + Logstash (или ELK Stack) является инструментом по получению и хранению журналов. При этом поддерживаются разные платформы (Windows, Linux, BSD).
В данной инструкции мы рассмотрим пример установки серверной части ELK на Linux CentOS / Rocky. Также мы настроим сбор логов с помощью Filebeat в CentOS, Ubuntu, Windows.
Готовим сервер
Устанавливаем Java
Elasticsearch
Kibana
Logstash
Устанавливаем и настраиваем клиента
Linux CentOS
Linux Ubuntu
Windows
Настройка после установки
Использование Kibana для просмотра логов
Удаление старых логов
Прежде чем начать, подготовим к установке и настройке наш сервер.
В процессе установки пакетов нам понадобиться скачивать установочные файлы. Для этого в системе должен быть установлен wget:
yum install wget
Открываем порты для работы ELK:
firewall-cmd —permanent —add-port={5044,5601}/tcp
firewall-cmd —reload
где:
Отключаем SELinux двумя командами:
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
* первая команда выключит систему безопасности до перезагрузки сервера, вторая — навсегда.
Все программные продукты стека 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 .
Переходим на страницу загрузки эластика и копируем ссылку на последнюю версию пакета 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 и копируем ссылку на последнюю вервию пакета 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 аналогичен — переходим на страницу загрузки программного продукта, копируем ссылку на пакет 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
Настройки для логстэша хранятся в каталоге /etc/logstash/conf.d в файлах формата JSON. Для конфигурации используются следующие секции:
Для каждой из них мы создадим свой файл.
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. Мы разберем процедуру установки и настройки для первых двух.
Инструкция подходит для 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
Инструкция подходит для Ubuntu / Debian. Переходим на страницу загрузки Filebeat — копируем ссылку на установочный пакет:
Используя скопированную ссылку, скачиваем пакет на сервере:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.9.1-amd64.deb
После устанавливаем пакет:
dpkg -i filebeat-*.deb
Переходим на страницу загрузки 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 пути будут другиенапример
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…