SigNoz: Самостоятельное развертывание альтернативы DataDog и NewRelic | Home-Hosted
Полное руководство по установке SigNoz — Open Source APM и Observability платформы на базе OpenTelemetry. Разверните свой собственный мониторинг для приложений, серверов и контейнеров, бесплатно и под контролем.
Настройка окружения и Docker
Для начала необходимо установить Docker и Docker Compose, а также добавить текущего пользователя в группу docker для выполнения команд без sudo. Это стандартная процедура для подготовки сервера к развертыванию контейнеризованных приложений.
sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
# Внимание: После выполнения предыдущей команды необходимо перелогиниться или выполнить:
newgrp docker
# Проверка установки
docker --version
docker-compose --versionСкачивание и запуск SigNoz
Создайте директорию для проекта, скачайте официальный скрипт установки и запустите его. Скрипт автоматически подготовит файлы docker-compose.yaml и необходимые конфигурации. Затем запустите контейнеры в фоновом режиме.
mkdir signoz
cd signoz
curl -sL https://github.com/SigNoz/signoz/raw/main/scripts/install.sh | bash
# Запуск сервисов SigNoz
docker-compose -f docker-compose.yaml up -dПроверка статуса контейнеров
Убедитесь, что все сервисы (ClickHouse, frontend, query-service и др.) перешли в статус 'Up'. Если какой-то контейнер падает или перезапускается, проверьте логи для выявления ошибок.
docker-compose -f docker-compose.yaml ps
# Для просмотра логов (полезно при проблемах)
docker-compose -f docker-compose.yaml logs -fДоступ к веб-интерфейсу и создание аккаунта
Откройте браузер и перейдите по адресу http://<IP-адрес-сервера>:3301. При первом входе система предложит создать аккаунт администратора. Введите email и пароль для завершения начальной настройки.
http://localhost:3301 # Если устанавливали локально
# Или http://<внешний-ip-сервера>:3301Интеграция приложения (пример с Python)
Для отправки трассировок в SigNoz установите OpenTelemetry SDK для Python. Приведенный код инициализирует трассировщик и настраивает экспорт данных на сервер SigNoz через протокол gRPC. Замените <IP-SERVER> на реальный IP вашего сервера SigNoz.
# Установка зависимостей
pip install opentelemetry-api opentelemetry-sdk opentelemetry-instrumentation-flask
pip install "opentelemetry-exporter-otlp-proto-grpc"
# Код приложения (app.py)
from flask import Flask
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
app = Flask(__name__)
# Настройка трассировщика
trace.set_tracer_provider(TracerProvider())
tracer = trace.get_tracer(__name__)
# Настройка экспортера (подключение к SigNoz)
otlp_exporter = OTLPSpanExporter(endpoint="http://<IP-SERVER>:4317", insecure=True)
span_processor = BatchSpanProcessor(otlp_exporter)
trace.get_tracer_provider().add_span_processor(span_processor)
@app.route('/')
def home():
with tracer.start_as_current_span("main_request"):
return "Hello, SigNoz!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)Создание алертов и дашбордов
В интерфейсе SigNoz перейдите в раздел 'Alerts' для создания уведомлений (например, на превышение CPU) и в раздел 'Dashboards' для визуализации метрик. Для алертов можно настроить интеграции с Slack или Email.
# Пример конфигурации для алерта (описание шагов в UI):
# 1. Нажмите New Alert -> Metric Alert
# 2. Условие: cpu_usage > 80
# 3. Окно агрегации: 1m
# 4. Настройте канал уведомлений (Webhook для Slack)
# Пример простого SQL запроса для дашборда:
SELECT * FROM signoz_metrics.distributed_samples_v4 WHERE metric_name = 'cpu_usage'Обновление SigNoz
Для обновления до последней версии остановите текущие контейнеры и снова запустите скрипт установки. Это скачает новые образы Docker, после чего можно запустить сервисы снова.
cd signoz
docker-compose -f docker-compose.yaml down
curl -sL https://github.com/SigNoz/signoz/raw/main/scripts/install.sh | bash
docker-compose -f docker-compose.yaml up -dРезервное копирование данных
Создайте дамп базы данных PostgreSQL для сохранения метаданных (настройки, дашборды). Данные в ClickHouse (трассировки, метрики, логи) требуют более сложных стратегий бэкапа (снапшоты volumes или встроенные механизмы ClickHouse).
# Бэкап метаданных SigNoz (PostgreSQL)
docker exec signoz-postgres pg_dump -U signoz signoz > backup_$(date +%F).sql