Skip to content

📄 Использование Graylog

1. Описание системы

Graylog — это открытая система управления логами, предназначенная для централизованного сбора, анализа и визуализации данных из логов. Она поддерживает:

  • Сбор логов через syslog, GELF, Beats
  • Поиск и фильтрация логов
  • Алерты при определённых событиях
  • Встроенные дашборды
  • Интеграции с внешними системами (Slack, Jira, REST API)

Основные компоненты:

  • Graylog Server — основной сервер, обрабатывающий и анализирующий логи
  • MongoDB — используется для хранения конфигураций и метаданных
  • Elasticsearch — используется для индексации и поиска логов
  • Input — источники логов (syslog, HTTP, GELF и т.д.)
  • Outputs — отправка логов в другие системы

2. Установка Graylog

Пример установки на Ubuntu 20.04 / 22.04

2.1. Установка MongoDB

sudo apt-get install -y mongodb-org
sudo systemctl enable mongod
sudo systemctl start mongod

2.2. Установка Elasticsearch

Добавьте репозиторий Elastic:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update && sudo apt install elasticsearch

Настройте elasticsearch.yml:

cluster.name: graylog
action.auto_create_index: false

Запуск:

sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

2.3. Установка Graylog

Скачайте и установите пакет:

wget https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.deb
sudo dpkg -i graylog-5.0-repository_latest.deb
sudo apt update && sudo apt install graylog-server

3. Настройка Graylog

Файл конфигурации: /etc/graylog/server/server.conf

Обязательные параметры:

is_master = true
node_id_file = /etc/graylog/config/node-id
password_secret = YOUR_SECRET_PASSWORD_HERE
root_username = admin
root_password_sha2 = SHA256_HASH_OF_YOUR_PASSWORD
rest_listen_uri = http://0.0.0.0:9000/
web_listen_uri = http://0.0.0.0:9001/
elasticsearch_hosts = http://localhost:9200
mongodb_uri = mongodb://localhost/graylog

Получение хэша пароля:

echo -n yourpassword | shasum -a 256

Запуск:

sudo systemctl enable graylog-server
sudo systemctl start graylog-server

Откройте браузер: http://:9001


4. Подключение источников логов

Graylog поддерживает множество типов входов:

Тип входа Описание
Syslog TCP/UDP Классические протоколы передачи логов
GELF Формат сообщений Graylog для структурированных логов
HTTP Input Отправка логов через HTTP POST
Beats Input Интеграция с Filebeat и другими Beat'ами
Journalbeat Для систем с systemd journal

Пример: Создание Syslog UDP входа

  1. Перейдите в Web UI → System → Inputs
  2. Выберите Syslog UDP → Launch new input
  3. Укажите:
  4. Title: Syslog UDP
  5. Port: 514
  6. Bind address: 0.0.0.0
  7. Нажмите Save

5. Отправка логов в Graylog

5.1. Пример: Логирование с Linux-сервера через rsyslog

Откройте /etc/rsyslog.conf и добавьте:

*.* @graylog-server-ip:514

Перезапустите rsyslog:

sudo systemctl restart rsyslog

5.2. Пример: Логирование из Python

Используйте pygelf:

pip install pygelf

Код:

import logging
from pygelf import GelfUdpHandler

logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(GelfUdpHandler(host='graylog-server', port=12201))

logger.info('Hello from Python!', extra={'_app': 'myapp'})

5.3. Пример: Интеграция с Docker

docker run --log-driver=gelf \
  --log-opt gelf-address=udp://graylog-server:12201 \
  --log-opt tag=my-docker-app \
  my-application

6. Работа с интерфейсом

Основные возможности:

  • Search: поиск по ключевым словам, полям, временным промежуткам
  • Streams: группировка логов по правилам (например, ошибки, алерты)
  • Dashboards: создание дашбордов с графиками и таблицами
  • Alerts: триггеры на основе условий
  • Reports: отчёты и расписания

7. Язык запросов и фильтрация

Graylog использует Lucene-подобный синтаксис.

Примеры:

level:6 AND source:"server01"
_http_status_:500
"Connection refused"

Можно использовать операторы: - AND, OR, NOT - "exact phrase" - field:value - _exists_:field - range запросы


8. Настройка алертов

Шаги:

  1. Перейдите в Alerts → Manage alert conditions
  2. Нажмите Create condition
  3. Выберите тип условия (например, message count, field value threshold)
  4. Укажите параметры (например, количество ошибок за 5 минут > 10)
  5. Сохраните и настройте уведомления

9. Интеграция с внешними системами

Graylog может отправлять уведомления через:

  • Email
  • Slack (через Webhook)
  • PagerDuty
  • REST API
  • Microsoft Teams

Пример: Интеграция с Slack

  1. Создайте Incoming Webhook в Slack
  2. Перейдите в Graylog: System → Outputs
  3. Добавьте новый Output типа HTTP
  4. Вставьте URL из Slack и настройте JSON-шаблон

Пример payload:

{
  "text": "ALERT: {{alert_description}}",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*{{alert_title}}*\n{{alert_description}}"
      }
    }
  ]
}

10. Безопасность

  • Используйте HTTPS (настройка через Nginx или Apache)
  • Включите аутентификацию (LDAP, Active Directory, OAuth)
  • Настройте роли и разграничение доступа
  • Используйте шифрование для передачи логов (TLS)

11. Хранение и масштабирование

  • Логи хранятся в Elasticsearch
  • Можно настраивать retention policy (по времени или объёму)
  • Graylog поддерживает кластеризацию для горизонтального масштабирования

12. Лицензия и версии

Версия Возможности
Open Source Базовые функции логирования и анализа
Enterprise Аналитика, машинное обучение, SIEM, LDAP, SSO и др.

13. Полезные ссылки