Что такое Graylog?
Graylog — это open-source платформа для централизованного сбора, хранения и анализа логов. Она предоставляет мощные возможности для поиска, визуализации и мониторинга логов в реальном времени, являясь альтернативой ELK Stack.
Основные возможности Graylog
- Централизованный сбор логов — агрегация данных из множества источников
- Мощный поиск — полнотекстовый поиск с использованием Elasticsearch
- Потоковая обработка — обработка и фильтрация данных в реальном времени
- Дашборды и визуализация — создание информативных панелей
- Алерты и уведомления — настройка оповещений по условиям
- Управление пользователями — ролевая модель доступа
Архитектура Graylog
Graylog состоит из нескольких компонентов:
- Graylog Server — основной сервер обработки
- Elasticsearch — хранилище и поисковый движок
- MongoDB — хранение конфигурации и метаданных
- Graylog Web Interface — веб-интерфейс управления
Установка Graylog
Установка через Docker Compose:
1version: '3'
2services:
3 mongo:
4 image: mongo:5.0
5 volumes:
6 - mongo_data:/data/db
7
8 elasticsearch:
9 image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
10 environment:
11 - http.host=0.0.0.0
12 - transport.host=localhost
13 - network.host=0.0.0.0
14 - "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
15 volumes:
16 - es_data:/usr/share/elasticsearch/data
17
18 graylog:
19 image: graylog/graylog:5.0
20 environment:
21 - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
22 - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
23 - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
24 entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh
25 restart: always
26 depends_on:
27 - mongo
28 - elasticsearch
29 ports:
30 - 9000:9000
31 - 1514:1514
32 - 1514:1514/udp
33 - 12201:12201
34 - 12201:12201/udp
35
36volumes:
37 mongo_data:
38 es_data:
Запуск:
Настройка входов (Inputs)
Пример конфигурации GELF HTTP input через API:
1curl -X POST "http://admin:admin@localhost:9000/api/system/inputs" \
2 -H "Content-Type: application/json" \
3 -H "X-Requested-By: cli" \
4 -d '{
5 "title": "GELF HTTP",
6 "type": "org.graylog2.inputs.gelf.http.GELFHttpInput",
7 "configuration": {
8 "bind_address": "0.0.0.0",
9 "port": 12201,
10 "recv_buffer_size": 262144
11 },
12 "global": true
13 }'
Отправка логов в Graylog
Пример отправки логов через Python:
1import logging
2import pygelf
3
4# Настройка GELF handler
5logging.basicConfig(level=logging.INFO)
6logger = logging.getLogger()
7logger.addHandler(pygelf.GelfUdpHandler(host='localhost', port=12201))
8
9# Отправка логов
10logger.info("Application started", extra={
11 'service': 'web-app',
12 'environment': 'production',
13 'user_id': 12345
14})
15
16logger.error("Database connection failed", extra={
17 'service': 'web-app',
18 'error_code': 'DB_CONN_001'
19})
Установка pygelf:
Создание стримов и правил
Пример правила для фильтрации логов:
Применение Graylog
- Централизация логов — сбор логов со всех серверов и приложений
- Мониторинг безопасности — анализ событий безопасности
- Troubleshooting — быстрый поиск и анализ ошибок
- Compliance — соответствие требованиям аудита
- Операционная аналитика — анализ производительности
Преимущества использования
- Простота настройки — готовые шаблоны и экстракторы
- Масштабируемость — поддержка кластеризации
- Гибкость — множество типов входов и выходов
- Сообщество — активное open-source сообщество
- Интеграции — поддержка множества систем и протоколов
Интеграция с системами мониторинга
Graylog интегрируется с:
- Grafana — для создания дашбордов
- PagerDuty — для эскалации инцидентов
- Slack/Teams — для уведомлений команды
- LDAP/Active Directory — для аутентификации
FAQ
Чем Graylog отличается от ELK Stack?
Graylog предоставляет более простую настройку из коробки, встроенные алерты и пользовательский интерфейс, в то время как ELK требует больше конфигурации, но предлагает большую гибкость.
Какие требования к ресурсам?
Минимальные требования: 4GB RAM, 2 CPU cores. Для production рекомендуется 8GB+ RAM и SSD диски для Elasticsearch.
Поддерживает ли Graylog высокую доступность?
Да, Graylog поддерживает кластеризацию серверов и может работать с кластером Elasticsearch для обеспечения высокой доступности.