bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Развёртывание Graylog на VPS: централизованный сбор и анализ логов

calendar_month Aug 29, 2026 schedule 18 мин. чтения visibility 23 просмотров
Развёртывание Graylog на VPS: централизованный сбор и анализ логов
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Развёртывание Graylog на VPS: централизованный сбор и анализ логов

TL;DR

В этом руководстве мы пошагово настроим Graylog 6.0 на виртуальном приватном сервере (VPS) для централизованного сбора, хранения и анализа логов из различных источников. Вы узнаете, как установить все необходимые компоненты – MongoDB, OpenSearch и Java – а также настроить безопасный доступ через HTTPS с помощью Caddy, обеспечить резервное копирование и поддерживать систему в актуальном состоянии, что позволит эффективно мониторить инфраструктуру и оперативно выявлять проблемы.

  • Установка и настройка Graylog 6.0, OpenSearch 2.13 и MongoDB 7.0 на Debian 12.
  • Обеспечение безопасности сервера с помощью SSH-ключей, брандмауэра и Fail2ban.
  • Настройка автоматического TLS/HTTPS для Graylog через Caddy.
  • Разработка стратегии резервного копирования критически важных данных Graylog.
  • Рекомендации по выбору оптимального VPS-конфига и масштабированию системы.
  • Практические команды и примеры конфигурационных файлов, готовые к использованию.

Что мы настраиваем и зачем

Схема: Что мы настраиваем и зачем
Схема: Что мы настраиваем и зачем

В современном мире, где количество сервисов и систем постоянно растет, централизованный сбор и анализ логов становится критически важной задачей. Логи – это цифровой след, который оставляют все приложения и операционные системы. Они содержат информацию о событиях, ошибках, предупреждениях и действиях пользователей, что делает их бесценным источником данных для мониторинга, отладки, безопасности и аудита.

Мы будем разворачивать Graylog – мощную платформу для управления логами, которая позволяет собирать, индексировать и анализировать структурированные и неструктурированные данные логов из различных источников. Graylog предлагает интуитивно понятный веб-интерфейс для поиска, визуализации и создания оповещений на основе логов. Он построен на базе OpenSearch (ранее Elasticsearch) для хранения и индексации данных, MongoDB для хранения метаданных и конфигурации, а также Java для самого Graylog-сервера.

В итоге, по завершении этого руководства, у вас будет полностью функционирующая система Graylog на вашем VPS, способная принимать логи от ваших приложений, серверов, сетевых устройств и других источников. Вы сможете искать по этим логам, создавать дашборды для визуализации ключевых метрик и настраивать оповещения о критических событиях. Это значительно упростит процесс отладки, мониторинга производительности и обеспечения безопасности вашей инфраструктуры.

Существуют различные подходы к управлению логами. Можно использовать облачные managed-сервисы, такие как AWS CloudWatch, Google Cloud Logging, Logz.io, Datadog или Splunk Cloud. Эти решения предлагают высокую доступность, масштабируемость и минимальное администрирование, но часто сопряжены с высокими ежемесячными расходами, особенно при больших объемах логов. Для проектов с ограниченным бюджетом, стартапов или разработчиков, которым нужен полный контроль над данными и инфраструктурой, развертывание собственного решения на VPS является более экономически выгодным и гибким вариантом. Self-hosted Graylog позволяет вам полностью контролировать ваши данные, их хранение и обработку, а также оптимизировать затраты, платя только за ресурсы VPS, а не за объем обработанных логов. Это особенно актуально для проектов, где конфиденциальность данных является приоритетом или где требуется специфическая интеграция, недоступная в облачных сервисах.

Какой VPS-конфиг нужен под эту задачу

Схема: Какой VPS-конфиг нужен под эту задачу
Схема: Какой VPS-конфиг нужен под эту задачу

Требования к VPS для Graylog могут сильно варьироваться в зависимости от объема логов, которые вы планируете собирать, скорости их поступления и глубины хранения. Graylog – достаточно ресурсоемкая система, особенно ее компонент OpenSearch, который активно использует дисковую подсистему и оперативную память.

Минимальные требования для небольших проектов (до 100-200 сообщений в секунду, хранение 7-14 дней):

  • Процессор (CPU): 2-4 vCPU. Graylog и OpenSearch могут быть достаточно требовательны к CPU при индексации и поиске.
  • Оперативная память (RAM): Минимум 8 ГБ. Рекомендуется 12-16 ГБ. OpenSearch очень любит RAM для кеширования индексов и выполнения запросов. Graylog-серверу также требуется несколько гигабайт.
  • Диск: 100-200 ГБ SSD. SSD критически важен для производительности OpenSearch. Чем быстрее диск, тем быстрее индексация и поиск. Объем зависит от объема логов и срока их хранения. Для 200 сообщений/сек и 14 дней хранения, 200 ГБ может быть достаточно, но лучше иметь запас.
  • Сеть: 1 Гбит/с. Для входящих логов и доступа к веб-интерфейсу.
  • Операционная система: Debian 12 (Bookworm) или Ubuntu 24.04 LTS.

Рекомендуемый VPS-план для средних нагрузок (до 500-1000 сообщений в секунду, хранение 30-60 дней):

Для более серьезных нагрузок, где вы планируете собирать логи с нескольких серверов или приложений с высокой интенсивностью, потребуется более мощный VPS:

  • Процессор (CPU): 4-8 vCPU.
  • Оперативная память (RAM): 16-32 ГБ.
  • Диск: 500 ГБ - 1 ТБ NVMe SSD. NVMe обеспечит значительно лучшую производительность по сравнению с обычным SSD.
  • Сеть: 1 Гбит/с или выше.

Для аренды VPS с указанными характеристиками, например, с 4 vCPU, 16 ГБ RAM и 500 ГБ NVMe SSD, можно рассмотреть VPS с указанными характеристиками.

Когда нужен dedicated, а не VPS

Если вы ожидаете очень большой объем логов (тысячи сообщений в секунду), длительное хранение (несколько месяцев или лет), или Graylog будет критически важной частью вашей инфраструктуры с высокими требованиями к производительности и надежности, вам, вероятно, потребуется выделенный сервер (dedicated server). Выделенный сервер предлагает гарантированные ресурсы (без "соседства"), что исключает влияние других пользователей на производительность вашей системы. Он также позволяет использовать более производительные дисковые подсистемы (например, RAID-массивы из NVMe SSD) и больше оперативной памяти, чем обычно доступно на VPS. Это критично для больших кластеров OpenSearch.

Локация: на что влияет

Выбор локации VPS имеет значение для двух основных аспектов:

  1. Задержка (Latency): Чем ближе физически расположен ваш VPS к источникам логов, тем меньше будет задержка при передаче данных. Это важно для оперативного сбора логов и снижения вероятности их потери при пиковых нагрузках. Если ваши основные серверы находятся в Европе, выбирайте VPS в Европе.
  2. Законодательство: В некоторых юрисдикциях существуют строгие требования к хранению логов и персональных данных. Убедитесь, что выбранная локация VPS соответствует всем применимым законам и регуляциям (например, GDPR для ЕС).

Подготовка сервера

Схема: Подготовка сервера
Схема: Подготовка сервера

Перед установкой Graylog необходимо выполнить базовую настройку безопасности и установить необходимые утилиты на ваш свежий VPS. Мы будем использовать Debian 12 (Bookworm) в качестве операционной системы.

1. Доступ по SSH и обновление системы

Подключитесь к вашему серверу как пользователь root, используя SSH. Если вы еще не настроили SSH-ключи, настоятельно рекомендуется это сделать для повышения безопасности.


ssh root@ВАШ_IP_АДРЕС_VPS

Обновите список пакетов и установленные пакеты до актуальных версий:


sudo apt update && sudo apt upgrade -y

2. Создание нового пользователя с правами sudo

Работать под пользователем root небезопасно. Создайте нового пользователя и предоставьте ему права sudo.


adduser graylogadmin # Создаем нового пользователя
usermod -aG sudo graylogadmin # Добавляем пользователя в группу sudo

Переключитесь на нового пользователя и выйдите из root:


su - graylogadmin
exit # Выйти из root сессии

Теперь вы можете подключиться к серверу как graylogadmin.


ssh graylogadmin@ВАШ_IP_АДРЕС_VPS

3. Настройка SSH-ключей (рекомендуется)

Для повышения безопасности рекомендуется отключить вход по паролю для SSH и использовать только SSH-ключи. Сначала скопируйте ваш публичный SSH-ключ на сервер (если вы еще этого не сделали):


ssh-copy-id graylogadmin@ВАШ_IP_АДРЕС_VPS

Затем отредактируйте файл конфигурации SSH-сервера:


sudo nano /etc/ssh/sshd_config

Найдите и измените следующие строки (или добавьте, если отсутствуют):


# ...
PasswordAuthentication no
PermitRootLogin no
# ...

Перезапустите SSH-сервер для применения изменений:


sudo systemctl restart sshd

Теперь вы сможете входить только с помощью SSH-ключа, а пользователь root не сможет входить напрямую.

4. Настройка брандмауэра (UFW)

Uncomplicated Firewall (UFW) – это простая утилита для управления iptables. Установите и настройте ее:


sudo apt install ufw -y # Устанавливаем UFW
sudo ufw allow ssh # Разрешаем SSH-соединения (порт 22)
sudo ufw allow http # Разрешаем HTTP (порт 80)
sudo ufw allow https # Разрешаем HTTPS (порт 443)
sudo ufw enable # Включаем брандмауэр (подтвердите 'y')
sudo ufw status # Проверяем статус брандмауэра

Позже мы добавим правила для портов Graylog, OpenSearch и MongoDB.

5. Установка Fail2ban

Fail2ban помогает защититься от атак подбора паролей (brute-force) путем блокировки IP-адресов, с которых поступают множественные неудачные попытки входа.


sudo apt install fail2ban -y # Устанавливаем Fail2ban
sudo systemctl enable fail2ban # Включаем автозапуск Fail2ban
sudo systemctl start fail2ban # Запускаем Fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Копируем конфиг для локальных изменений

Откройте /etc/fail2ban/jail.local и убедитесь, что секция [sshd] активна (enabled = true).

Установка ПО — пошагово

Схема: Установка ПО — пошагово
Схема: Установка ПО — пошагово

Теперь, когда сервер подготовлен, мы можем приступить к установке необходимых компонентов: Java, MongoDB, OpenSearch и самого Graylog.

1. Установка Java (OpenJDK 21)

Graylog, OpenSearch и другие компоненты требуют Java. Мы установим OpenJDK 21, актуальную LTS-версию на 2026 год.


sudo apt update # Обновляем список пакетов
sudo apt install openjdk-21-jdk -y # Устанавливаем OpenJDK 21
java -version # Проверяем версию Java

Вывод должен быть примерно таким:


openjdk version "21.0.3" 2024-04-16
OpenJDK Runtime Environment (build 21.0.3+9-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 21.0.3+9-Debian-1deb12u1, mixed mode, sharing)

2. Установка MongoDB 7.0

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


sudo apt install gnupg curl -y # Устанавливаем необходимые утилиты

# Импортируем публичный ключ MongoDB GPG
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | \
   sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg

# Создаем список репозиториев MongoDB
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

sudo apt update # Обновляем список пакетов
sudo apt install -y mongodb-org # Устанавливаем MongoDB 7.0

Запускаем и включаем автозапуск MongoDB:


sudo systemctl enable mongod.service # Включаем автозапуск сервиса MongoDB
sudo systemctl start mongod.service # Запускаем сервис MongoDB
sudo systemctl status mongod.service # Проверяем статус сервиса

Убедитесь, что MongoDB работает (Active: active (running)).

3. Установка OpenSearch 2.13

OpenSearch (форк Elasticsearch) используется Graylog для хранения и индексации всех логов. Мы установим OpenSearch версии 2.13.


# Импортируем GPG ключ OpenSearch
curl -fsSL https://opensearch.org/keys/opensearch-2-public-key.gpg | \
   sudo gpg --dearmor -o /usr/share/keyrings/opensearch-keyring.gpg

# Добавляем репозиторий OpenSearch
echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring.gpg] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list

sudo apt update # Обновляем список пакетов
sudo apt install opensearch -y # Устанавливаем OpenSearch 2.13

Настраиваем OpenSearch для использования с Graylog. Откройте файл конфигурации:


sudo nano /etc/opensearch/opensearch.yml

Добавьте или измените следующие строки (убедитесь, что network.host установлен на localhost для безопасности):


# ...
cluster.name: graylog-cluster
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
network.host: localhost # Важно для безопасности - OpenSearch доступен только локально
http.port: 9200
discovery.type: single-node # Для одноузловой установки
# ...

Сохраните изменения (Ctrl+O, Enter, Ctrl+X). Теперь запускаем и включаем OpenSearch:


sudo systemctl daemon-reload
sudo systemctl enable opensearch.service
sudo systemctl start opensearch.service
sudo systemctl status opensearch.service

Дождитесь, пока OpenSearch полностью запустится (это может занять несколько минут). Проверить его работоспособность можно так:


curl -XGET 'http://localhost:9200/?pretty'

Вы должны увидеть JSON-ответ с информацией о кластере OpenSearch.

4. Установка Graylog 6.0

Наконец, устанавливаем сам Graylog-сервер.


# Импортируем GPG ключ Graylog
curl -fsSL https://packages.graylog2.org/repo/debian/graylog.key | sudo gpg --dearmor -o /usr/share/keyrings/graylog-keyring.gpg

# Добавляем репозиторий Graylog
echo "deb [signed-by=/usr/share/keyrings/graylog-keyring.gpg] https://packages.graylog2.org/repo/debian/stable/6.0/ /" | sudo tee /etc/apt/sources.list.d/graylog.list

sudo apt update # Обновляем список пакетов
sudo apt install graylog-server -y # Устанавливаем Graylog 6.0

Graylog установлен. Теперь переходим к его конфигурации.

Конфигурация

Схема: Конфигурация
Схема: Конфигурация

После установки всех компонентов необходимо правильно настроить Graylog, чтобы он мог взаимодействовать с MongoDB, OpenSearch и был доступен через веб-интерфейс.

1. Основная конфигурация Graylog

Основной файл конфигурации Graylog находится по адресу /etc/graylog/server/server.conf. Откройте его для редактирования:


sudo nano /etc/graylog/server/server.conf

В этом файле необходимо изменить несколько критически важных параметров:

  • password_secret: Генерирует уникальный секретный ключ. Это очень важно для безопасности. Используйте команду pwgen -N 96 -s 0 для создания длинного случайного ключа.
  • root_password_sha2: Хэш SHA-256 пароля для пользователя admin в веб-интерфейсе Graylog. Сгенерируйте его с помощью команды echo -n "ваш_пароль" | sha256sum. Замените ваш_пароль на желаемый пароль для администратора.
  • root_email: Email администратора (необязательно, но полезно).
  • root_timezone: Часовой пояс для пользователя admin. Например, Europe/Moscow.
  • http_bind_address: IP-адрес, на котором Graylog будет слушать входящие соединения для веб-интерфейса. Установите его на 127.0.0.1:9000, так как мы будем использовать Caddy для проксирования запросов и добавления HTTPS.
  • http_external_uri: Полный URL, по которому Graylog будет доступен извне. Это будет ваш домен с HTTPS, например, https://graylog.example.com/.
  • opensearch_hosts: Список хостов OpenSearch. Поскольку он установлен локально, укажите http://localhost:9200.
  • mongodb_uri: URI для подключения к MongoDB. По умолчанию mongodb://localhost:27017/graylog.

Пример изменений в server.conf:


# ...
password_secret = [СГЕНЕРИРОВАННЫЙ_СЕКРЕТ_ДЛИНОЙ_96_СИМВОЛОВ]
root_password_sha2 = [ХЭШ_ВАШЕГО_ПАРОЛЯ_ДЛЯ_ADMIN]
root_email = "[email protected]"
root_timezone = "Europe/Moscow"
# ...
http_bind_address = 127.0.0.1:9000 # Graylog будет слушать локально
http_publish_uri = http://127.0.0.1:9000/
http_external_uri = https://graylog.example.com/ # ВАШ ДОМЕН С HTTPS
# ...
opensearch_hosts = http://localhost:9200
# ...
# mongodb_uri = mongodb://localhost:27017/graylog # Обычно по умолчанию подходит
# ...

После внесения изменений сохраните файл. Запустите и включите Graylog:


sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl status graylog-server.service

Дождитесь, пока Graylog запустится. Это может занять несколько минут.

2. Настройка TLS/HTTPS с помощью Caddy

Для безопасного доступа к веб-интерфейсу Graylog мы будем использовать Caddy – современный веб-сервер с автоматическим HTTPS. Caddy автоматически получает и обновляет SSL-сертификаты от Let's Encrypt.

Установка Caddy:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy -y
Конфигурация Caddy:

Создайте или отредактируйте файл Caddyfile:


sudo nano /etc/caddy/Caddyfile

Добавьте следующую конфигурацию (замените graylog.example.com на ваш домен):


graylog.example.com {
    reverse_proxy 127.0.0.1:9000
    # Настройки для WebSocket (если необходимы, Graylog использует WebSockets)
    header_up Host {host}
    header_up X-Real-IP {remote_host}
    header_up X-Forwarded-Proto {scheme}
    header_up X-Forwarded-For {remote_host}
}

Сохраните файл. Убедитесь, что ваш домен graylog.example.com указывает на IP-адрес вашего VPS в DNS-записях (A-запись).

Перезапустите Caddy для применения изменений:


sudo systemctl enable caddy
sudo systemctl restart caddy
sudo systemctl status caddy

Caddy автоматически получит SSL-сертификат. Если возникнут проблемы, проверьте логи Caddy (sudo journalctl -u caddy --no-pager) и убедитесь, что ваш домен правильно настроен в DNS и доступен из интернета.

3. Открытие портов в брандмауэре

Теперь, когда Graylog и Caddy настроены, необходимо открыть соответствующие порты в UFW.

  • 9000/tcp: Для прямого доступа к Graylog (но мы используем Caddy, поэтому этот порт можно оставить закрытым извне).
  • 80/tcp и 443/tcp: Для Caddy (HTTP и HTTPS).
  • 12201/udp и 12201/tcp: Стандартный порт для Graylog GELF (Graylog Extended Log Format) UDP/TCP.
  • 514/udp и 514/tcp: Для Syslog UDP/TCP.
  • 5044/tcp: Для Beats (Filebeat, Metricbeat и т.д.).

Добавьте необходимые правила в UFW. Для начала, откроем порты для Caddy и GELF:


sudo ufw allow 80/tcp # Для Caddy (http)
sudo ufw allow 443/tcp # Для Caddy (https)
sudo ufw allow 12201/udp # Для GELF UDP input
sudo ufw allow 12201/tcp # Для GELF TCP input
sudo ufw reload # Перезагружаем правила UFW
sudo ufw status # Проверяем статус UFW

Добавляйте другие порты по мере необходимости, в зависимости от того, какие источники логов вы будете использовать.

4. Проверка работоспособности

Откройте ваш браузер и перейдите по адресу https://graylog.example.com/ (замените на ваш домен). Вы должны увидеть страницу входа в Graylog. Войдите с именем пользователя admin и паролем, который вы установили с помощью root_password_sha2.

После входа проверьте в разделе "System" -> "Nodes", что ваш Graylog-сервер запущен и работает корректно. Также убедитесь, что в разделе "System" -> "Inputs" можно создать новый GELF UDP Input и он успешно запустится.

Бэкапы и обслуживание

Схема: Бэкапы и обслуживание
Схема: Бэкапы и обслуживание

Резервное копирование является критически важной частью любой производственной системы. Graylog хранит свои данные в MongoDB (конфигурация, метаданные) и OpenSearch (сами логи). Важно регулярно выполнять бэкапы обоих компонентов.

1. Что бэкапить

  • База данных MongoDB: Содержит всю конфигурацию Graylog, потоки (streams), дашборды, оповещения, пользователей и метаданные. Это самый важный компонент для восстановления Graylog в рабочее состояние.
  • Конфигурационные файлы Graylog: /etc/graylog/server/server.conf.
  • Данные OpenSearch: Сами логи. В большинстве случаев эти данные можно потерять без критического ущерба для работоспособности Graylog (просто потеряется история логов), но для аудита или глубокого анализа они могут быть незаменимы. Бэкапы OpenSearch могут быть очень объемными.

2. Бэкап MongoDB

MongoDB можно бэкапить с помощью утилиты mongodump. Рекомендуется выполнять бэкап при выключенном Graylog-сервере, чтобы гарантировать консистентность данных, но для небольших систем можно делать "горячий" бэкап.


# Создаем директорию для бэкапов
sudo mkdir -p /var/backups/mongodb

# Выполняем бэкап базы данных Graylog
sudo mongodump --db graylog --out /var/backups/mongodb/$(date +%Y%m%d%H%M%S)

# Или бэкап всех баз (если Graylog не единственная)
# sudo mongodump --out /var/backups/mongodb/$(date +%Y%m%d%H%M%S)

3. Бэкап конфигурационных файлов

Просто скопируйте файл конфигурации Graylog:


sudo cp /etc/graylog/server/server.conf /var/backups/graylog_server_conf_$(date +%Y%m%d%H%M%S).conf

4. Бэкап данных OpenSearch

Бэкап OpenSearch лучше всего делать с помощью Snapshot API. Для этого нужно зарегистрировать репозиторий снимков (например, на NFS, S3 или локально), а затем создавать снимки. Локальный репозиторий:


# Создаем директорию для снимков OpenSearch
sudo mkdir -p /var/backups/opensearch_snapshots
sudo chown opensearch:opensearch /var/backups/opensearch_snapshots

# Регистрируем репозиторий (выполняется через API OpenSearch)
curl -X PUT "http://localhost:9200/_snapshot/my_backup_repository" -H 'Content-Type: application/json' -d'
{
  "type": "fs",
  "settings": {
    "location": "/var/backups/opensearch_snapshots"
  }
}'

# Создаем снимок всех индексов
curl -X PUT "http://localhost:9200/_snapshot/my_backup_repository/snapshot_$(date +%Y%m%d%H%M%S)?wait_for_completion=true"

Для автоматизации можно использовать скрипт и cron.

5. Простой скрипт автобэкапа (cron + rsync)

Создайте скрипт /usr/local/bin/graylog_backup.sh:


#!/bin/bash

BACKUP_DIR="/var/backups/graylog"
TIMESTAMP=$(date +%Y%m%d%H%M%S)
MONGODB_BACKUP_PATH="$BACKUP_DIR/mongodb/$TIMESTAMP"
CONFIG_BACKUP_PATH="$BACKUP_DIR/configs"
OPENSEARCH_SNAPSHOT_REPO="my_backup_repository"

mkdir -p "$MONGODB_BACKUP_PATH"
mkdir -p "$CONFIG_BACKUP_PATH"

echo "Starting Graylog backup at $TIMESTAMP..."

# Backup MongoDB
echo "  Backing up MongoDB..."
sudo mongodump --db graylog --out "$MONGODB_BACKUP_PATH"
if [ $? -eq 0 ]; then
    echo "  MongoDB backup successful."
else
    echo "  MongoDB backup FAILED."
fi

# Backup Graylog config
echo "  Backing up Graylog server.conf..."
sudo cp /etc/graylog/server/server.conf "$CONFIG_BACKUP_PATH/server.conf.$TIMESTAMP"
if [ $? -eq 0 ]; then
    echo "  Graylog config backup successful."
else
    echo "  Graylog config backup FAILED."
fi

# Create OpenSearch snapshot
echo "  Creating OpenSearch snapshot..."
curl -X PUT "http://localhost:9200/_snapshot/$OPENSEARCH_SNAPSHOT_REPO/snapshot_$TIMESTAMP?wait_for_completion=true"
if [ $? -eq 0 ]; then
    echo "  OpenSearch snapshot successful."
else
    echo "  OpenSearch snapshot FAILED."
fi

echo "Graylog backup finished."

# Удаление старых бэкапов (например, старше 7 дней)
find "$BACKUP_DIR/mongodb/" -type d -mtime +7 -exec rm -rf {} +
find "$CONFIG_BACKUP_PATH/" -type f -mtime +7 -name "server.conf." -delete
# Для OpenSearch снимков нужно использовать API OpenSearch для удаления старых снимков
# curl -X DELETE "http://localhost:9200/_snapshot/$OPENSEARCH_SNAPSHOT_REPO/snapshot_TO_DELETE"

Сделайте скрипт исполняемым:


sudo chmod +x /usr/local/bin/graylog_backup.sh

Добавьте задачу в cron для ежедневного выполнения (например, в 3:00 ночи):


sudo crontab -e

Добавьте строку:


0 3    /usr/local/bin/graylog_backup.sh >> /var/log/graylog_backup.log 2>&1

6. Куда складывать бэкапы

Хранить бэкапы на том же сервере, что и рабочая система, крайне не рекомендуется. В случае аппаратного сбоя VPS или компрометации сервера вы потеряете и данные, и бэкапы. Рекомендуемые варианты:

  • Внешнее S3-совместимое хранилище: Облачные сервисы, такие как AWS S3, Backblaze B2, DigitalOcean Spaces. Можно использовать s3cmd или rclone для автоматической синхронизации локальных бэкапов с облаком.
  • Отдельный VPS или NAS: Если у вас есть другой сервер, можно настроить rsync по SSH для копирования бэкапов.
  • BorgBackup или Restic: Эти утилиты позволяют создавать инкрементальные, дедуплицированные и зашифрованные бэкапы, которые можно отправлять на удаленные хранилища.

7. Обновления: rolling vs maintenance window

Обновление Graylog и его компонентов (OpenSearch, MongoDB, Java) должно производиться с осторожностью. Всегда читайте официальную документацию по обновлению для каждой версии.

  • Graylog: Обычно требует остановки сервиса. Рекомендуется планировать "окно обслуживания" (maintenance window) для обновлений.
  • OpenSearch: Для одноузловой установки также требуется остановка сервиса. В кластерных конфигурациях возможны rolling-обновления.
  • MongoDB: Обновления минорных версий обычно не требуют длительных простоев, но для мажорных версий также может понадобиться окно обслуживания.
  • Java: Обычно можно обновить без остановки других сервисов, но перезапуск Graylog и OpenSearch после обновления Java будет хорошей практикой.

Всегда делайте полные бэкапы перед любым крупным обновлением!

Troubleshooting + FAQ

Graylog не запускается или веб-интерфейс недоступен. Что делать?

В первую очередь проверьте логи Graylog: sudo journalctl -u graylog-server --no-pager. Наиболее частые причины: неправильно настроен password_secret или root_password_sha2, проблемы с подключением к MongoDB или OpenSearch, неверно указан http_bind_address или http_external_uri. Убедитесь, что MongoDB и OpenSearch запущены и доступны (sudo systemctl status mongod, sudo systemctl status opensearch, curl http://localhost:9200). Проверьте брандмауэр UFW, убедитесь, что Caddy (если используется) работает и правильно проксирует запросы.

OpenSearch не запускается или Graylog не видит его.

Проверьте логи OpenSearch: sudo journalctl -u opensearch --no-pager. Убедитесь, что выделено достаточно оперативной памяти (JVM heap size) – по умолчанию OpenSearch пытается использовать до половины доступной RAM. Если RAM мало, это может привести к сбоям. Проверьте файл /etc/opensearch/opensearch.yml на предмет корректности network.host (должен быть localhost для Graylog на том же сервере) и cluster.name. Убедитесь, что порт 9200 доступен локально.

Я не вижу логи в Graylog после настройки Input.

Проверьте, что Input в Graylog активен и запущен ("System" -> "Inputs"). Убедитесь, что порт Input'а (например, 12201 для GELF) открыт в брандмауэре UFW на вашем VPS. Проверьте, что источник логов (например, Filebeat, ваш сервис) настроен на отправку логов на правильный IP-адрес вашего VPS и порт Graylog. Используйте tcpdump или netcat на VPS для проверки, приходят ли пакеты на нужный порт (например, sudo tcpdump -i any port 12201).

Как обновить Graylog до новой версии?

Всегда читайте официальное руководство по обновлению Graylog для вашей конкретной версии. Общий процесс включает остановку Graylog-сервера, обновление пакета Graylog через apt upgrade graylog-server, проверку и возможное обновление конфигурационных файлов, а затем запуск Graylog. Перед обновлением всегда делайте полный бэкап MongoDB и конфигурации Graylog.

Какой VPS-конфиг минимально подойдёт?

Для небольших нагрузок (до 100-200 сообщений в секунду) минимально потребуется VPS с 2-4 vCPU, 8-12 ГБ оперативной памяти и 100-200 ГБ SSD-диска. Однако, для комфортной работы и возможности небольшого роста, рекомендуется ориентироваться на 4 vCPU, 16 ГБ RAM и 200-500 ГБ NVMe SSD. Диск должен быть быстрым, так как OpenSearch очень чувствителен к I/O производительности.

Что выбрать — VPS или dedicated для этой задачи?

Выбор между VPS и dedicated зависит от объема логов и критичности системы. Для большинства стартапов, разработчиков и небольших команд VPS будет оптимальным и экономичным решением. Он обеспечивает достаточную производительность и гибкость. Выделенный сервер становится необходим при очень высоких нагрузках (тысячи сообщений в секунду), длительном хранении больших объемов данных (терабайты логов), или когда требуется максимальная производительность и изоляция ресурсов. Dedicated серверы обеспечивают стабильную производительность без "шумных соседей" и позволяют использовать более мощные дисковые подсистемы.

Как настроить Graylog для сбора логов с удаленных серверов?

Для сбора логов с удаленных серверов используйте агенты, такие как Filebeat, Fluentd или rsyslog. Filebeat является наиболее популярным выбором для Graylog, так как он легкий и легко настраивается. На Graylog необходимо создать соответствующий Input (например, "Beats Input" для Filebeat). На удаленном сервере установите Filebeat, настройте его для чтения нужных логов и отправки их на IP-адрес вашего Graylog VPS и порт Beats Input (по умолчанию 5044/tcp). Не забудьте открыть этот порт в UFW на Graylog VPS.

Выводы и следующие шаги

Схема: Выводы и следующие шаги
Схема: Выводы и следующие шаги

Мы успешно развернули Graylog 6.0 на вашем VPS, создав мощную и гибкую платформу для централизованного сбора и анализа логов. Вы получили работающую систему с MongoDB для конфигурации, OpenSearch для хранения данных и Caddy для безопасного доступа по HTTPS. Это значительный шаг к повышению прозрачности вашей инфраструктуры и оперативному реагированию на инциденты.

Дальнейшие шаги могут включать интеграцию Graylog с вашей существующей инфраструктурой (настройка Filebeat на всех ваших серверах), создание дашбордов для визуализации ключевых метрик и настройку сложных оповещений для критических событий. Для масштабирования системы рассмотрите возможность выделения OpenSearch на отдельный сервер или настройки кластера OpenSearch для повышения производительности и отказоустойчивости при росте объемов логов.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

развёртывание graylog на vps: централизованный сбор и анализ логов
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.