Что такое 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:

Запуск:

1docker-compose up -d
2# Доступ к веб-интерфейсу: http://localhost:9000
3# Логин: admin, пароль: admin

Настройка входов (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:

1pip install pygelf
2# или
3poetry add pygelf

Создание стримов и правил

Пример правила для фильтрации логов:

1rule "Route error logs to security stream"
2when
3  has_field("level") AND to_string($message.level) == "ERROR"
4then
5  route_to_stream(id: "000000000000000000000002");
6end

Применение 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 для обеспечения высокой доступности.