Розгортання 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 для 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 має значення для двох основних аспектів:
Затримка (Latency): Чим ближче фізично розташований ваш VPS до джерел логів, тим меншою буде затримка при передачі даних. Це важливо для оперативного збору логів та зниження ймовірності їх втрати при пікових навантаженнях. Якщо ваші основні сервери знаходяться в Європі, вибирайте VPS в Європі.
Законодавство: У деяких юрисдикціях існують суворі вимоги до зберігання логів та персональних даних. Переконайтеся, що обрана локація 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. Встановіть та налаштуйте її:
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.
Дочекайтеся, поки Graylog запуститься. Це може зайняти кілька хвилин.
2. Налаштування TLS/HTTPS за допомогою Caddy
Для безпечного доступу до веб-інтерфейсу Graylog ми будемо використовувати Caddy – сучасний веб-сервер з автоматичним HTTPS. Caddy автоматично отримує та оновлює SSL-сертифікати від Let's Encrypt.
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 у робочий стан.
Дані 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)
Резервне копіювання 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.
Зберігати резервні копії на тому ж сервері, що й робоча система, вкрай не рекомендується. У випадку апаратного збою 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:
Надішліть гайд тому, кому він може стати в пригоді.