3.7.3 OpenSearch — система распределенного поиска, сбора, анализа и визуализации данных
OpenSearch
Установка и настройка OpenSearch
OpenSearch Dashboards
Установка и настройка OpenSearch Dashboards
Logstash
Установка и настройка logstash
Beats
Установка и настройка filebeat
Установка и настройка auditbeat
Установка и настройка heartbeat
Установка и настройка metricbeat
Установка и настройка packetbeat
Отображение данных в OpenSearch Dashboards
Создание шаблона индексов
Создание информационной панели OpenSearch Dashboards
Использование Discover
Окружение
- Версия РЕД ОС: 7.3, 8
- Конфигурация: Сервер графический
- Версия ПО: opensearch-2.13.0, opensearch-dashboards-2.13.0, logstash-8.9.0, auditbeat-7.17.14, filebeat-7.17.14, heartbeat-7.17.14, metricbeat-7.17.14, packetbeat-7.17.14
OpenSearch стек (OpenSearch, Logstash, OpenSearch Dashboards) — это форк ELK стека (Elasticsearch, Logstash, Kibana). Конвейер обработки данных журнала состоит из трёх этапов: агрегация, обработка и хранение. В традиционном стеке обработка и агрегация данных осуществлялись с использованием Logstash. Из-за проблем с производительностью и сложностью обработки данных возникла потребность в использовании Beats.
Beats — это легковесные агенты сбора данных, каждый из которых предназначен для определенной задачи:
- auditbeat — сбор данных аудита безопасности;
- filebeat — мониторинг и сбор лог-файлов;
- heartbeat — проверка доступности служб;
- metricbeat — сбор метрик системы и служб;
- packetbeat — анализ трафика сетевых пакетов.
OpenSearch
Opensearch — это распределенная система полнотекстового поиска и анализа данных, работающая в режиме реального времени. После добавления данных в opensearch можно выполнять полнотекстовый поиск со сложными функциями: поиск по полю, поиск по нескольким индексам, повышение полей, ранжирование результатов по баллам, сортировка результатов по полю и агрегирование результатов.
Opensearch можно использовать в качестве серверной части для поискового приложения, система обеспечивает хорошую производительность и имеет возможность масштабироваться в зависимости от потребностей приложения.
Установка и настройка OpenSearch
Для установки opensearch выполните следующий алгоритм действий:
1. Выполните установку пакетов (потребуются права администратора).
Для установки opensearch необходимо определить собственный пароль администратора, чтобы настроить демонстрационную конфигурацию безопасности.
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=<custom-admin-password> dnf install opensearch
где:
<custom-admin-password> — установите самостоятельно заданный пароль администратора длиной от 12 символов, содержащий прописные буквы (A-Z), строчные буквы (a-z), спецсимволы, цифры (0-9).
2. Перезагрузите конфигурацию диспетчера systemd:
sudo systemctl daemon-reload
3. Добавьте opensearch в автозагрузку и запустите службу:
sudo systemctl enable opensearch --now
4. Настройки opensearch находятся в файле /etc/opensearch/opensearch.yml. Внесите изменения в конфигурационный файл:
sudo nano /etc/opensearch/opensearch.yml
5. Измените следующие строки:
network.host: 0.0.0.0
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
где:
- 0.0.0.0 — приём на всех интерфейсах;
- ["127.0.0.1", "[::1]"] — локальный поиск хостов кластера.
Сохраните внесённые в конфигурацию изменения и перейдите в терминал.
6. Перезапустите службу opensearch:
sudo systemctl restart opensearch
7. Для проверки статуса службы opensearch можно использовать команду:
sudo systemctl status opensearch
При успешно выполненных настройках в статусе должно отображаться active (running).
8. Проверьте работу opensearch:
curl -X GET https://localhost:9200 -u 'admin:<custom-admin-password>' --insecure
В терминале должна отобразится информация приблизительно следующего содержания:
{
"name" : "localhost.localdomain",
"cluster_name" : "opensearch",
"cluster_uuid" : "6c3fb4JuQJ2HJxQEfLiqIg",
"version" : {
"distribution" : "opensearch",
"number" : "2.13.0",
"build_type" : "tar",
"build_hash" : "7ec678d1b7c87d6e779fdef94e33623e1f1e2647",
"build_date" : "2024-05-13T00:00Z",
"build_snapshot" : false,
"lucene_version" : "9.10.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
OpenSearch Dashboards
OpenSearch Dashboards — это веб-интерфейс для opensearch, предоставляющий комплексное решение для визуального анализа, обнаружения и запроса данных мониторинга. При работе с opensearch через консоль OpenSearch Dashboards использовать необязательно. Также вместо OpenSearch Dashboards в качестве веб-интерфейса можно использовать другие инструменты, например, Grafana.
Установка и настройка OpenSearch Dashboards
Для установки и настройки opensearch-dashboards выполните следующий алгоритм действий:
1. Выполните установку пакетов:
sudo dnf install opensearch-dashboards
2. Перезагрузите конфигурацию диспетчера systemd:
sudo systemctl daemon-reload
3. Затем запустите и добавьте в автозагрузку службу opensearch-dashboards:
sudo systemctl enable opensearch-dashboards --now
4. Откройте конфигурационный файл opensearch_dashboards.yml:
nano /etc/opensearch-dashboards/opensearch_dashboards.yml
5. Добавьте строку для внешнего подключения к веб-панели:
server.host: "192.168.2.15"
где:
192.168.2.15 — IP-адрес хоста.
6. Перезапустите службу opensearch-dashboards:
sudo systemctl restart opensearch-dashboards
7. Проверьте статус службы opensearch-dashboards:
sudo systemctl status opensearch-dashboards
Отобразится текущий статус службы opensearch-dashboards, включая информацию о том, запущена ли служба, возникли ли ошибки или проблемы при запуске, а также последние записи журнала, связанные со службой. При успешном подключении в статусе должно отображаться: active (running).
Logstash
Logstash является механизмом обработки событий на стороне сервера. Утилита извлекает данные из широкого спектра источников, трансформирует их и отправляет в opensearch в реальном времени.
Возможности logstash:
- помогает централизовать данные из логов и метрик;
- выполняет обработку данных;
- формирует нужную пользователю выборку;
- позволяет строить масштабируемые контейнеры для сбора больших объемов разнообразных данных;
- нормализует и отправляет на хранение данные на различные ресурсы;
- обрабатывает все типы данных протоколирования;
- предоставляет фильтры ввода и плагины вывода.
Logstash принимает входные данные из следующих источников:
- STDIN,
- журналы,
- файлы,
- TCP / UDP,
- websocket,
- zeromq.
При наличии большого количества разрозненных данных их отправка напрямую в opensearch неудобна, в таких случаях можно использовать предобработку в logstash.
При использовании logstash на него отправляются данные со всех beats и настройки перемещаются в единый центр, где происходит управление, распределение индексов, изменение полей. При большой нагрузке есть возможность вынести logstash на отдельную машину.
Конвейер logstash состоит из трёх компонентов — ввода, фильтров и вывода. Таких блоков может быть любое количество.
input {
input_plugin => {...}
}
filter {
filter_plugin => {...}
}
output {
output_plugin => {...}
}
где:
- input — получает события из разных источников одновременно, используя коллекцию инструментов ввода с открытым исходным кодом под названием beats для сбора событий;
- filter — анализирует и обогащает события различными способами, располагает обширной коллекцией фильтров, которые преобразуют события и направляют их на вывод;
- output — отправляет отфильтрованные события в одно или несколько мест назначения.
Установка и настройка logstash
Для установки и настройки logstash выполните следующий алгоритм действий:
1. Выполните установку logstash (потребуются права администратора):
sudo dnf install logstash
2. Откройте для редактирования конфигурационный файл pipelines.yml:
nano /etc/logstash/pipelines.yml
3. Добавьте следующие настройки:
- pipeline.id: main
path.config: "/etc/logstash/conf.d/*.conf"
4. Создайте конфигурационный файл input.conf:
nano /etc/logstash/conf.d/input.conf
5. Добавьте в него следующие настройки:
input {
beats {
port => 5044
}
}
6. Создайте конфигурационный файл filter.conf:
nano /etc/logstash/conf.d/filter.conf
7. Добавьте в него следующие настройки:
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" ]
}
}
}
8. Создайте файл output.conf:
nano /etc/logstash/conf.d/output.conf
9. Добавьте в него следующие настройки:
output {
opensearch {
hosts => ["https://localhost:9200"]
ssl => true
ssl_certificate_verification => false
user => "admin"
password => "custom-admin-password"
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
10. Проверьте конфигурацию logstash:
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t /usr/share/logstash/bin/logstash -f
Если конфигурация корректна, в ответе команды появится примерно следующее сообщение: Starting server on port: 5044. Если есть ошибки в конфигурации, будут показаны сообщения об ошибках, которые нужно исправить.
11. Добавьте службу logstash в автозагрузку:
systemctl enable logstash
12. Перезапустите службу logstash:
systemctl restart logstash
13. Проверьте статус logstash:
sudo systemctl status logstash
При успешном подключении появится статус: active (running).
Beats
Beats — это легковесные агенты для доставки данных с открытым исходным кодом, располагающиеся на стороне клиента. Их особенность заключается в задействовании небольшого количества ресурсов.
Beats содержит несколько пакетов, являющихся различными модулями системы обработки и анализа данных. Каждый из них предоставляет специальные возможности для сбора и анализа данных, что облегчает создание сквозных решений для анализа логов.
Компоненты beats и logstash являются взаимодополняемыми и в зависимости от задач можно использовать их либо вместе, либо по отдельности.
Установка и настройка filebeat
Модуль используется для сбора и доставки логов из локальных файлов в систему пользователя для мониторинга и анализа. Filebeat может мониторить различные источники данных, такие как логи приложений, системные журналы, а также JSON- и текстовые файлы.
1. Для установки программы filebeat используйте команду (потребуются права администратора):
sudo dnf install filebeat
2. Откройте конфигурационный файл filebeat.yml:
nano /etc/filebeat/filebeat.yml
3. В настройках укажите путь к файлам, которые необходимо собрать, и адрес, куда отправлять результаты.
В разделе Filebeat inputs
включите опцию сбора лога:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
В разделе Kibana
закомментируйте следующие строки:
#setup.kibana:
#host: "localhost:5601
В разделе Elasticsearch Output
закомментируйте следующие строки:
#output.elasticsearch:
#hosts: ["localhost:9200"]
В разделе Logstash Output
раскомментируйте следующие строки, вместо localhost укажите IP-адрес сервера:
output.logstash:
hosts: ["192.168.2.15:5044"]
где:
- 192.168.2.15 – IP-адрес машины, на которой запущен logstash;
- 5044 – порт, который используется для подключения к logstash.
Сохраните изменения и закройте файл.
4. Активируйте модуль logstash:
sudo filebeat modules enable logstash
5. В файле /etc/filebeat/modules.d/logstash.yml измените настройки модуля. Вы должны включить хотя бы один набор файлов в модуле. По умолчанию наборы файлов отключены. Поменяйте значение enabled: false на true.
- module: logstash
access:
enabled: true
6. Перед запуском filebeat рекомендуется протестировать файл конфигурации на наличие ошибок:
sudo filebeat test config
При успешных настройках появится сообщение: «Config OK».
7. Настройте автозагрузку filebeat и запустите службу:
sudo systemctl enable --now filebeat
8. Проверьте состояние filebeat с помощью команды:
sudo systemctl status filebeat
При успешно выполненных настройках в статусе службы должно отображаться active (running).
Установка и настройка auditbeat
Модуль системы обработки и анализа данных, предназначенный для мониторинга активности пользователей и процессов операционной системы. Он собирает данные об аудите безопасности, такие как журналы аудита, и отправляет их в opensearch или logstash для анализа и визуализации. Auditbeat отправляет эти события в режиме реального времени в opensearch для дальнейшего анализа. Можно следить за изменениями в определенных папках, идентифицировать потенциальные нарушения политики безопасности.
1. Для установки программы auditbeat используйте команду (потребуются права администратора):
sudo dnf install auditbeat
2. Настройте auditbeat:
sudo nano /etc/auditbeat/auditbeat.yml
В разделе Logstash Output
раскомментируйте следующие строки:
output.logstash:
hosts: ["192.168.2.15:5044"]
В разделе Kibana
закомментируйте следующие строки:
#setup.kibana:
#host: "localhost:5601
В разделе Elasticsearch Output
закомментируйте следующие строки:
#output.elasticsearch:
#hosts: ["localhost:9200"]
Сохраните изменения и закройте файл.
3. Перед запуском auditbeat рекомендуется протестировать файл конфигурации на наличие ошибок:
sudo auditbeat test config
При успешных настройках появится сообщение: «Config OK».
4. После настройки файла конфигурации необходимо запустить и настроить службу auditbeat для автозагрузки:
sudo systemctl enable --now auditbeat
5. Проверьте состояние auditbeat с помощью команды:
sudo systemctl status auditbeat
При успешно выполненных настройках в статусе должно отображаться active (running).
Установка и настройка heartbeat
Это модуль мониторинга доступности, предназначенный для проверки доступности и производительности служб и ресурсов. Он может мониторить HTTP-эндпоинты, TCP-службы, DNS-серверы и другие ресурсы, отправляя тестовые запросы и анализируя ответы. Heartbeat отслеживает доступность служб с помощью активного поиска. Получив список URL-адресов, heartbeat задаёт вопрос о доступности системы и отправляет эту информацию и время отклика в остальную часть стека для дальнейшего анализа.
Для установки программы heartbeat используйте команду (потребуются права администратора):
sudo dnf install heartbeat
1. Откройте конфигурационный файл heartbeat.yml:
sudo nano /etc/heartbeat/heartbeat.yml
2. Настройте параметры в файле heartbeat.yml в соответствии с примером:
Включите монитор, который необходимо использовать.
heartbeat.monitors:
- type: http
urls: ["https://192.168.2.15:9200"]
schedule: '@every 60s'
id: dashboards
name: 'Opensearch Dashboards'
username: "admin"
password: "custom-admin-password"
В разделе Kibana
закомментируйте следующие строки:
#setup.kibana:
#host: "localhost:5601
В разделе Elasticsearch Output
закомментируйте следующие строки:
#output.elasticsearch:
#hosts: ["localhost:9200"]
В разделе Logstash Output
раскомментируйте следующие строки:
output.logstash:
hosts: ["192.168.2.15:5044"]
Сохраните изменения и закройте файл.
В этом примере файл heartbeat.yml настраивает параметры мониторинга и управления кластером из двух узлов с использованием heartbeat для обеспечения высокой доступности. В случае неисправности одного из узлов, другой узел возьмёт на себя его роль.
Перед запуском heartbeat рекомендуется протестировать файл конфигурации на наличие ошибок:
sudo heartbeat test config
При успешных настройках появится сообщение: «Config OK».
3. После настройки файла конфигурации необходимо запустить и настроить службу heartbeat для автозагрузки:
sudo systemctl enable --now heartbeat-elastic
4. Проверьте состояние heartbeat с помощью команды:
sudo systemctl status heartbeat-elastic
При успешно выполненных настройках в статусе должно отображаться active (running).
Установка и настройка metricbeat
Metricbeat — это модуль сбора метрик, предназначенный для сбора различных системных метрик и сервисной статистики. Он может собирать данные о производительности хостов, сетевого трафика, использования ресурсов контейнеров и многого другого. Применяется для мониторинга серверов/приложений.
Для установки программы metricbeat используйте команду (потребуются права администратора):
sudo dnf install metricbeat
Для настройки metricbeat выполните следующий алгоритм действий:
1. Откройте основной файл конфигурации /etc/metricbeat/metricbeat.yml для редактирования:
sudo nano /etc/metricbeat/metricbeat.yml
2. Измените настройки.
В разделе Modules configuration
измените значение параметра reload.enabled на true.
metricbeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
В разделе Kibana
закомментируйте следующие строки:
#setup.kibana:
#host: "localhost:5601
В разделе Elasticsearch Output
закомментируйте следующие строки:
#output.elasticsearch:
#hosts: ["localhost:9200"]
В разделе Logstash Output
раскомментируйте следующие строки:
output.logstash:
hosts: ["192.168.2.15:5044"]
Сохраните изменения и закройте файл.
3. Откройте на редактирование конфигурационный файл metricbeat.reference.yml:
sudo nano /etc/metricbeat/metricbeat.reference.yml
4. Заполните конфигурационный файл и сохраните настройки.
metricbeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.period: 10s
reload.enabled: true
metricbeat.max_start_delay: 10s
metricbeat.modules:
- module: system
metricsets:
- cpu
- load
- memory
- network
- process
- process_summary
- uptime
- socket_summary
enabled: true
period: 10s
processes: ['.*']
5. Перед запуском metricbeat рекомендуется протестировать файл конфигурации на наличие ошибок:
sudo metricbeat test config
При успешных настройках появится сообщение: «Config OK».
6. После настройки файла конфигурации, необходимо запустить и активировать автозагрузку metricbeat:
sudo systemctl enable --now metricbeat
7. Проверьте статус metricbeat:
sudo systemctl status metricbeat
При успешно выполненных настройках в статусе должно отображаться active (running).
8. Для просмотра всех модулей выполните команду:
metricbeat modules list
9. Активируйте нужные модули:
metricbeat modules enable logstash
Установка и настройка packetbeat
Packetbeat — модуль для сбора метрик, предназначенный для мониторинга и анализа сетевого трафика протоколов уровня приложений в реальном времени. Packetbeat может анализировать различные протоколы, такие как HTTP, DNS, MySQL и другие службы, а также обнаруживать аномалии и атаки в сети. Мониторинг сетевого трафика имеет важное значение для управления инфраструктурой, обеспечивая высокий уровень производительности и безопасности.
На клиентской машине нужно настроить агент-отправитель. После сбора и обработки данных с хостов и контейнеров агент отправляет сгенерированные отчеты в logstash или opensearch.
Для установки программы packetbeat используйте команду (потребуются права администратора):
sudo dnf install packetbeat
После установки packetbeat нужно настроить. Основной файл конфигурации packetbeat.yml находится в каталоге /etc/packetbeat/. Откройте его для редактирования:
sudo nano /etc/packetbeat/packetbeat.yml
Настройте сетевые интерфейсы, которые packetbeat будет использовать для мониторинга трафика, например:
packetbeat.interfaces.device: any
где:
any — означает мониторинг всех доступных интерфейсов. Можно указать конкретный интерфейс, например eth0.
Включите и настройте протоколы, которые packetbeat будет анализировать. Например:
packetbeat.protocols:
- type: http
ports: [80, 8080, 8000, 5000, 8002]
- type: mysql
ports: [3306]
- type: dns
ports: [53]
- type: redis
ports: [6379]
Этот пример включает анализ HTTP, MySQL, DNS и Redis трафика на указанных портах.
В разделе Logstash Output
раскомментируйте следующие строки:
output.logstash:
hosts: ["192.168.2.15:5044"]
В разделе Kibana
закомментируйте следующие строки:
#setup.kibana:
#host: "localhost:5601
В разделе Elasticsearch Output
закомментируйте следующие строки:
#output.elasticsearch:
#hosts: ["localhost:9200"]
Сохраните изменения и закройте файл.
Перед запуском packetbeat рекомендуется протестировать файл конфигурации на наличие ошибок:
sudo packetbeat test config
При успешных настройках появится сообщение: «Config OK».
После настройки файла конфигурации, необходимо запустить и настроить службу packetbeat для автозагрузки:
sudo systemctl enable --now packetbeat
Проверьте статус packetbeat:
sudo systemctl status packetbeat
При успешно выполненных настройках в статусе должно отображаться active (running).
Отображение данных в OpenSearch Dashboards
Для просмотра данных в веб-панели OpenSearch Dashboards подключитесь через веб-браузер, используя IP-адрес машины, на которой развернут logstash:
http://192.168.2.15:5601
Введите аутентификационные данные, созданные при установке opensearch.
Создание шаблона индексов
Для осуществления поиска данных с помощью OpenSearch Dashboards необходимо создать шаблон индексов. Перейдите в «Основное меню» (1) — «Dashboards Management» (2).
Выберите «Index Pattern».
Нажмите кнопку «Create index pattern».
В поле «Index pattern name» (1) введите имя индекса «filebeat-*» и нажмите «Next step» (2).
В поле «Time field» выберите значение «@timestamp» (1) и нажмите «Create index pattern» (2).
Аналогичным образом создаются индексы для auditbeat-*, heartbeat-*, metricbeat-*, packetbeat-*.
Создание информационной панели OpenSearch Dashboards
Для отображения данных в OpenSearch Dashboards необходимо создать информационную панель. Для этого перейдите в «Основное меню» (1) — «Dashboards» (2).
На панели «Dashboards» выберите «Create» — «Dashboards».
Выберите значок календаря и установите временной фильтр, например, 30 дней.
Выберите на панели «Add an existing» для добавления существующего объекта.
В окне «Add panels» выберите необходимую панель, а затем закройте панель. В результате будет создана базовая панель для мониторинга.
Использование Discover
С помощью раздела Discover можно выбирать данные для анализа, устанавливать временной диапазон для этих данных, выполнять поиск с помощью языка запросов Dashboards и фильтровать результаты.
В навигационном меню OpenSearch Dashboards выберите раздел «Discover».
На странице Discover выберите шаблон индекса «filebeat-*» (1) из выпадающего меню в левом верхнем углу. Выберите значок для изменения временного фильтра и установите значение «Last 30 minutes» (2).
Результат для индекса «auditbeat-*»:
Результат для индекса «heartbeat-*»:
Результат для индекса «metricbeat-*»:
Результат для индекса «packetbeat-*»:
Дата последнего изменения: 20.08.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.