Инструменты пользователя

Инструменты сайта


отправка_логов_через_filebeat

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

отправка_логов_через_filebeat [2025/09/13 21:35] (текущий)
kirill создано
Строка 1: Строка 1:
 +# Доставка логов в OpenSearch через Filebeat (Rocky Linux 8)
  
 +Ниже — практическая инструкция по установке и настройке **Filebeat** на удалённом хосте для отправки логов в ваш кластер OpenSearch (из нашей переписки: одноузловой OpenSearch 3.x + Dashboards).
 +
 +> Все команды выполняются от `root` (или добавляйте `sudo`).  
 +> Цель: получить индексы вида `filebeat-YYYY.MM.DD` и видеть их в **OpenSearch Dashboards → Discover**.
 +
 +---
 +
 +## 1) Подготовка на стороне OpenSearch (роли/пользователь)
 +
 +Создайте **отдельную роль** с правами записи только в индексы `filebeat-*`, пользователя и привязку роли:
 +```bash
 +# Роль c доступом CRUD и созданием индексов
 +curl -k -u admin:'<ADMIN_PASSWORD>' -X PUT \
 +  "https://<IP_OpenSearch>:9200/_plugins/_security/api/roles/filebeat_writer" \
 +  -H 'Content-Type: application/json' -d '{
 +  "index_permissions": [
 +    { "index_patterns": ["filebeat-*"], "allowed_actions": ["crud","create_index"] }
 +  ]
 +}'
 +
 +# Пользователь
 +curl -k -u admin:'<ADMIN_PASSWORD>' -X PUT \
 +  "https://<IP_OpenSearch>:9200/_plugins/_security/api/user/filebeat_ingest" \
 +  -H 'Content-Type: application/json' -d '{
 +  "password": "<STRONG_PASSWORD>",
 +  "attributes": {}
 +}'
 +
 +# Привязка роли к пользователю
 +curl -k -u admin:'<ADMIN_PASSWORD>' -X PUT \
 +  "https://<IP_OpenSearch>:9200/_plugins/_security/api/rolesmapping/filebeat_writer" \
 +  -H 'Content-Type: application/json' -d '{
 +  "users": ["filebeat_ingest"]
 +}'
 +```
 +
 +> На тестовом стенде можно использовать `admin`, но для прод-среды **обязательно** отдельного пользователя с минимально необходимыми правами.
 +
 +---
 +
 +## 2) Установка Filebeat (Rocky/Alma 8)
 +
 +Подключите репозиторий Elastic и установите пакет `filebeat`:
 +```bash
 +rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
 +cat >/etc/yum.repos.d/elastic-8.x.repo <<'REPO'
 +[elastic-8.x]
 +name=Elastic 8.x
 +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
 +REPO
 +
 +dnf clean all
 +dnf -y install filebeat
 +```
 +
 +> Filebeat работает с OpenSearch через стандартный `output.elasticsearch` — просто указываем URL вашего OpenSearch, логин/пароль и TLS-параметры.
 +
 +---
 +
 +## 3) Базовая конфигурация Filebeat
 +
 +**Важное правило:** для OpenSearch **выключаем** ILM и предварительную установку шаблонов/дашбордов Filebeat. Мы будем писать в суточные индексы `filebeat-YYYY.MM.DD` и позволим кластеру создать их автоматически.
 +
 +Откройте `/etc/filebeat/filebeat.yml` и приведите к минимальному варианту ниже (оставьте только нужные секции).
 +
 +### 3.1 Вариант A — читать системные логи через _system module_ (RHEL-пути)
 +
 +```yaml
 +filebeat.modules:
 +  - module: system
 +    syslog:
 +      enabled: true
 +      var.paths:
 +        - /var/log/messages
 +    auth:
 +      enabled: true
 +      var.paths:
 +        - /var/log/secure
 +
 +# Общие процессоры (по желанию)
 +processors:
 +  - add_host_metadata: ~
 +  - add_cloud_metadata: ~
 +
 +# Выключаем ILM/установку шаблонов
 +setup.ilm.enabled: false
 +setup.template.enabled: false
 +setup.dashboards.enabled: false
 +
 +# Пишем напрямую в OpenSearch
 +output.elasticsearch:
 +  hosts: ["https://<IP_OpenSearch>:9200"]
 +  username: "filebeat_ingest"
 +  password: "<STRONG_PASSWORD>"
 +  protocol: "https"
 +  # Для самоподписанных сертификатов используйте или CA, или отключите проверку на тесте:
 +  ssl.verification_mode: none
 +  # Создаём суточные индексы
 +  index: "filebeat-%{+yyyy.MM.dd}"
 +```
 +
 +### 3.2 Вариант B — читать логи systemd через input `journald`
 +
 +```yaml
 +filebeat.inputs:
 +  - type: journald
 +    id: journald-system
 +    seek: cursor
 +    include_matches: []
 +    # Примеры фильтрации:
 +    # unit: sshd.service
 +    # syslog_identifier: kernel
 +
 +processors:
 +  - add_host_metadata: ~
 +  - add_cloud_metadata: ~
 +
 +setup.ilm.enabled: false
 +setup.template.enabled: false
 +setup.dashboards.enabled: false
 +
 +output.elasticsearch:
 +  hosts: ["https://<IP_OpenSearch>:9200"]
 +  username: "filebeat_ingest"
 +  password: "<STRONG_PASSWORD>"
 +  protocol: "https"
 +  ssl.verification_mode: none
 +  index: "filebeat-%{+yyyy.MM.dd}"
 +```
 +
 +> Выбирайте один из вариантов (A **или** B). Модуль `system` парсит стандартные файлы RHEL (`/var/log/messages`, `/var/log/secure`). Если вся система пишет только в `journald` и файлы не используются — берите вариант B.
 +
 +---
 +
 +## 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:'<ADMIN_PASSWORD>' \
 +  "https://<IP_OpenSearch>:9200/filebeat-*/_search?q=fbtest&pretty"
 +```
 +
 +---
 +
 +## 5) Настройка Data View в OpenSearch Dashboards
 +
 +1. **Dashboards → Management → Data Views (Index Patterns)**.  
 +2. Создайте Data View с шаблоном: `filebeat-*`.  
 +3. Поле времени: `@timestamp`.  
 +4. Откройте **Discover** — логи должны быть видны.
 +
 +---
 +
 +## 6) Полезные расширения
 +
 +- **Кастомные пути** для модулей: укажите `var.paths` на нужные файлы.  
 +- **Метки окружения/хоста**:
 +  ```yaml
 +  processors:
 +    - add_fields:
 +        target: labels
 +        fields:
 +          env: "prod"
 +          role: "web"
 +  ```
 +- **Разделение индексов по типам** (пример — разные индексы для auth/syslog):
 +  ```yaml
 +  output.elasticsearch:
 +    hosts: ["https://<IP_OpenSearch>:9200"]
 +    username: "filebeat_ingest"
 +    password: "<STRONG_PASSWORD>"
 +    protocol: "https"
 +    ssl.verification_mode: none
 +    indices:
 +      - index: "filebeat-auth-%{+yyyy.MM.dd}"
 +        when.contains:
 +          event.dataset: "system.auth"
 +      - index: "filebeat-syslog-%{+yyyy.MM.dd}"
 +        when.contains:
 +          event.dataset: "system.syslog"
 +      - index: "filebeat-%{+yyyy.MM.dd}"
 +  ```
 +
 +---
 +
 +## 7) Частые проблемы и решения
 +
 +### 7.1 `x509: certificate signed by unknown authority`
 +- Либо укажите путь к вашему CA:
 +  ```yaml
 +  output.elasticsearch.ssl.certificate_authorities: ["/etc/pki/ca-trust/source/anchors/opensearch-ca.crt"]
 +  ssl.verification_mode: full
 +  ```
 +- Либо **временно** отключите проверку: `ssl.verification_mode: none` (только на тесте!).
 +
 +### 7.2 Ошибки ILM / шаблонов / setup
 +- Не запускайте `filebeat setup` против OpenSearch; оставьте `setup.*: false` в конфиге.
 +- Мы создаём индексы по `index: "filebeat-%{+yyyy.MM.dd}"` — OpenSearch создаст их автоматически при первой записи.
 +
 +### 7.3 `403 forbidden` или `action unauthorized`
 +- Убедитесь, что у пользователя есть роль с `crud` и `create_index` на `filebeat-*`.
 +- Проверьте правильность логина/пароля в `filebeat.yml`.
 +
 +### 7.4 Индекс остаётся `yellow` на одном узле
 +- Установите реплики по умолчанию в `0` для шаблона `filebeat-*` (или для всех дата-индейсов на стенде):
 +  ```bash
 +  curl -k -u admin:'<ADMIN_PASSWORD>' -X PUT https://<IP_OpenSearch>:9200/_index_template/filebeat \
 +    -H 'Content-Type: application/json' -d '{
 +    "index_patterns": ["filebeat-*"],
 +    "template": { "settings": { "index.number_of_replicas": 0 } }
 +  }'
 +  ```
 +
 +### 7.5 Пропуски в логах при journald input
 +- Поставьте `seek: cursor` (как в примере) и не меняйте `STATE`-файл Filebeat.  
 +- Убедитесь, что служба имеет права читать журнал: `filebeat` обычно запускается под `root` и проблем нет.
 +
 +---
 +
 +## 8) Что дальше (к прод-среде)
 +
 +- Валидные TLS-сертификаты, `ssl.verification_mode: full`.  
 +- Тонкая настройка ролей/метаданных и разграничение индексов.  
 +- Политики жизненного цикла — в OpenSearch это Index State Management (ISM), а не ILM из Elasticsearch.  
 +- Мониторинг дисков (watermark), heap, снэпшоты.
 +
 +---
 +
 +**Готово.** Теперь Filebeat шипит логи в `filebeat-*`, и вы видите их в OpenSearch Dashboards.
отправка_логов_через_filebeat.txt · Последнее изменение: 2025/09/13 21:35 — kirill

DokuWiki Appliance - Powered by TurnKey Linux