📄 Использование 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://
4. Подключение источников логов
Graylog поддерживает множество типов входов:
Тип входа | Описание |
---|---|
Syslog TCP/UDP | Классические протоколы передачи логов |
GELF | Формат сообщений Graylog для структурированных логов |
HTTP Input | Отправка логов через HTTP POST |
Beats Input | Интеграция с Filebeat и другими Beat'ами |
Journalbeat | Для систем с systemd journal |
Пример: Создание Syslog UDP входа
- Перейдите в Web UI →
System → Inputs
- Выберите
Syslog UDP
→ Launch new input - Укажите:
- Title:
Syslog UDP
- Port:
514
- Bind address:
0.0.0.0
- Нажмите 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. Настройка алертов
Шаги:
- Перейдите в
Alerts → Manage alert conditions
- Нажмите
Create condition
- Выберите тип условия (например, message count, field value threshold)
- Укажите параметры (например, количество ошибок за 5 минут > 10)
- Сохраните и настройте уведомления
9. Интеграция с внешними системами
Graylog может отправлять уведомления через:
- Slack (через Webhook)
- PagerDuty
- REST API
- Microsoft Teams
Пример: Интеграция с Slack
- Создайте Incoming Webhook в Slack
- Перейдите в Graylog:
System → Outputs
- Добавьте новый Output типа
HTTP
- Вставьте 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 и др. |