Гид по технологиям

Установка Graylog на Rocky Linux: централизованное управление логами

• 8 min read • DevOps • Обновлено 21 Nov 2025
Graylog на Rocky Linux: установка и настройка
Graylog на Rocky Linux: установка и настройка

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

Логотип и обзор Graylog

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.

  1. Просмотреть доступные версии OpenJDK:
sudo dnf search openjdk
  1. Установить OpenJDK 11:
sudo dnf install java-11-openjdk-devel

Подтвердите установку ‘y’ при запросе.

  1. Проверить версию Java:
java -version

Ожидается OpenJDK 11.

Установка MongoDB

MongoDB используется Graylog для хранения конфигурации и метаданных.

  1. Добавьте репозиторий MongoDB:
cat <
  1. Проверить список репозиториев:
sudo dnf repolist

Список репозиториев с MongoDB

  1. Установить MongoDB:
sudo dnf install mongodb-org

Подтвердите добавление GPG-ключа и установку. Затем:

sudo systemctl daemon-reload
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

Сервис MongoDB работает

Примечание: MongoDB по умолчанию слушает порт 27017. Если сервер в защищённой сети, откройте порт в firewalld или используйте VPN/SSH-туннель.

Установка Elasticsearch 7.x

Graylog в этой инструкции требует Elasticsearch 7.x. Установка другой мажорной версии может привести к проблемам.

  1. Добавьте репозиторий Elasticsearch 7.x:
cat <
  1. Проверить репозитории:
sudo dnf repolist

Добавлен репозиторий Elasticsearch 7.x

  1. Установить Elasticsearch:
sudo dnf install elasticsearch

Подтвердите добавление GPG-ключа. После установки настройте базовые параметры:

  1. Отредактируйте /etc/elasticsearch/elasticsearch.yml:
sudo nano /etc/elasticsearch/elasticsearch.yml

Добавьте/раскомментируйте:

cluster.name: graylog-rocky8
action.auto_create_index: false
  1. Настройка JVM памяти в /etc/elasticsearch/jvm.options:
sudo nano /etc/elasticsearch/jvm.options

Установите Xms/Xmx в зависимости от ресурсов сервера, например:

-Xms1g
-Xmx1g
  1. Примените и запустите сервис:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch

Elasticsearch запущен

Проверка через curl:

curl localhost:9200

Проверка Elasticsearch через curl

Важно: Elasticsearch интенсивно использует память и диск. Для продовых инсталляций планируйте отдельный узел/кластер и мониторинг SLI/SLO.

Установка Graylog Server

  1. Добавьте репозиторий Graylog:
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.3-repository_latest.rpm
  1. Проверить репозитории:
sudo dnf repolist

Добавлен репозиторий Graylog

  1. Установить Graylog и плагины интеграций (опционально):
sudo dnf install graylog-server graylog-integrations-plugins

Подтвердите добавление GPG-ключа.

  1. Установите утилиту pwgen для генерации секретов:
sudo dnf install pwgen

Установка pwgen

  1. Сгенерируйте password_secret и хэш пароля администратора:
sudo pwgen -N 1 -s 96

Скопируйте значение в безопасное хранилище.

Для root-пароля (sha256): используйте сильный пароль и получите sha256-хеш. Примерный способ в терминале:

echo -n 'введите_пароль_здесь' | sha256sum | cut -d' ' -f1
  1. Откройте файл конфигурации 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

  1. Запустите сервис Graylog:
sudo systemctl daemon-reload
sudo systemctl enable graylog-server
sudo systemctl start graylog-server
sudo systemctl status graylog-server

Graylog запущен

  1. Откройте порт для веб-интерфейса:
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

Настройка SELinux

Если SELinux включён в режиме enforcing, добавьте необходимые разрешения:

  1. Установите утилиты для управления SELinux:
sudo dnf install policycoreutils policycoreutils-python-utils

Установка инструментов для SELinux

  1. Добавьте булевы значения и порты:
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) отвечает за приём сообщений по разному протоколу/формату.

  1. Откройте веб-интерфейс Graylog: http://IP_сервера:9000/ и выполните вход под учётной записью администратора.

Страница логина Graylog

  1. В веб-консоли: System → Inputs → Launch new input.

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

Создание входа Syslog UDP

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

Статус входа syslog-udp running

  1. Разрешите порт в firewalld для UDP:
sudo firewall-cmd --add-port=5142/udp --permanent
sudo firewall-cmd --reload

Отправка логов с Linux-клиента через rsyslog

На клиенте (например, linux-host1) настроим rsyslog для отправки системных логов в Graylog Input.

  1. Убедитесь, что rsyslog установлен и запущен:
sudo systemctl status rsyslog

Проверка rsyslog на клиенте

  1. Создайте конфигурацию /etc/rsyslog.d/graylog.conf:
sudo nano /etc/rsyslog.d/graylog.conf

Добавьте строку (отправка всех сообщений):

*.*@192.168.5.100:5142;RSYSLOG_SyslogProtocol23Format

Замените IP и порт на адрес вашего Graylog.

  1. Перезапустите rsyslog:
sudo systemctl restart rsyslog

Подождите несколько минут и проверьте через Search в Graylog — должны появиться сообщения от linux-host1.

Централизованные логи в Graylog

Тестирование и отладка

Если логи не приходят — проверьте последовательно:

  • Сервисы: 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)

  1. Проверить системные требования и создать резервную копию конфигураций.
  2. Установить Java, затем MongoDB, затем Elasticsearch.
  3. Установить Graylog, задать secret и root password sha256.
  4. Настроить firewall и SELinux.
  5. Создать Input и протестировать с одного клиента.
  6. Настроить retention и бэкапы.
  7. Документировать конфигурацию и ключи доступа.

Тестовые сценарии и критерии приёмки

  • Отправка тестового сообщения с клиента должна появиться в 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 для транспортов.

Конец руководства.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро