Перенос логов Apache в OpenSearch через Logstash

0 Акции
0
0
0
0

Введение

Эффективное управление журналами веб-сервера критически важно для поддержания производительности вашего сайта, устранения неполадок и анализа поведения пользователей. Apache — один из самых популярных веб-серверов. Он создаёт журналы доступа и ошибок, содержащие ценную информацию. Для эффективного управления и анализа этих журналов вы можете использовать Logstash для их обработки и отправки в управляемую систему OpenSearch от DigitalOcean для индексации и визуализации.

В этом руководстве мы покажем вам, как установить Logstash на ваш Droplet, настроить его для сбора журналов Apache и отправки их в Managed OpenSearch для анализа.

Предпосылки
  • Каплеты с установленным веб-сервером Apache.
  • Управляемый кластер OpenSearch

Шаг 1 — Установка Logstash

Logstash можно установить с помощью бинарных файлов или через репозитории пакетов. Для упрощения управления и обновления обычно рекомендуется использовать репозитории пакетов.

В этом разделе мы покажем вам, как установить Logstash на ваш Droplet с помощью APT и менеджера пакетов YUM.

Давайте определим операционную систему:

cat /etc/os-release
Для систем на базе APT (Ubuntu/Debian)

Загрузите и установите открытый ключ подписи:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

Прежде чем продолжить, вам может потребоваться установить пакет apt-transport-https в Debian:

sudo apt-get install apt-transport-https

Сохраните определение репозитория в /etc/apt/sources.list.d/elastic-8.x.list:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Чтобы добавить репозиторий Logstash, используйте метод echo, описанный выше. Не используйте add-apt-repository, так как он также добавит запись deb-src, но мы не предоставляем исходный пакет. Если вы добавили запись deb-src, вы увидите следующую ошибку:

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Просто удалите запись deb-src из файла /etc/apt/sources.list, и установка должна работать так, как и ожидалось.

Выполните команду sudo apt-get update, и репозиторий готов к использованию. Вы можете использовать его с помощью:

sudo apt-get update && sudo apt-get install logstash
Для систем на базе YUM (CentOS/RHEL)

Загрузите и установите открытый ключ подписи:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Добавьте следующее в файл /etc/yum.repos.d/logstash.repo. Для обновления и создания файла можно использовать клавишу «t».

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Ваш резервуар готов к использованию. Вы можете использовать его с:

sudo yum install logstash

Более подробную информацию можно найти в руководстве по установке Logstash.

Шаг 2 — Настройте Logstash для отправки журналов в OpenSearch

Конвейер Logstash состоит из трёх основных этапов: ввода, фильтрации и вывода. Конвейеры Logstash используют плагины. Вы можете использовать плагины от сообщества или создавать свои собственные.

  • Входные данные: на этом этапе собираются данные из различных источников. Logstash поддерживает несколько плагинов ввода для управления источниками данных, такими как файлы журналов, базы данных, очереди сообщений и облачные сервисы.
  • Фильтр: На этом этапе данные обрабатываются и преобразуются, собранные на этапе ввода. Фильтры могут изменять, обогащать и структурировать данные, делая их более полезными и аналитическими.
  • Выход: на этом этапе обработанные данные отправляются в пункт назначения. Пунктами назначения могут быть базы данных, файлы и хранилища данных, такие как OpenSearch.

Шаг 3 — Установка плагина Open Search Output

Плагин вывода OpenSearch можно установить, выполнив следующую команду:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

Более подробную информацию можно найти в этом репозитории logstash-output-opensearch-plugin.

Теперь давайте создадим конвейер:

Создайте новый файл в папке /etc/logstash/conf.d/ с именем apache_pipeline.conf и скопируйте следующее содержимое.

input {
file {
path => "/var/log/apache2/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_access"
}
file {
path => "/var/log/apache2/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_error"
}
}
filter {
if "apache_access" in [tags] {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
} else {
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
}
}
output {
if "apache_access" in [tags] {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_error"
ssl_certificate_verification => true
}
}
}

с именем хоста вашего сервера OpenSearch и Замените на свой пароль OpenSearch.

Давайте разберем представленную выше конфигурацию.

  • ВХОД: используется для настройки источника событий. Здесь используется плагин ввода файлов.
  • path => “/var/log/apache2/access.log”: указывает путь к файлу журнала доступа Apache, который Logstash должен считывать.

Убедитесь, что служба Logstash имеет доступ к входному пути.

  • start_position => “beginning”: указывает, с чего Logstash должен начать чтение файла журнала. “beginning” указывает, что Logstash должен начать обработку файла с начала, а не с конца.
  • sincedb_path => “/dev/null”: Указывает путь к файлу sincedb. Файлы sincedb используются Logstash для отслеживания текущего положения в файлах журнала, что позволяет продолжить работу с места остановки в случае перезагрузки или сбоя.
  • tags => “apache_access”: присваивает тег событиям, считываемым с этого входа. Теги полезны для идентификации и фильтрации событий в Logstash, часто используются на последующих этапах вывода или фильтрации конфигурации. Мы используем теги для последнего.
  • ФИЛЬТР: Используется для обработки событий.

Начиная с условных предложений:

(if "apache_access" in [tags]):

Это проверяет наличие тега apache_access в разделе [tags] входящих событий журнала. Мы используем это условие для применения соответствующего фильтра GROK к журналам доступа и ошибок Apache.

  • Фильтр Grok (для журналов доступа Apache):
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}

Фильтр Grok %{HTTPD_COMBINEDLOG} — это предопределённый шаблон в Logstash, используемый для анализа формата Apache Combined Access Log. Он извлекает такие поля, как IP-адрес, временная метка, HTTP-метод, URI, код состояния и т. д., из тела сообщения о полученных событиях.

  • Mutate Filter Remove (необязательно): после анализа журналов Apache мы используем mutate-remove для удаления некоторых полей.
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
  • Другое условие: если тег apache_access отсутствует в [tags], выполняется блок else. Этот блок else содержит ещё один фильтр GROK для журналов ошибок Apache.
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}

Этот фильтр %{HTTPD24_ERRORLOG} анализирует сообщения, соответствующие формату журнала ошибок Apache. Он извлекает поля, относящиеся к журналам ошибок, такие как временная метка, уровень журнала, сообщение об ошибке и т. д.

Выкройки GROK можно найти здесь: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns Находить.

  • ВЫХОД: Плагин отправляет выходные события в определенное место назначения.

Блок вывода начинается с условия if. Здесь мы используем условный оператор.

if "apache_access" in [tags] {}

Если условие используется для направления журналов OpenSearch в два отдельных профиля, apache_error и apache_access.

Давайте проверим плагин OpenSearch Output:

hosts => "https://XXX:25060" Your Open search Hostname
user => "doadmin" Your Open search Username
password => "XXXXX" OpenSearch Password
index => "apache_error" Index name in OpenSearch
ssl_certificate_verification => true Enabled SSL certificate verification

Шаг 4 — Запуск Logstash

После настройки конвейера запустите службу Logstash:

systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service

Шаг 5 – Устранение неполадок

Проверьте соединение.

Вы можете убедиться, что Logstash может подключиться к OpenSearch, проверив соединение:

curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"

с именем хоста сервера OpenSearch и , Замените своими учетными данными OpenSearch.

Прием данных

Убедитесь, что данные правильно проиндексированы в OpenSearch:

curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"

с именем хоста сервера OpenSearch и , Замените на ваши учетные данные OpenSearch. Аналогично, Под названием Index.

Конфигурация брандмауэра и сети

Убедитесь, что правила брандмауэра и сетевые настройки разрешают трафик между Logstash и OpenSearch через порт 25060.

Журналы

Журналы, относящиеся к Logstash, можно найти в /var/log/logstash/logstash-plain.log.

Результат

В этом руководстве мы настроим Logstash для сбора и отправки логов Apache в OpenSearch. Вот краткий обзор того, что мы рассмотрели:

Установка Logstash: мы объяснили, как использовать менеджеры пакетов APT или YUM, в зависимости от вашего дистрибутива Linux, для установки Logstash на ваш Droplet.

Конфигурация Logstash: Мы создали и настроили файл конфигурации Logstash, чтобы гарантировать правильный анализ журналов Apache и их отправку в OpenSearch.

Проверка в OpenSearch: мы настраиваем шаблон листинга на панелях мониторинга OpenSearch, чтобы проверить, что ваши отчеты правильно индексированы и видны для анализа.

После выполнения этих шагов у вас должна быть рабочая настройка, в которой Logstash собирает логи Apache и отправляет их в OpenSearch.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться