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

Отримати VPS arrow_forward
eco Початковий Туторіал

Розгортання Graylog

calendar_month Aug 29, 2026 schedule 18 хв. читання visibility 25 переглядів
Развёртывание 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 буде хорошою практикою.

Завжди робіть повні резервні копії перед будь-яким великим оновленням!

Вирішення проблем + 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-адресу вашого Graylog VPS та порт Beats Input (за замовчуванням 5044/tcp). Не забудьте відкрити цей порт в UFW на Graylog VPS.

Як оновити 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 для підвищення продуктивності та відмовостійкості при зростанні обсягів логів.

Чи був цей гайд корисним?

Ваш відгук допомагає нам покращувати гайди.

Share this post:

Надішліть гайд тому, кому він може стати в пригоді.

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.