Показаны различия между двумя версиями страницы.
— |
отправка_логов_через_filebeat [2025/09/13 21:35] (текущий) kirill создано |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | # Доставка логов в OpenSearch через Filebeat (Rocky Linux 8) | ||
+ | Ниже — практическая инструкция по установке и настройке **Filebeat** на удалённом хосте для отправки логов в ваш кластер OpenSearch (из нашей переписки: | ||
+ | |||
+ | > Все команды выполняются от `root` (или добавляйте `sudo`). | ||
+ | > Цель: получить индексы вида `filebeat-YYYY.MM.DD` и видеть их в **OpenSearch Dashboards → Discover**. | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 1) Подготовка на стороне OpenSearch (роли/ | ||
+ | |||
+ | Создайте **отдельную роль** с правами записи только в индексы `filebeat-*`, | ||
+ | ```bash | ||
+ | # Роль c доступом CRUD и созданием индексов | ||
+ | curl -k -u admin:'< | ||
+ | " | ||
+ | -H ' | ||
+ | " | ||
+ | { " | ||
+ | ] | ||
+ | }' | ||
+ | |||
+ | # Пользователь | ||
+ | curl -k -u admin:'< | ||
+ | " | ||
+ | -H ' | ||
+ | " | ||
+ | " | ||
+ | }' | ||
+ | |||
+ | # Привязка роли к пользователю | ||
+ | curl -k -u admin:'< | ||
+ | " | ||
+ | -H ' | ||
+ | " | ||
+ | }' | ||
+ | ``` | ||
+ | |||
+ | > На тестовом стенде можно использовать `admin`, но для прод-среды **обязательно** отдельного пользователя с минимально необходимыми правами. | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 2) Установка Filebeat (Rocky/Alma 8) | ||
+ | |||
+ | Подключите репозиторий Elastic и установите пакет `filebeat`: | ||
+ | ```bash | ||
+ | rpm --import https:// | ||
+ | cat >/ | ||
+ | [elastic-8.x] | ||
+ | name=Elastic 8.x | ||
+ | baseurl=https:// | ||
+ | gpgcheck=1 | ||
+ | gpgkey=https:// | ||
+ | enabled=1 | ||
+ | autorefresh=1 | ||
+ | type=rpm-md | ||
+ | REPO | ||
+ | |||
+ | dnf clean all | ||
+ | dnf -y install filebeat | ||
+ | ``` | ||
+ | |||
+ | > Filebeat работает с OpenSearch через стандартный `output.elasticsearch` — просто указываем URL вашего OpenSearch, логин/ | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 3) Базовая конфигурация Filebeat | ||
+ | |||
+ | **Важное правило: | ||
+ | |||
+ | Откройте `/ | ||
+ | |||
+ | ### 3.1 Вариант A — читать системные логи через _system module_ (RHEL-пути) | ||
+ | |||
+ | ```yaml | ||
+ | filebeat.modules: | ||
+ | - module: system | ||
+ | syslog: | ||
+ | enabled: true | ||
+ | var.paths: | ||
+ | - / | ||
+ | auth: | ||
+ | enabled: true | ||
+ | var.paths: | ||
+ | - / | ||
+ | |||
+ | # Общие процессоры (по желанию) | ||
+ | processors: | ||
+ | - add_host_metadata: | ||
+ | - add_cloud_metadata: | ||
+ | |||
+ | # Выключаем ILM/ | ||
+ | setup.ilm.enabled: | ||
+ | setup.template.enabled: | ||
+ | setup.dashboards.enabled: | ||
+ | |||
+ | # Пишем напрямую в OpenSearch | ||
+ | output.elasticsearch: | ||
+ | hosts: [" | ||
+ | username: " | ||
+ | password: "< | ||
+ | protocol: " | ||
+ | # Для самоподписанных сертификатов используйте или CA, или отключите проверку на тесте: | ||
+ | ssl.verification_mode: | ||
+ | # Создаём суточные индексы | ||
+ | index: " | ||
+ | ``` | ||
+ | |||
+ | ### 3.2 Вариант B — читать логи systemd через input `journald` | ||
+ | |||
+ | ```yaml | ||
+ | filebeat.inputs: | ||
+ | - type: journald | ||
+ | id: journald-system | ||
+ | seek: cursor | ||
+ | include_matches: | ||
+ | # Примеры фильтрации: | ||
+ | # unit: sshd.service | ||
+ | # syslog_identifier: | ||
+ | |||
+ | processors: | ||
+ | - add_host_metadata: | ||
+ | - add_cloud_metadata: | ||
+ | |||
+ | setup.ilm.enabled: | ||
+ | setup.template.enabled: | ||
+ | setup.dashboards.enabled: | ||
+ | |||
+ | output.elasticsearch: | ||
+ | hosts: [" | ||
+ | username: " | ||
+ | password: "< | ||
+ | protocol: " | ||
+ | ssl.verification_mode: | ||
+ | index: " | ||
+ | ``` | ||
+ | |||
+ | > Выбирайте один из вариантов (A **или** B). Модуль `system` парсит стандартные файлы RHEL (`/ | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 4) Старт, автозапуск и проверка | ||
+ | |||
+ | ```bash | ||
+ | # Проверка синтаксиса и подключения | ||
+ | filebeat test config -e | ||
+ | filebeat test output -e | ||
+ | |||
+ | # Включим автозапуск и запустим | ||
+ | systemctl enable --now filebeat | ||
+ | systemctl status filebeat --no-pager | ||
+ | journalctl -u filebeat -n 100 --no-pager | ||
+ | ``` | ||
+ | |||
+ | Сгенерируйте тест-сообщение и проверьте индекс в OpenSearch: | ||
+ | ```bash | ||
+ | logger -t fbtest "hello from filebeat" | ||
+ | |||
+ | curl -k -u admin:'< | ||
+ | " | ||
+ | ``` | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 5) Настройка Data View в OpenSearch Dashboards | ||
+ | |||
+ | 1. **Dashboards → Management → Data Views (Index Patterns)**. | ||
+ | 2. Создайте Data View с шаблоном: | ||
+ | 3. Поле времени: | ||
+ | 4. Откройте **Discover** — логи должны быть видны. | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 6) Полезные расширения | ||
+ | |||
+ | - **Кастомные пути** для модулей: | ||
+ | - **Метки окружения/ | ||
+ | ```yaml | ||
+ | processors: | ||
+ | - add_fields: | ||
+ | target: labels | ||
+ | fields: | ||
+ | env: " | ||
+ | role: " | ||
+ | ``` | ||
+ | - **Разделение индексов по типам** (пример — разные индексы для auth/ | ||
+ | ```yaml | ||
+ | output.elasticsearch: | ||
+ | hosts: [" | ||
+ | username: " | ||
+ | password: "< | ||
+ | protocol: " | ||
+ | ssl.verification_mode: | ||
+ | indices: | ||
+ | - index: " | ||
+ | when.contains: | ||
+ | event.dataset: | ||
+ | - index: " | ||
+ | when.contains: | ||
+ | event.dataset: | ||
+ | - index: " | ||
+ | ``` | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 7) Частые проблемы и решения | ||
+ | |||
+ | ### 7.1 `x509: certificate signed by unknown authority` | ||
+ | - Либо укажите путь к вашему CA: | ||
+ | ```yaml | ||
+ | output.elasticsearch.ssl.certificate_authorities: | ||
+ | ssl.verification_mode: | ||
+ | ``` | ||
+ | - Либо **временно** отключите проверку: | ||
+ | |||
+ | ### 7.2 Ошибки ILM / шаблонов / setup | ||
+ | - Не запускайте `filebeat setup` против OpenSearch; оставьте `setup.*: false` в конфиге. | ||
+ | - Мы создаём индексы по `index: " | ||
+ | |||
+ | ### 7.3 `403 forbidden` или `action unauthorized` | ||
+ | - Убедитесь, | ||
+ | - Проверьте правильность логина/ | ||
+ | |||
+ | ### 7.4 Индекс остаётся `yellow` на одном узле | ||
+ | - Установите реплики по умолчанию в `0` для шаблона `filebeat-*` (или для всех дата-индейсов на стенде): | ||
+ | ```bash | ||
+ | curl -k -u admin:'< | ||
+ | -H ' | ||
+ | " | ||
+ | " | ||
+ | }' | ||
+ | ``` | ||
+ | |||
+ | ### 7.5 Пропуски в логах при journald input | ||
+ | - Поставьте `seek: cursor` (как в примере) и не меняйте `STATE`-файл Filebeat. | ||
+ | - Убедитесь, | ||
+ | |||
+ | --- | ||
+ | |||
+ | ## 8) Что дальше (к прод-среде) | ||
+ | |||
+ | - Валидные TLS-сертификаты, | ||
+ | - Тонкая настройка ролей/ | ||
+ | - Политики жизненного цикла — в OpenSearch это Index State Management (ISM), а не ILM из Elasticsearch. | ||
+ | - Мониторинг дисков (watermark), | ||
+ | |||
+ | --- | ||
+ | |||
+ | **Готово.** Теперь Filebeat шипит логи в `filebeat-*`, |