Установка Graylog 2 на Debian 9
Важно: перед началом убедитесь, что у вас есть резервные копии и доступ к консоли сервера. Локальные команды выполняйте от root или через sudo.

Graylog — бесплатный и открытый инструмент управления логами на базе Java, Elasticsearch и MongoDB. Он собирает, индексирует и анализирует системные журналы из централизованного места. С помощью Graylog удобно мониторить SSH-входы, обнаруживать подозрительную активность и отлаживать приложения. Graylog предоставляет мощный язык запросов, систему оповещений, конвейер обработки данных для трансформации и расширяемость через REST API и плагины.
Краткое определение ключевых компонентов:
- Elasticsearch — поисковый движок, хранит все сообщения и обеспечивает поиск.
- MongoDB — хранит конфигурации и метаданные.
- Graylog server — принимает сообщения, обрабатывает их и предоставляет веб-интерфейс для анализа.
Подготовка и требования
- Сервер с Debian 9 (Stretch).
- Минимум 4 ГБ оперативной памяти рекомендуется для небольших установок.
- Статический IP-адрес, в примерах используется 192.168.0.187.
Примечание: при развёртывании в продакшн увеличьте ресурсы, используйте кластер Elasticsearch и настройте резервирование данных.
1. Установка необходимых пакетов
Перед началом установите Java 8 и вспомогательные пакеты. Не все пакеты доступны в стандартном репозитории Debian 9, поэтому добавим backports.
Сначала войдите как root и создайте файл:
nano /etc/apt/sources.list.d/backport.listДобавьте строку:
deb http://ftp.debian.org/debian stretch-backports main
Сохраните файл и обновите систему:
apt-get update -y
apt-get upgrade -yЗатем установите нужные пакеты:
apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen -yПосле установки можно переходить к MongoDB.
2. Установка MongoDB
MongoDB нужна для хранения конфигурации и метаинформации Graylog. В Debian 9 её можно установить из стандартного репозитория:
apt-get install mongodb-server -yПосле установки MongoDB перейдите к установке Elasticsearch.
3. Установка Elasticsearch
Elasticsearch хранит лог-сообщения и обеспечивает быстрый поиск. В Debian 9 Elasticsearch версии 2.x нужно подключить отдельно.
Добавьте GPG-ключ:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -Создайте файл репозитория:
nano /etc/apt/sources.list.d/elasticsearch.listВставьте:
deb https://packages.elastic.co/elasticsearch/2.x/debian stable main
Обновите и установите Elasticsearch:
apt-get update -y
apt-get install elasticsearch -yИзмените основной конфиг:
nano /etc/elasticsearch/elasticsearch.ymlВнесите изменения (пример для одиночного узла с IP 192.168.0.187):
cluster.name: graylog
network.host: 192.168.0.187
discovery.zen.ping.timeout: 10s
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.187:9300"]
Запустите и включите сервис:
systemctl start elasticsearch
systemctl enable elasticsearchПроверка состояния кластера:
curl -XGET 'http://192.168.0.187:9200/_cluster/health?pretty=true'Ожидаемый ответ содержит поле “status” со значением “green” в рабочем одиночном кластере. Если статус “yellow” или “red”, проверьте конфигурацию и логи Elasticsearch.
Важно: версии Elasticsearch и Graylog должны быть совместимы. Для Graylog 2.2 используются соответствующие версии Elasticsearch 2.x.
4. Установка Graylog
Добавьте репозиторий Graylog и установите пакет:
wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb
dpkg -i graylog-2.2-repository_latest.deb
apt-get update -y
apt-get install graylog-server -yПосле установки необходимо задать password_secret и хэш пароля root (sha256). Для генерации секретов используйте:
pwgen -N 1 -s 96Пример вывода (сохраните это значение в надёжном месте):
TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC
Генерация sha256 для пароля администратора:
echo -n youradminpassword | sha256sumПример вывода (это хэш пароля):
e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee
Теперь отредактируйте конфигурационный файл Graylog:
nano /etc/graylog/server/server.confВставьте или измените параметры, как в примере ниже (сохраните ваши password_secret и root_password_sha2):
is_master = true
node_id_file = /etc/graylog/server/node-id
########past-your-password-secret-here#########
password_secret = TRXbNPoW4gGC8BN8Gzl4wH3jtfLoi06WCJqia18UtYyPaNLx4r8U7jUPRlIJHoGGxrCjZVqAvW2DcueI6N1zHoy2bKEWLyyC
root_username = admin
#######past-your-root-hash-password-here##########
root_password_sha2 = e3c5925aa22abdfa18cf197a7b218fcad31acb6409d2e2dbebae807d3a9750ee
root_timezone = UTC
plugin_dir = /usr/share/graylog-server/plugin
rest_listen_uri = http://0.0.0.0:9000/api/
rest_enable_cors = true
web_listen_uri = http://0.0.0.0:9000/
rotation_strategy = count
elasticsearch_max_docs_per_index = 20000000
elasticsearch_max_number_of_indices = 7
retention_strategy = delete
elasticsearch_shards = 4
elasticsearch_replicas = 1
elasticsearch_index_prefix = graylog
allow_leading_wildcard_searches = true
allow_highlighting = false
elasticsearch_cluster_name = graylog
elasticsearch_discovery_zen_ping_unicast_hosts = 192.168.0.187:9300
elasticsearch_http_enabled = false
elasticsearch_network_host = 0.0.00
elasticsearch_discovery_initial_state_timeout = 3s
elasticsearch_analyzer = standard
output_batch_size = 500
output_flush_interval = 1
output_fault_count_threshold = 5
output_fault_penalty_seconds = 30
processbuffer_processors = 5
outputbuffer_processors = 3
processor_wait_strategy = blocking
ring_size = 65536
inputbuffer_ring_size = 65536
inputbuffer_processors = 2
inputbuffer_wait_strategy = blocking
message_journal_enabled = true
message_journal_dir = /var/lib/graylog-server/journal
async_eventbus_processors = 2
lb_recognition_period_seconds = 3
alert_check_interval = 60
mongodb_uri = mongodb://localhost/graylog
mongodb_max_connections = 1000
mongodb_threads_allowed_to_block_multiplier = 5
content_packs_dir = /usr/share/graylog-server/contentpacks
content_packs_auto_load = grok-patterns.json
proxied_requests_thread_pool_size = 32
Сохраните файл и запустите Graylog:
systemctl start graylog-server
systemctl enable graylog-server5. Настройка брандмауэра
Веб-интерфейс Graylog слушает порт 9000. В примере используется UFW.
Установите UFW (если нужно):
apt-get install ufw -y
ufw enable
ufw allow 9000
ufw statusПримечание: в продакшн окружении вместо открытия порта на всю сеть используйте правила для конкретных подсетей, VPN или обратный прокси (nginx/HAProxy) с SSL.
6. Доступ к веб-интерфейсу и приём логов
Откройте в браузере URL http://192.168.0.187:9000. На странице входа используйте логин admin и пароль, соответствующий root_password_sha2, который вы сгенерировали.

После входа вы увидите панель управления и подсказки по началу работы.

Добавим вход (Input) для приёма syslog UDP:
- Перейдите System -> Inputs.
- Выберите Syslog UDP и нажмите Launch new input.
- Заполните Title, Port (например, 8514), Bind address и нажмите Save.


Теперь Graylog будет принимать системные логи по порту 8514.
На клиенте настройте rsyslog для пересылки логов на Graylog. Отредактируйте /etc/rsyslog.conf:
nano /etc/rsyslog.confДобавьте:
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 8514
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @192.168.0.187:8514;GRAYLOGRFC5424
Сохраните и перезапустите rsyslog:
systemctl restart rsyslogЧерез несколько секунд сообщения начнут появляться в Graylog. В разделе Sources вы увидите системные логи и попытки входа по SSH.

Практические советы по эксплуатации и безопасности
Важно: логи могут содержать персональные данные. Убедитесь в соответствии с политиками конфиденциальности и GDPR, при необходимости анонимизируйте PII.
Рекомендации безопасности:
- Не используйте открытый HTTP в продакшн: настройте обратный прокси (nginx) с TLS и автологиификацией.
- Ограничьте доступ к портам Elasticsearch и MongoDB только для сервисов внутри защищённой сети.
- Регулярно меняйте и храните password_secret в защищённом хранилище (Vault/ключевые менеджеры).
- Включите ротацию и хранение индексов по политикам, чтобы контролировать рост дискового пространства.
- Настройте оповещения для аномалий (неудачные входы, маршрутизация логов и др.).
Альтернативные подходы и совместимость
Если вы планируете современное развёртывание, рассмотрите:
- Использование Graylog более новых версий (поддерживаемые версии требуют совместимого Elasticsearch).
- Переход на Elasticsearch 6.x/7.x требует Graylog 3.x и выше.
- В контейнерах: разверните Graylog, Elasticsearch и MongoDB в Docker/Kubernetes с явной конфигурацией хранилищ и ресурсов.
Модель принятия решений (эвристика):
- Малые инсталляции (до нескольких ГБ логов в сутки): одноузловой стек.
- Средние/крупные системы: отдельные кластеры Elasticsearch и реплики MongoDB.
- Критические системы: HA для Graylog и резервирование индексов Elasticsearch.
Проверка приёмки и тест-кейсы
Критерии приёмки:
- Веб-интерфейс Graylog доступен по http://
:9000 и требует аутентификации. - Elasticsearch отвечает на /_cluster/health со статусом green или yellow (зависит от реплик).
- Graylog принимает сообщения через созданный Input (проверить через rsyslog).
- Логи появляются в поиске и можно построить простой поиск по hostname и уровню severity.
Тесты:
- Отправить тестовое сообщение с клиента и убедиться, что запись появилась в Graylog в течение 30 секунд.
- Проверить, что создание alert’а (например, по числу неудачных логинов) срабатывает.
- Изменить password_secret на некорректный — Graylog не стартует; восстановить корректный — сервис поднимается.
Рольовые чек-листы
Администратор инфраструктуры:
- Проверить доступность портов 9000, 8514, 9300.
- Проверить состояние сервисов (systemctl status).
- Контролировать диск/IO Elasticsearch.
Инженер приложений:
- Настроить отправку логов приложение → rsyslog → Graylog.
- Написать grok-паттерны для структурирования логов.
Оператор безопасности:
- Настроить оповещения по неудачным входам и подозрительной активности.
- Проверять аномальные spike’и в логах.
Мини-руководство по откату/инцидентам
Если Graylog не стартует после изменения server.conf:
- Проверить логи: journalctl -u graylog-server -b.
- Откатить последние изменения server.conf или восстановить из резервной копии.
- Убедиться, что MongoDB и Elasticsearch работают.
- Перезапустить Graylog: systemctl restart graylog-server.
Краткая методология развёртывания (SOP)
- Подготовка сервера и сетевых правил.
- Установка Java и вспомогательных пакетов.
- Установка MongoDB → Elasticsearch → Graylog.
- Генерация password_secret и root_password_sha2.
- Настройка Graylog и запуск сервиса.
- Открытие необходимых портов и добавление Inputs.
- Настройка отправки логов с клиентов.
- Валидация данных и настройка оповещений.
Когда это не подходит
Контраргументы и ограничения:
- Для очень больших объёмов логов (терабайты в день) может потребоваться специализированный кластер Elasticsearch и сложная архитектура хранения.
- Если требуется полностью управляемое решение с минимальным управлением инфраструктурой, стоит рассмотреть облачные сервисы логирования.
Краткая сводка
Поздравляем — вы установили и сконфигурировали Graylog 2 на Debian 9. Вы можете централизованно собирать и анализировать логи, настраивать оповещения и расширять функционал через плагины и REST API.
Дополнительные ресурсы: официальная документация Graylog — http://docs.graylog.org/en/2.2/pages/getting_started.html
Если у вас остались вопросы или нужно помочь с настройкой конкретных парсеров/grok-паттернов, оставьте комментарий.
Важно: храните секреты и пароли в безопасном месте и применяйте TLS в продакшн-среде.
Ключевые выводы:
- Graylog собирает логи с клиентов и индексирует их в Elasticsearch.
- MongoDB хранит конфигурацию Graylog.
- Для продакшн используется TLS, ограничение доступа и резервирование данных.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента