Установка Graylog на Rocky Linux: централизованное управление логами
- Пошаговое руководство по установке и настройке Graylog на Rocky Linux 8 с зависимостями: Java OpenJDK 11, MongoDB и Elasticsearch 7.x.
- Настройка входа Syslog UDP, конфигурация rsyslog-клиента и рекомендации по безопасности (firewalld, SELinux, пароли, ресурсы JVM).

Graylog — бесплатная и open-source платформа для централизованного сбора, хранения и анализа логов в реальном времени. Graylog написан на Java и использует MongoDB для метаданных и Elasticsearch как поисковый движок. Эта инструкция показывает, как развернуть стек на сервере с Rocky Linux 8, включающем установку зависимостей, настройку самого Graylog и отправку логов с Linux-клиента через Syslog UDP.
В этой статье:
- архитектурный обзор стека;
- требования и подготовка системы;
- установка Java, MongoDB, Elasticsearch;
- установка и базовая настройка Graylog;
- настройка входа (Syslog UDP) и отправка логов с rsyslog;
- проверка, отладка, безопасность и рекомендации на прод.
Архитектурный обзор
Коротко о ролях компонентов:
- Java OpenJDK — среда выполнения Graylog.
- MongoDB — хранит конфигурацию и метаданные Graylog.
- Elasticsearch 7.x — хранит и индексирует события/логи.
- Graylog Server — принимает сообщения, нормализует, парсит и предоставляет веб-интерфейс.
- rsyslog/other collectors — отправляют логи в Graylog через настроенные Input.
Памятка: текущая версия Graylog в инструкции совместима с Elasticsearch 7.x. Elasticsearch 8+ несовместим с описанной версией Graylog и приведет к ошибкам.
Предварительные требования
- Сервер с Rocky Linux 8.
- Неразрешённый пользователь с sudo-привилегиями.
- Активный firewalld и SELinux (рекомендуется включить).
- Доступ к интернету для загрузки репозиториев и пакетов.
Важно: этот гайд рассчитан на простую одноузловую установку для тестирования или малого производства. Для высоконагруженных инсталляций рассматривайте кластеризацию Elasticsearch, репликацию MongoDB и горизонтальное масштабирование Graylog.
Установка Java OpenJDK
Graylog требует Java. Для стабильности используем OpenJDK 11.
- Просмотреть доступные версии OpenJDK:
sudo dnf search openjdk- Установить OpenJDK 11:
sudo dnf install java-11-openjdk-develПодтвердите установку ‘y’ при запросе.
- Проверить версию Java:
java -versionОжидается OpenJDK 11.
Установка MongoDB
MongoDB используется Graylog для хранения конфигурации и метаданных.
- Добавьте репозиторий MongoDB:
cat <- Проверить список репозиториев:
sudo dnf repolist
- Установить MongoDB:
sudo dnf install mongodb-orgПодтвердите добавление GPG-ключа и установку. Затем:
sudo systemctl daemon-reload
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod
Примечание: MongoDB по умолчанию слушает порт 27017. Если сервер в защищённой сети, откройте порт в firewalld или используйте VPN/SSH-туннель.
Установка Elasticsearch 7.x
Graylog в этой инструкции требует Elasticsearch 7.x. Установка другой мажорной версии может привести к проблемам.
- Добавьте репозиторий Elasticsearch 7.x:
cat <- Проверить репозитории:
sudo dnf repolist
- Установить Elasticsearch:
sudo dnf install elasticsearchПодтвердите добавление GPG-ключа. После установки настройте базовые параметры:
- Отредактируйте /etc/elasticsearch/elasticsearch.yml:
sudo nano /etc/elasticsearch/elasticsearch.ymlДобавьте/раскомментируйте:
cluster.name: graylog-rocky8
action.auto_create_index: false- Настройка JVM памяти в /etc/elasticsearch/jvm.options:
sudo nano /etc/elasticsearch/jvm.optionsУстановите Xms/Xmx в зависимости от ресурсов сервера, например:
-Xms1g
-Xmx1g- Примените и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
Проверка через curl:
curl localhost:9200
Важно: Elasticsearch интенсивно использует память и диск. Для продовых инсталляций планируйте отдельный узел/кластер и мониторинг SLI/SLO.
Установка Graylog Server
- Добавьте репозиторий Graylog:
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.3-repository_latest.rpm- Проверить репозитории:
sudo dnf repolist
- Установить Graylog и плагины интеграций (опционально):
sudo dnf install graylog-server graylog-integrations-pluginsПодтвердите добавление GPG-ключа.
- Установите утилиту pwgen для генерации секретов:
sudo dnf install pwgen
- Сгенерируйте password_secret и хэш пароля администратора:
sudo pwgen -N 1 -s 96Скопируйте значение в безопасное хранилище.
Для root-пароля (sha256): используйте сильный пароль и получите sha256-хеш. Примерный способ в терминале:
echo -n 'введите_пароль_здесь' | sha256sum | cut -d' ' -f1- Откройте файл конфигурации Graylog:
sudo nano /etc/graylog/server/server.confУстановите сгенерированные значения:
password_secret = sгенерированный_секрет_из_pwgen
root_password_sha2 = сгенерированный_sha256_хешНастройте http_bind_address — внутренний IP сервера и порт (по умолчанию 9000):
http_bind_address = 0.0.0.0:9000Сохраните изменения.

- Запустите сервис Graylog:
sudo systemctl daemon-reload
sudo systemctl enable graylog-server
sudo systemctl start graylog-server
sudo systemctl status graylog-server
- Откройте порт для веб-интерфейса:
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reloadНастройка SELinux
Если SELinux включён в режиме enforcing, добавьте необходимые разрешения:
- Установите утилиты для управления SELinux:
sudo dnf install policycoreutils policycoreutils-python-utils
- Добавьте булевы значения и порты:
sudo setsebool -P httpd_can_network_connect 1
sudo semanage port -a -t http_port_t -p tcp 9000
sudo semanage port -a -t http_port_t -p tcp 9200
sudo semanage port -a -t mongod_port_t -p tcp 27017Эти команды разрешают веб-процессам устанавливать сетевые соединения и отмечают порты как допустимые для HTTP и MongoDB.
Создание входа (Input) в Graylog
Вход (Input) отвечает за приём сообщений по разному протоколу/формату.
- Откройте веб-интерфейс Graylog: http://IP_сервера:9000/ и выполните вход под учётной записью администратора.

В веб-консоли: System → Inputs → Launch new input.
Выберите тип input — Syslog UDP. Укажите: Title ‘syslog-udp-input’, Bind address — внутренний IP или 0.0.0.0, Port — 5142 (пример).

- Сохраните. Статус должен стать running.

- Разрешите порт в firewalld для UDP:
sudo firewall-cmd --add-port=5142/udp --permanent
sudo firewall-cmd --reloadОтправка логов с Linux-клиента через rsyslog
На клиенте (например, linux-host1) настроим rsyslog для отправки системных логов в Graylog Input.
- Убедитесь, что rsyslog установлен и запущен:
sudo systemctl status rsyslog
- Создайте конфигурацию /etc/rsyslog.d/graylog.conf:
sudo nano /etc/rsyslog.d/graylog.confДобавьте строку (отправка всех сообщений):
*.*@192.168.5.100:5142;RSYSLOG_SyslogProtocol23FormatЗамените IP и порт на адрес вашего Graylog.
- Перезапустите rsyslog:
sudo systemctl restart rsyslogПодождите несколько минут и проверьте через Search в Graylog — должны появиться сообщения от linux-host1.

Тестирование и отладка
Если логи не приходят — проверьте последовательно:
- Сервисы: graylog-server, elasticsearch, mongod — все должны быть в состоянии running.
- Порты и firewall: 9000/tcp, 9200/tcp, 5142/udp, 27017/tcp открыты с правильной зоны.
- SELinux: временно переключите в permissive для проверки: sudo setenforce 0. Если это решает проблему, добавьте нужные правила.
- Логи сервисов: /var/log/graylog-server/server.log, journalctl -u graylog-server.
- Проверка UDP: nc -u -v -w1 192.168.5.100 5142 и отправка тестовых данных.
- Формат сообщений: убедитесь, что клиент использует поддерживаемый формат (syslog protocol).
Примеры команд для диагностики:
# Проверить прослушивающие порты
sudo ss -tunlp | egrep '9000|9200|5142|27017'
# Проверить логи Graylog
sudo journalctl -u graylog-server -f
# Отправить тестовое UDP-сообщение
echo '<134>1 2025-01-01T00:00:00Z testhost testapp - - - test message' | nc -u -w1 192.168.5.100 5142Практические советы по производительности и ресурсам
- Elasticsearch: выделите минимум 1–2 GB heap на небольшой инстанс, но не более 50% доступной памяти. Для продовых систем выделяйте отдельные узлы данных и master-узлы.
- Диск: используйте быстрые SSD для индексов. Следите за использованием inode и дискового пространства для индексов.
- Ротация индексов: настраивайте retention и lifecycle policies, чтобы не переполнять диск.
- MongoDB: используйте journaling и мониторьте репликацию для отказоустойчивости.
- Graylog: на нагруженных системах масштабируйте входы и processing pipelines горизонтально.
Безопасность и харднинг
- Всегда используйте сильные пароли и храните их в менеджере паролей.
- Ограничьте доступ к порту 9000 через firewall и/или прокси (NGINX с TLS) только для доверенных подсетей.
- Рекомендуется включить TLS для входов, по возможности использовать TCP+TLS вместо UDP.
- Настройте систему аутентификации/LDAP/SSO если требуется централизованный доступ.
- Обновляйте пакеты и следите за CVE для Elasticsearch, Graylog и MongoDB.
Пример добавления обратного прокси с TLS (аннотация): в продакшене лучше поставить NGINX перед Graylog для TLS, BasicAuth и rate-limiting.
Шаблоны и контрольный список (Role-based)
Список задач администратора (Admin):
- Проверить системные требования и доступность репозиториев.
- Установить Java, MongoDB, Elasticsearch, Graylog.
- Сгенерировать password_secret и хэш пароля администратора.
- Настроить firewall и SELinux.
- Настроить бэкапы MongoDB и snapshot политики Elasticsearch.
Список задач оператора (Operator):
- Следить за журналами и метриками сервиса.
- Управлять retention и lifecycle политиками Elasticsearch.
- Добавлять новые Inputs и stream/alert правила.
Список задач разработчика (Developer):
- Настроить extractors/processing pipelines для структурирования логов.
- Проектировать парсеры для пользовательских форматов логов.
- Тестировать отправку логов в тестовый Input.
Критерии приёмки
Для базовой инсталляции нужно убедиться:
- Graylog UI доступен на порту 9000 и аутентификация работает.
- Elasticsearch отвечает на localhost:9200 и кластер статус green/yellow.
- MongoDB сервис запущен и доступен на 27017.
- Пример логов от клиента виден в Search в течение 5 минут после отправки.
- Порты 9000/tcp и 5142/udp открыты и проксируются при необходимости.
Частые ошибки и решения
- ‘Elasticsearch incompatible version’ — убедитесь, что установлена версия 7.x.
- Graylog не стартует — проверьте /etc/graylog/server/server.conf, правильность password_secret и root_password_sha2.
- Логи не приходят по UDP — проверьте firewalld, SELinux и правильность bind address/port на Input.
- Высокое использование JVM — уменьшите heap Elasticsearch или добавьте больше памяти.
Альтернативы и когда выбирать их
- ELK (Elasticsearch + Logstash + Kibana) — хорош при необходимости сложных конвейеров парсинга; Logstash более тяжёлый.
- Loki + Promtail + Grafana — эффективен для метрик и логов в средах с высокой плотностью текстовых логов; упрощённая схема хранения.
- Splunk (коммерческий) — мощный, но платный; подходит для крупных организаций с требованием SLA и поддержкой.
Выбор: для управления логами из разных источников, быстрых развёртываний и активной работы со стримами Graylog — удобный компромисс функциональности и простоты.
Короткая методология развёртывания (мини-SOP)
- Проверить системные требования и создать резервную копию конфигураций.
- Установить Java, затем MongoDB, затем Elasticsearch.
- Установить Graylog, задать secret и root password sha256.
- Настроить firewall и SELinux.
- Создать Input и протестировать с одного клиента.
- Настроить retention и бэкапы.
- Документировать конфигурацию и ключи доступа.
Тестовые сценарии и критерии приёмки
- Отправка тестового сообщения с клиента должна появиться в Search в пределах 5 минут.
- При рестарте graylog-server все сервисы восстанавливаются автоматически.
- Неправильный формат сообщения не должен приводить к падению сервера; такие сообщения классифицируются как raw.
Короткий глоссарий
- Input — точка приёма сообщений в Graylog.
- Stream — правило маршрутизации сообщений в Graylog.
- Extractor/Pipeline — правила извлечения и трансформации полей.
- Index/Lifecycle — управление хранением и удалением данных в Elasticsearch.
Короткая сводка
- Установили Java 11, MongoDB, Elasticsearch 7.x и Graylog на Rocky Linux 8.
- Настроили Syslog UDP Input и отправку логов с rsyslog.
- Рассмотрены базовые меры безопасности, SELinux и практики по производительности.
Важно: при выводе в продакшн планируйте отказоустойчивость компонентов и TLS для транспортов.
Конец руководства.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента