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

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

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

calendar_month Jun 24, 2026 schedule 19 хв. читання visibility 12 переглядів
Развёртывание SigNoz на VPS: комплексный мониторинг приложений (logs, metrics, traces)
info

Потрібен сервер для цього гайду? Ми пропонуємо виділені сервери та VPS у 50+ країнах з миттєвим налаштуванням.

Потрібен сервер для цього гайду?

Розгорніть VPS або виділений сервер за хвилини.

Розгортання SigNoz на VPS: комплексний моніторинг застосунків (logs, metrics, traces)

TL;DR

У цьому посібнику ми покроково налаштуємо SigNoz — потужну платформу з відкритим вихідним кодом для збору та аналізу логів, метрик і трейсів застосунків — на вашому власному VPS або виділеному сервері. Ви навчитеся встановлювати Docker, розгортати SigNoz за допомогою Docker Compose, забезпечувати безпеку з'єднання через HTTPS за допомогою Caddy та налаштовувати базові механізми резервного копіювання, щоб отримати повний контроль над observability вашої інфраструктури.

  • Встановлення SigNoz з використанням Docker Compose на Ubuntu 24.04 LTS.
  • Налаштування безпечного доступу до SigNoz через HTTPS за допомогою Caddy.
  • Приклади надсилання телеметрії із застосунків до SigNoz через OpenTelemetry.
  • Забезпечення базової безпеки сервера та відмовостійкості даних.
  • Рекомендації щодо вибору оптимального VPS-конфігу для різних навантажень.

Що ми налаштовуємо і навіщо

Схема: Що ми налаштовуємо і навіщо
Схема: Що ми налаштовуємо і навіщо

У сучасному світі розробки та експлуатації програмного забезпечення критично важливо мати повне уявлення про те, що відбувається з вашими застосунками та інфраструктурою. Саме для цього існують системи моніторингу та збору телеметрії. Ми будемо розгортати SigNoz — комплексне рішення з відкритим вихідним кодом, яке об'єднує в собі функціонал для збору та аналізу логів (logs), метрик (metrics) та трасувань (traces).

Логи надають деталізовану інформацію про події всередині застосунку, допомагаючи налагоджувати помилки та розуміти послідовність дій. Метрики — це числові дані, які показують продуктивність та стан системи (наприклад, завантаження CPU, використання пам'яті, кількість запитів за секунду). Трасування (або distributed tracing) дозволяють відстежувати шлях запиту через безліч мікросервісів, виявляючи вузькі місця та затримки у складній архітектурі.

У підсумку, розгорнувши SigNoz, ви отримаєте єдину панель управління, де зможете:

  • Збирати та централізовано зберігати логи всіх ваших застосунків.
  • Візуалізувати метрики продуктивності та створювати кастомні дашборди.
  • Відстежувати запити на всьому їхньому шляху через розподілені системи, виявляючи затримки.
  • Налаштовувати алерти на основі порогових значень метрик або патернів у логах.
  • Швидко діагностувати проблеми та скорочувати час простою.

Альтернативи та чому self-hosted на VPS

Існує безліч рішень для моніторингу. Серед популярних комерційних хмарних сервісів можна виділити Datadog, New Relic, Dynatrace. Вони пропонують багатий функціонал, але їхня вартість може бути дуже високою, особливо для стартапів або проєктів з обмеженим бюджетом. Крім того, ви повністю залежите від їхньої інфраструктури та політики ціноутворення.

Серед рішень з відкритим вихідним кодом широко відомі ELK Stack (Elasticsearch, Logstash, Kibana) для логів, а також Prometheus та Grafana для метрик. Ці системи потужні, але вимагають складнішого налаштування та інтеграції, оскільки спочатку вони не є єдиним "коробковим" рішенням для всіх трьох стовпів observability. SigNoz же прагне надати інтегрований досвід "з коробки" для логів, метрик та трасувань, використовуючи популярні стандарти, такі як OpenTelemetry.

Розгортання SigNoz на власному VPS або виділеному сервері дає вам повний контроль над даними, безпекою та витратами. Ви платите лише за ресурси сервера, уникаючи дорогих тарифів за обсяг даних. Це ідеальний вибір для розробників, стартапів та компаній, яким потрібна потужна, але економічна система моніторингу без прив'язки до конкретного хмарного провайдера.

Який VPS-конфіг потрібен під це завдання

Схема: Який VPS-конфіг потрібен під це завдання
Схема: Який VPS-конфіг потрібен під це завдання

Вибір відповідного VPS або виділеного сервера для SigNoz залежить від обсягу даних, які ви плануєте збирати, та кількості застосунків/сервісів, які надсилатимуть телеметрію. SigNoz, як і будь-яка система observability, може бути досить вимогливою до ресурсів, особливо до дискової підсистеми та оперативної пам'яті.

Мінімальні вимоги

Для невеликих проєктів, де ви моніторите 1-5 застосунків із середнім обсягом логів та метрик (до кількох десятків GB даних на місяць), мінімальні вимоги будуть такими:

  • CPU: 2 ядра (сучасні Intel Xeon або AMD EPYC).
  • RAM: 4-8 GB. SigNoz використовує ClickHouse для зберігання даних, який полюбляє оперативну пам'ять.
  • Диск: 100-200 GB NVMe SSD. Швидкість диска критично важлива для запису та запитів до даних телеметрії. Звичайні SATA SSD можуть бути занадто повільними для інтенсивного навантаження.
  • Мережа: 100 Mbps - 1 Gbps. Для збору даних та доступу до UI.

Рекомендований VPS-план для більшості завдань

Для більшості середніх проєктів, що включають до 10-20 застосунків, збору даних з кількох серверів та зберігання історії за 1-3 місяці, рекомендуються такі характеристики:

  • CPU: 4 ядра.
  • RAM: 16-32 GB. Це дозволить ClickHouse ефективно кешувати дані та обробляти складні запити.
  • Диск: 400-800 GB NVMe SSD. Більший обсяг для тривалого зберігання та висока швидкість для продуктивності.
  • Мережа: 1 Gbps.

Такий VPS із зазначеними характеристиками забезпечить комфортну роботу з SigNoz та запас для зростання. Переконайтеся, що обраний провайдер пропонує NVMe SSD, оскільки це значно впливає на продуктивність системи моніторингу.

Коли потрібен dedicated, а не VPS

Виділений сервер стає необхідним, якщо ви плануєте моніторити десятки або сотні сервісів, що генерують величезні обсяги даних (терабайти на місяць), або якщо вам потрібне дуже тривале зберігання історії (понад 3-6 місяців). У цьому випадку вам знадобиться:

  • CPU: 8+ ядер.
  • RAM: 64 GB і більше.
  • Диск: Кілька терабайтів NVMe SSD у RAID-масиві для відмовостійкості та продуктивності, або гібридні рішення зі швидкими SSD для гарячих даних та HDD для холодних.
  • Мережа: 10 Gbps.

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

Локація: на що впливає

Вибір локації сервера для SigNoz важливий з кількох причин:

  • Затримка (Latency): Чим ближче сервер SigNoz до ваших застосунків, тим нижча затримка при надсиланні телеметрії. Це особливо важливо для трасувань та метрик, де своєчасність даних критична.
  • Законодавство: Якщо ви працюєте з чутливими даними, переконайтеся, що локація сервера відповідає вимогам місцевого законодавства щодо зберігання даних.
  • Вартість: Ціни на VPS можуть варіюватися залежно від регіону.

Зазвичай рекомендується розміщувати SigNoz у тому ж географічному регіоні, що й більшість ваших моніторингових сервісів.

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

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

Перед встановленням SigNoz необхідно виконати базову підготовку вашого VPS. Як операційну систему ми будемо використовувати Ubuntu 24.04 LTS (актуальна версія на 2026 рік), оскільки вона пропонує відмінну стабільність та широку підтримку спільноти. Передбачається, що у вас є доступ до сервера по SSH з правами root або користувача з sudo.

1. Оновлення системи

Завжди починайте з оновлення списку пакетів та їх апгрейду до останніх стабільних версій. Це забезпечить наявність актуальних патчів безпеки та сумісність.


sudo apt update -y          # Оновлення списку пакетів
sudo apt upgrade -y         # Оновлення встановлених пакетів
sudo apt autoremove -y      # Видалення непотрібних залежностей

2. Створення нового користувача та налаштування sudo

Робота безпосередньо під root небезпечна. Створимо нового користувача, додамо його до групи sudo та налаштуємо SSH-доступ.


# Замініть 'youruser' на бажане ім'я користувача
sudo adduser youruser
sudo usermod -aG sudo youruser # Додавання користувача до групи sudo

Переключіться на нового користувача та налаштуйте SSH-ключі для безпечнішого входу:


su - youruser # Перемикання на нового користувача

# Створіть директорію .ssh, якщо її немає, та встановіть права
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# Скопіюйте ваш публічний SSH-ключ (id_rsa.pub)
# Замініть 'ВАШ_ПУБЛІЧНИЙ_КЛЮЧ' на вміст вашого ключа
echo "ВАШ_ПУБЛІЧНИЙ_КЛЮЧ" > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Відключіть вхід за паролем для root та дозвольте лише за ключем
# Відредагуйте файл /etc/ssh/sshd_config (виконувати від root або через sudo)
# Відкрийте новий SSH-сеанс з новим користувачем, щоб переконатися, що вхід працює, перш ніж закривати поточний root-сеанс!

3. Налаштування файрволу (UFW)

UFW (Uncomplicated Firewall) — це зручний інтерфейс для iptables. Налаштуємо його, щоб дозволити лише необхідні порти.


sudo apt install ufw -y              # Встановлення UFW
sudo ufw allow OpenSSH               # Дозволити SSH (порт 22)
sudo ufw allow http                  # Дозволити HTTP (порт 80)
sudo ufw allow https                 # Дозволити HTTPS (порт 443)
sudo ufw enable                      # Увімкнути файрвол
sudo ufw status verbose              # Перевірити статус

4. Встановлення Fail2ban

Fail2ban захищає сервер від атак методом перебору (brute-force) шляхом блокування IP-адрес, з яких надходить занадто багато невдалих спроб входу.


sudo apt install fail2ban -y         # Встановлення Fail2ban
sudo systemctl enable fail2ban       # Увімкнення автозапуску сервісу
sudo systemctl start fail2ban        # Запуск сервісу

Fail2ban за замовчуванням вже налаштований для захисту SSH. Для більш тонкого налаштування можна створити файл /etc/fail2ban/jail.local.

5. Встановлення базових утиліт

Встановимо кілька корисних утиліт, які можуть знадобитися в процесі встановлення та налагодження.


sudo apt install curl wget git htop -y # Встановлення curl, wget, git та htop

Тепер ваш сервер готовий до встановлення SigNoz.

Встановлення ПЗ — покроково

Схема: Встановлення ПЗ — покроково
Схема: Встановлення ПЗ — покроково

SigNoz розгортається за допомогою Docker та Docker Compose, що значно спрощує процес встановлення та керування всіма його компонентами. Ми будемо використовувати актуальні версії Docker Engine та Docker Compose, а також останню стабільну версію SigNoz (припускаємо, що це буде версія 0.30+ до 2026 року).

1. Встановлення Docker Engine

Спочатку встановимо Docker Engine на ваш сервер. Рекомендується використовувати офіційний репозиторій Docker для отримання найсвіжіших версій.


# Видалення старих версій Docker (якщо є)
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done

# Встановлення залежностей
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y

# Додавання офіційного GPG ключа Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Додавання репозиторію Docker до APT sources
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Оновлення списку пакетів та встановлення Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Додавання поточного користувача до групи docker для виконання команд Docker без sudo
sudo usermod -aG docker youruser # Замініть 'youruser' на ваше ім'я користувача
newgrp docker # Застосуйте зміни до поточної сесії або перелогіньтесь

Перевірте встановлення Docker:


docker run hello-world # Запуск тестового контейнера

Ви повинні побачити привітальне повідомлення від Docker.

2. Встановлення SigNoz за допомогою Docker Compose

SigNoz надає готові файли Docker Compose для зручного розгортання.


# Створення директорії для SigNoz
mkdir -p ~/signoz
cd ~/signoz

# Клонування репозиторію SigNoz
git clone -b main https://github.com/SigNoz/signoz.git

# Перехід до директорії розгортання
cd signoz/deploy/

# Запуск SigNoz з використанням Docker Compose
docker compose -f docker-compose.yaml up -d # Запуск усіх сервісів SigNoz у фоновому режимі

Цей процес може зайняти кілька хвилин, поки Docker завантажує всі необхідні образи та запускає контейнери. Після завершення ви можете перевірити статус контейнерів:


docker compose -f docker-compose.yaml ps # Перевірка статусу запущених контейнерів SigNoz

Ви повинні побачити список запущених сервісів, таких як ClickHouse, Query Service, Frontend, OpenTelemetry Collector та інші.

За замовчуванням SigNoz буде доступний на порту 3301 вашого VPS. Тепер можна перейти до конфігурації доступу.

Конфігурація SigNoz та застосунків

Схема: Конфігурація SigNoz та застосунків
Схема: Конфігурація SigNoz та застосунків

Після успішного встановлення SigNoz необхідно налаштувати до нього доступ та почати надсилати дані з ваших застосунків. Ми також забезпечимо безпечне з'єднання з UI SigNoz через HTTPS.

1. Початковий доступ до UI SigNoz

За замовчуванням UI SigNoz доступний за адресою http://ВАША_IP_АДРЕСА:3301. Відкрийте його у браузері. При першому вході вам буде запропоновано створити обліковий запис адміністратора. Задайте ім'я користувача та надійний пароль.

2. Налаштування HTTPS за допомогою Caddy

Використання HTTP для доступу до панелі моніторингу вкрай небажано. Ми налаштуємо Caddy — простий у використанні веб-сервер з автоматичною видачею та оновленням TLS-сертифікатів Let's Encrypt — для забезпечення HTTPS-доступу.

Попередні кроки:

  1. Переконайтеся, що ваш домен (наприклад, signoz.yourdomain.com) вказує на IP-адресу вашого VPS.
  2. Переконайтеся, що порти 80 (HTTP) та 443 (HTTPS) відкриті у вашому UFW (ми вже відкрили їх у розділі "Підготовка сервера").

Встановлення 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:

Створіть або відредагуйте файл /etc/caddy/Caddyfile. Замініть signoz.yourdomain.com на ваш реальний домен.


# /etc/caddy/Caddyfile
signoz.yourdomain.com {
    # Автоматична видача та оновлення TLS-сертифікатів
    tls {
        # Використовуйте ваш email для сповіщень Let's Encrypt
        email [email protected]
    }

    # Проксіювання всіх запитів до SigNoz Frontend
    reverse_proxy localhost:3301 {
        # Додавання необхідних заголовків для коректної роботи
        header_up Host {host}
        header_up X-Real-IP {remote_ip}
        header_up X-Forwarded-For {remote_ip}
        header_up X-Forwarded-Proto {scheme}
    }

    # Увімкнення стиснення (опціонально, але рекомендується)
    encode gzip zstd

    # Логування доступу (опціонально)
    log {
        output file /var/log/caddy/access.log
        format json
    }
}

Створіть директорію для логів Caddy:


sudo mkdir -p /var/log/caddy
sudo chown caddy:caddy /var/log/caddy

Перезапуск Caddy:


sudo caddy validate -adapter caddyfile --config /etc/caddy/Caddyfile # Перевірка конфігурації
sudo systemctl reload caddy # Перезавантаження Caddy для застосування змін
sudo systemctl enable caddy # Переконатися, що Caddy запускається при старті системи

Тепер ви можете отримати доступ до SigNoz за адресою https://signoz.yourdomain.com.

3. Надсилання даних до SigNoz за допомогою OpenTelemetry

SigNoz активно використовує OpenTelemetry (OTel) — відкритий стандарт для збору телеметрії. Для надсилання логів, метрик та трасувань з ваших застосунків вам потрібно буде інтегрувати OTel SDK у ваш код або використовувати OTel Collector.

Приклад для Node.js застосунку (базове трасування):

Встановіть необхідні пакети OpenTelemetry:


npm install @opentelemetry/sdk-node @opentelemetry/api @opentelemetry/auto-instrumentations-node @opentelemetry/exporter-otlp-proto-http @opentelemetry/sdk-trace-node

Створіть файл tracing.js:


// tracing.js
const opentelemetry = require('@opentelemetry/sdk-node');
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');
const { OTLPTraceExporter } = require('@opentelemetry/exporter-otlp-proto-http');

const traceExporter = new OTLPTraceExporter({
    url: 'http://localhost:4318/v1/traces', // Адреса SigNoz OpenTelemetry Collector
});

const sdk = new opentelemetry.NodeSDK({
  serviceName: 'my-node-app',
  traceExporter,
  instrumentations: [getNodeAutoInstrumentations()],
});

sdk.start()
  .then(() => console.log('Tracing initialized'))
  .catch((error) => console.error('Error initializing tracing', error));

process.on('SIGTERM', () => {
  sdk.shutdown()
    .then(() => console.log('Tracing terminated'))
    .catch((error) => console.error('Error terminating tracing', error))
    .finally(() => process.exit(0));
});

Запустіть ваш Node.js застосунок з цим файлом:


node -r ./tracing.js your-app.js

Для інших мов програмування та для надсилання метрик/логів, процес аналогічний: використовуйте відповідні OTel SDK та експортери. OpenTelemetry Collector у SigNoz за замовчуванням слухає порти 4317 (gRPC) та 4318 (HTTP) для трасувань, а також 4317/4318 для метрик та 4317 для логів. При надсиланні даних із застосунку вказуйте адресу localhost:4318 або localhost:4317, оскільки OTel Collector працює в тому ж Docker Compose стеку, що й сам застосунок SigNoz.

Для збору логів з хоста або з інших контейнерів можна налаштувати окремий OpenTelemetry Collector або використовувати Docker log driver, що надсилає логи до SigNoz.

4. Перевірка працездатності

Після налаштування застосунків та надсилання даних, зайдіть в UI SigNoz (https://signoz.yourdomain.com). Перейдіть до розділу "Traces", "Metrics" або "Logs". Ви повинні побачити дані, що надходять. Якщо даних немає, перевірте:

  • Логи контейнерів SigNoz: docker compose -f ~/signoz/signoz/deploy/docker-compose.yaml logs
  • Логи Caddy: sudo journalctl -u caddy.service
  • Правильність налаштування OTel SDK у вашому застосунку.
  • Доступність портів між застосунком та SigNoz OTel Collector.

Резервне копіювання та обслуговування

Схема: Резервне копіювання та обслуговування
Схема: Резервне копіювання та обслуговування

Резервне копіювання та регулярне обслуговування є критично важливими аспектами для будь-якої виробничої системи, особливо для системи моніторингу, яка зберігає цінні дані. Втрата даних телеметрії може призвести до неможливості аналізу інцидентів та регресій.

Що резервувати

Для SigNoz необхідно резервувати наступні компоненти:

  1. Дані ClickHouse: Це основне сховище всіх логів, метрик та трасувань. Це найбільший та найважливіший компонент.
  2. Конфігураційні файли SigNoz: Файли docker-compose.yaml, .env, будь-які користувацькі конфігурації OpenTelemetry Collector або інші параметри, які ви могли змінити.
  3. Конфігурація Caddy: Файл /etc/caddy/Caddyfile та директорія з TLS-сертифікатами (зазвичай /var/lib/caddy).

Простий скрипт авторезервування

Ми створимо простий скрипт, який архівуватиме основні конфігураційні файли та робитиме "гаряче" резервне копіювання даних ClickHouse. Для зберігання даних ClickHouse можна використовувати команди docker exec.

Створіть файл ~/signoz/backup_signoz.sh:


#!/bin/bash

# --- Конфигурация бэкапа ---
BACKUP_DIR="/var/backups/signoz_$(date +%Y%m%d%H%M%S)"
SIGNOZ_DEPLOY_PATH="/root/signoz/signoz/deploy" # Путь к вашему deploy/ SigNoz
CLICKHOUSE_CONTAINER="signoz-clickhouse" # Имя контейнера ClickHouse, можно узнать через docker ps
CLICKHOUSE_DATABASE="signoz" # Имя базы данных ClickHouse
RETENTION_DAYS=7 # Сколько дней хранить бэкапы

# --- Создание директории для бэкапа ---
echo "Создание директории бэкапа: $BACKUP_DIR"
sudo mkdir -p "$BACKUP_DIR"
if [ $? -ne 0 ]; then
    echo "Ошибка: Не удалось создать директорию бэкапа. Проверьте права."
    exit 1
fi

# --- Бэкап конфигурационных файлов ---
echo "Бэкап конфигурационных файлов..."
sudo cp -r "$SIGNOZ_DEPLOY_PATH" "$BACKUP_DIR/signoz_config"
sudo cp /etc/caddy/Caddyfile "$BACKUP_DIR/Caddyfile"
sudo cp -r /var/lib/caddy "$BACKUP_DIR/caddy_data" # Бэкап сертификатов Caddy

# --- Бэкап данных ClickHouse ---
echo "Бэкап данных ClickHouse..."
# ClickHouse поддерживает "горячий" бэкап с помощью команды ATTACH TABLE FROM DISK
# Этот метод копирует данные из активных партиций, что может быть ресурсоемким
# Более надежный способ - использование инструмента clickhouse-backup
# В рамках этого примера, мы сделаем дамп схемы и важных таблиц
# Для полного бэкапа ClickHouse лучше использовать специализированные инструменты:
# https://clickhouse.com/docs/en/operations/backup

# Пример: дамп схемы базы данных
sudo docker exec "$CLICKHOUSE_CONTAINER" clickhouse-client --query="SHOW CREATE DATABASE $CLICKHOUSE_DATABASE" > "$BACKUP_DIR/clickhouse_schema.sql"

# Пример: дамп данных небольших, но важных таблиц (например, метаданных)
# Для больших таблиц это неэффективно.
# sudo docker exec "$CLICKHOUSE_CONTAINER" clickhouse-client --query="SELECT  FROM signoz.traces ORDER BY timestamp LIMIT 1000 FORMAT CSV" > "$BACKUP_DIR/traces_sample.csv"

# Для полноценного бэкапа ClickHouse рекомендуется использовать clickhouse-backup:
# 1. Установить clickhouse-backup на хост: https://github.com/Altinity/clickhouse-backup
# 2. Настроить его для работы с контейнером ClickHouse.
# Пример команды с clickhouse-backup:
# sudo clickhouse-backup -c /etc/clickhouse-backup.yaml create --name signoz_full_backup

echo "Архивирование бэкапа..."
sudo tar -czvf "$BACKUP_DIR.tar.gz" -C "$(dirname "$BACKUP_DIR")" "$(basename "$BACKUP_DIR")"
if [ $? -ne 0 ]; then
    echo "Ошибка: Не удалось архивировать бэкап."
    exit 1
fi
sudo rm -rf "$BACKUP_DIR" # Удаление временной директории

echo "Бэкап успешно создан: $BACKUP_DIR.tar.gz"

# --- Удаление старых бэкапов ---
echo "Удаление старых бэкапов (старше $RETENTION_DAYS дней)..."
sudo find /var/backups/signoz_ -type f -mtime +"$RETENTION_DAYS" -delete
echo "Завершено."

Зробіть скрипт виконуваним:


chmod +x ~/signoz/backup_signoz.sh

Куди зберігати резервні копії

Зберігати резервні копії на тому ж сервері, що й оригінальні дані, вкрай ризиковано. Якщо сервер вийде з ладу, ви втратите і дані, і резервні копії. Рекомендується використовувати:

  • Зовнішнє S3-сумісне сховище: Amazon S3, MinIO, Wasabi, Backblaze B2. Це економічне та надійне рішення. Ви можете використовувати s3cmd або rclone для завантаження архівів.
  • Окремий VPS: Недорогий VPS з великим об'ємом диска, розташований в іншому дата-центрі.
  • Локальний NAS/сервер: Якщо у вас є власна інфраструктура.

Для автоматичного завантаження на S3, ви можете додати до скрипта резервного копіювання команду aws s3 cp "$BACKUP_DIR.tar.gz" s3://your-backup-bucket/ (після налаштування AWS CLI).

Автоматизація резервного копіювання за допомогою Cron

Додайте завдання до Cron, щоб скрипт виконувався регулярно (наприклад, щодня о 3 годині ночі).


sudo crontab -e

Додайте наступний рядок в кінець файлу:


0 3   * /root/signoz/backup_signoz.sh >> /var/log/signoz_backup.log 2>&1

Це запускатиме скрипт щодня о 03:00 та записуватиме вивід у лог-файл.

Оновлення: rolling vs maintenance window

Оновлення SigNoz:

SigNoz постійно розвивається. Для оновлення до нової версії:


cd ~/signoz/signoz/deploy/
git pull # Получить последние изменения из репозитория
docker compose -f docker-compose.yaml pull # Скачать новые образы контейнеров
docker compose -f docker-compose.yaml up -d # Пересоздать контейнеры с новыми образами
docker image prune -f # Очистить старые неиспользуемые образы

Рекомендується виконувати оновлення у "вікно обслуговування" (maintenance window), коли навантаження на систему мінімальне, оскільки оновлення може викликати короткочасну недоступність деяких сервісів SigNoz. Завжди читайте release notes перед оновленням, щоб бути в курсі можливих breaking changes.

Оновлення ОС та Docker:

Регулярно оновлюйте операційну систему та Docker Engine:


sudo apt update && sudo apt upgrade -y
sudo systemctl restart docker # Перезапуск Docker после обновления компонентов

Ці оновлення також краще проводити у вікно обслуговування, оскільки перезапуск Docker може зупинити всі запущені контейнери на кілька секунд.

Усунення несправностей + FAQ

У процесі розгортання та експлуатації SigNoz можуть виникнути різні проблеми. Нижче наведені типові питання та способи їх вирішення.

1. SigNoz UI недоступний за IP-адресою або доменом.

Що перевірити:

  • Статус Docker-контейнерів: Переконайтеся, що всі контейнери SigNoz запущені.
    docker compose -f ~/signoz/signoz/deploy/docker-compose.yaml ps
    Усі сервіси повинні бути у стані running. Якщо ні, перевірте логи проблемного контейнера:
    docker compose -f ~/signoz/signoz/deploy/docker-compose.yaml logs signoz-frontend
  • Фаєрвол (UFW): Переконайтеся, що порти 80, 443 (для Caddy) та 3301 (для прямого доступу до SigNoz UI) відкриті.
    sudo ufw status verbose
  • Caddy: Якщо використовуєте Caddy, перевірте його статус та логи.
    sudo systemctl status caddy
    sudo journalctl -u caddy.service
    Переконайтеся, що ваш домен коректно розв'язується в IP-адресу сервера.
  • Конфлікти портів: Перевірте, чи не займають інші сервіси порти 80, 443 або 3301.
    sudo netstat -tulpn | grep -E "80|443|3301"

Як виправити: Перезапустіть проблемні сервіси Docker або Caddy. Відкрийте необхідні порти в UFW. Виправте DNS-запис для домену.

2. До SigNoz не надходять логи, метрики або трасування.

Що перевірити:

  • Налаштування OpenTelemetry Collector: Переконайтеся, що OTel Collector в SigNoz запущений і слухає потрібні порти.
    docker compose -f ~/signoz/signoz/deploy/docker-compose.yaml logs signoz-otel-collector
  • Налаштування програми: Перевірте, що ваша програма коректно налаштована для надсилання даних до OTel Collector SigNoz (зазвичай http://localhost:4318 або http://localhost:4317 з інших контейнерів у тій же мережі Docker Compose).
    curl -v -X POST http://localhost:4318/v1/traces -d '{"resourceSpans":[]}'
    Це простий тест на доступність кінцевої точки OTLP.
  • Мережева доступність: Якщо програма знаходиться на іншому хості, переконайтеся, що її мережа може дістатися до портів OTel Collector на вашому VPS.
  • Помилки в логах програми: Перевірте логи програми, яка повинна надсилати телеметрію, на наявність помилок експорту OTel.

Як виправити: Виправте конфігурацію програми або OTel Collector. Перевірте мережеву зв'язність між компонентами.

3. SigNoz працює повільно або споживає багато ресурсів.

Що перевірити:

  • Ресурси сервера: Перевірте завантаження CPU, використання RAM та швидкість диска на вашому VPS.
    htop
    df -h
    iostat -x 1 10
  • ClickHouse: ClickHouse є основним споживачем ресурсів. Перевірте його логи на наявність помилок або попереджень.
    docker compose -f ~/signoz/signoz/deploy/docker-compose.yaml logs signoz-clickhouse
  • Обсяг даних: Оцініть обсяг даних, що надходять. Можливо, ваш VPS просто не справляється з поточним навантаженням.

Як виправити: Збільшіть ресурси VPS (CPU, RAM, NVMe SSD). Оптимізуйте програми для зменшення обсягу телеметрії, що надсилається (наприклад, семплювання трасувань). Налаштуйте політику зберігання даних у SigNoz для автоматичного видалення старих даних.

4. Який VPS-конфіг мінімально підійде?

Для тестових цілей або дуже невеликих проєктів (1-2 програми, низький обсяг даних) можна почати з 2 CPU, 4 ГБ ОЗУ та 100 ГБ NVMe SSD. Однак для будь-якої серйозної експлуатації, навіть для невеликих команд, рекомендується мінімум 4 CPU, 8-16 ГБ ОЗУ та 200 ГБ NVMe SSD для стабільної роботи та можливості зберігання даних за кілька тижнів.

5. Що обрати — VPS чи dedicated для цього завдання?

Вибір між VPS та виділеним сервером залежить від масштабу та вимог до продуктивності. VPS підходить для більшості середніх проєктів (до 10-20 сервісів, кілька сотень GB даних на місяць) завдяки своїй гнучкості та вартості. Виділений сервер необхідний для великих інсталяцій, де обробляються терабайти даних, потрібна максимальна продуктивність ClickHouse, тривале зберігання або суворі вимоги до ізоляції ресурсів. Якщо ви сумніваєтеся, почніть з VPS і масштабуйтеся до виділеного сервера в міру зростання потреб.

6. Як оновити SigNoz до нової версії?

Для оновлення SigNoz виконайте наступні команди в директорії ~/signoz/signoz/deploy/:


git pull                       # Получить последние изменения из репозитория SigNoz
docker compose -f docker-compose.yaml pull # Загрузить новые версии образов Docker
docker compose -f docker-compose.yaml up -d # Пересоздать контейнеры с новыми образами
docker image prune -f          # Очистить неиспользуемые старые образы Docker

Завжди перевіряйте офіційну документацію SigNoz щодо специфічних інструкцій з оновлення для конкретної версії, оскільки іноді можуть знадобитися додаткові кроки.

Висновки та наступні кроки

Схема: Висновки та наступні кроки
Схема: Висновки та наступні кроки

Вітаємо! Ви успішно розгорнули SigNoz на своєму VPS, налаштували безпечний доступ через HTTPS і готові почати збирати телеметрію з ваших застосунків. Тепер у вас є потужний інструмент для комплексного моніторингу, який надає глибоке розуміння продуктивності та поведінки ваших систем, допомагаючи оперативно реагувати на проблеми та приймати обґрунтовані рішення.

Подальші кроки для максимізації користі від SigNoz включають:

  • Інтеграція всіх застосунків: Поступово інтегруйте всі ваші мікросервіси та моноліти з OpenTelemetry SDK для надсилання логів, метрик і трасувань у SigNoz.
  • Налаштування сповіщень: Створіть правила сповіщення на основі ключових метрик (наприклад, високе завантаження CPU, низьке вільне місце на диску, збільшення помилок у логах) або аномалій у трасуваннях, щоб проактивно реагувати на потенційні проблеми.
  • Розширені дашборди: Використовуйте можливості SigNoz для створення кастомізованих дашбордів, які візуалізують найважливіші для вас показники та допомагають відстежувати стан системи з першого погляду.
  • Оптимізація зберігання даних: Регулярно переглядайте політику зберігання даних у ClickHouse, щоб балансувати між необхідністю в історичній інформації та доступними дисковими ресурсами.

Поділитися цим записом:

Розгортання Signoz на VPS: комплексний моніторинг додатків (logs, metrics, traces)
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.