Что такое Beats?
Beats — это семейство легковесных агентов сбора данных от Elastic, предназначенных для отправки данных из различных источников в Elasticsearch или Logstash. Каждый Beat специализируется на определенном типе данных и оптимизирован для минимального потребления ресурсов.
Основные типы Beats
- Filebeat — сбор и отправка логов из файлов
- Metricbeat — мониторинг системных и сервисных метрик
- Packetbeat — анализ сетевого трафика в реальном времени
- Winlogbeat — сбор событий Windows Event Log
- Auditbeat — мониторинг файловой системы и процессов
- Heartbeat — проверка доступности сервисов
- Functionbeat — сбор данных из serverless окружений
Установка Beats
Установка Filebeat через Docker:
1docker run -d \
2 --name=filebeat \
3 --user=root \
4 --volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
5 --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \
6 --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
7 elastic/filebeat:8.11.0 filebeat -e -strict.perms=false
Установка на Ubuntu/Debian:
Конфигурация Filebeat
Пример конфигурации для сбора логов Nginx:
1filebeat.inputs:
2- type: log
3 enabled: true
4 paths:
5 - /var/log/nginx/*.log
6 fields:
7 service: nginx
8 environment: production
9 fields_under_root: true
10
11output.elasticsearch:
12 hosts: ["localhost:9200"]
13 index: "nginx-logs-%{+yyyy.MM.dd}"
14
15setup.template.name: "nginx-logs"
16setup.template.pattern: "nginx-logs-*"
17
18processors:
19- add_host_metadata:
20 when.not.contains.tags: forwarded
Конфигурация Metricbeat
Пример для мониторинга системы и Docker:
1metricbeat.config.modules:
2 path: ${path.config}/modules.d/*.yml
3 reload.enabled: false
4
5metricbeat.modules:
6- module: system
7 metricsets:
8 - cpu
9 - load
10 - memory
11 - network
12 - process
13 - process_summary
14 enabled: true
15 period: 10s
16
17- module: docker
18 metricsets:
19 - container
20 - cpu
21 - diskio
22 - memory
23 - network
24 hosts: ["unix:///var/run/docker.sock"]
25 period: 10s
26
27output.elasticsearch:
28 hosts: ["localhost:9200"]
Применение Beats
- Централизованное логирование — сбор логов с множества серверов
- Мониторинг инфраструктуры — метрики CPU, памяти, дисков
- Безопасность — аудит файловой системы и процессов
- Сетевой мониторинг — анализ трафика и производительности
- Uptime мониторинг — проверка доступности сервисов
Интеграция с Python
Отправка пользовательских метрик через Python:
1import json
2import socket
3from datetime import datetime
4
5def send_custom_metric(metric_name, value, tags=None):
6 """Отправка кастомной метрики в формате, совместимом с Beats"""
7
8 metric = {
9 "@timestamp": datetime.utcnow().isoformat(),
10 "metricset": {
11 "name": "custom",
12 "module": "python-app"
13 },
14 metric_name: value,
15 "tags": tags or {}
16 }
17
18 # Отправка через UDP (требует настройки input в Logstash)
19 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
20 sock.sendto(json.dumps(metric).encode(), ('localhost', 5959))
21 sock.close()
22
23# Использование
24send_custom_metric("user_registrations", 42, {"app": "web", "env": "prod"})
Преимущества использования
- Легковесность — минимальное потребление ресурсов
- Специализация — каждый Beat оптимизирован для своей задачи
- Надежность — механизмы гарантированной доставки данных
- Простота — легкая установка и конфигурация
- Интеграция — бесшовная работа с Elastic Stack
Мониторинг Beats
Проверка статуса и метрик:
FAQ
Какой Beat выбрать для логов приложений?
Для большинства случаев подойдет Filebeat. Он может собирать логи из файлов, Docker контейнеров и многих других источников.
Можно ли использовать Beats без Elasticsearch?
Да, Beats могут отправлять данные в Logstash, Kafka, Redis и другие системы через различные output плагины.
Как обеспечить высокую доступность Beats?
Можно настроить отправку данных в несколько Elasticsearch кластеров, использовать load balancing и настроить автоматический restart при сбоях.