Интеграция с существующим Nginx
В этом разделе описано, как добавить распределённую трассировку в существующую установку Nginx: установить модуль OpenTelemetry и настроить отправку трассировок в ClickStack. Если вы хотите протестировать интеграцию перед настройкой собственной среды, воспользуйтесь нашей предварительно настроенной средой и тестовыми данными из следующего раздела.
Предварительные требования
- Запущенный экземпляр ClickStack с доступными конечными точками OTLP (порты 4317/4318)
- Установленный Nginx (версии 1.18 или выше)
- Доступ root или sudo для изменения конфигурации Nginx
- Имя хоста или IP-адрес ClickStack
Установите модуль OpenTelemetry для Nginx
Самый простой способ добавить трассировку в Nginx — использовать официальный образ Nginx со встроенной поддержкой OpenTelemetry.
Использование образа nginx:otel
Замените текущий образ Nginx на версию с поддержкой OpenTelemetry:
# В вашем docker-compose.yml или Dockerfile
image: nginx:1.27-otelЭтот образ включает ngx_otel_module.so, который уже установлен и готов к использованию.
Настройте Nginx для отправки трассировок в ClickStack
Добавьте конфигурацию OpenTelemetry в файл nginx.conf. Она загружает модуль и направляет трассировки в конечную точку OTLP ClickStack.
Сначала получите свой ключ API:
- Откройте HyperDX по URL вашего ClickStack
- Перейдите в Settings → API Keys
- Скопируйте свой ключ API для приёма данных
- Задайте его как переменную окружения:
export CLICKSTACK_API_KEY=your-api-key-here
Добавьте в nginx.conf следующее:
load_module modules/ngx_otel_module.so;
events {
worker_connections 1024;
}
http {
# Конфигурация экспортера OpenTelemetry
otel_exporter {
endpoint <clickstack-host>:4317;
header authorization ${CLICKSTACK_API_KEY};
}
# Имя сервиса для идентификации этого экземпляра nginx
otel_service_name "nginx-proxy";
# Включить трассировку
otel_trace on;
server {
listen 80;
location / {
# Включить трассировку для этого location
otel_trace_context propagate;
otel_span_name "$request_method $uri";
# Добавить сведения о запросе в трассировки
otel_span_attr http.status_code $status;
otel_span_attr http.request.method $request_method;
otel_span_attr http.route $uri;
# Ваша текущая конфигурация proxy или приложения
proxy_pass http://your-backend;
}
}
}Если Nginx запущен в Docker, передайте переменную окружения в контейнер:
services:
nginx:
image: nginx:1.27-otel
environment:
- CLICKSTACK_API_KEY=${CLICKSTACK_API_KEY}
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:roЗамените <clickstack-host> на имя хоста или IP-адрес вашего экземпляра ClickStack.
Что делает эта конфигурация
Что трассируется: Каждый запрос к Nginx создаёт спан трассировки, в котором отображаются:
- Метод запроса и путь
- Код состояния HTTP
- Длительность запроса
- Временная метка
Атрибуты спана:
Директивы otel_span_attr добавляют метаданные к каждой трассировке, что позволяет фильтровать и анализировать запросы в HyperDX по коду состояния, методу, маршруту и т. д.
После внесения этих изменений проверьте конфигурацию Nginx:
nginx -tЕсли проверка прошла успешно, перезагрузите Nginx:
# Для Docker
docker-compose restart nginx
# Для systemd
sudo systemctl reload nginxПроверка трассировок в HyperDX
После настройки войдите в HyperDX и убедитесь, что трассировки поступают. Вы должны увидеть примерно такую картину; если трассировки не отображаются, попробуйте изменить временной диапазон:

Демо-набор данных
Для пользователей, которые хотят протестировать интеграцию трассировки nginx перед настройкой рабочих систем, мы предоставляем демо-набор данных с заранее сгенерированными трассировками Nginx с реалистичными шаблонами трафика.
Запустите ClickStack
Если ClickStack у вас ещё не запущен, запустите его с помощью:
docker run --name clickstack-demo \
-p 8080:8080 -p 4317:4317 -p 4318:4318 \
clickhouse/clickstack-all-in-one:latestПодождите около 30 секунд, пока ClickStack полностью инициализируется, прежде чем переходить дальше.
- Порт 8080: веб-интерфейс HyperDX
- Порт 4317: конечная точка OTLP gRPC (используется модулем nginx)
- Порт 4318: конечная точка OTLP HTTP (используется для демо-трассировок)
Загрузите демо-набор данных
Скачайте файл с примерами трассировок и сдвиньте временные метки к текущему времени:
# Скачать трассировки
curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/nginx-traces-sample.jsonДатасет включает:
- 1 000 спанов трассировки с реалистичными временными характеристиками
- 9 разных конечных точек с различающимися шаблонами трафика
- ~93% успешных запросов (200), ~3% ошибок клиента (404), ~4% ошибок сервера (500)
- Задержки в диапазоне от 10 мс до 800 мс
- Исходные шаблоны трафика сохранены, но сдвинуты к текущему времени
Отправьте трассировки в ClickStack
Задайте свой ключ API как переменную окружения (если он ещё не задан):
export CLICKSTACK_API_KEY=your-api-key-hereКак получить ключ API:
- Откройте HyperDX по URL вашего ClickStack
- Перейдите в Settings → API Keys
- Скопируйте свой ключ API для приёма данных
Затем отправьте трассировки в ClickStack:
curl -X POST http://localhost:4318/v1/traces \
-H "Content-Type: application/json" \
-H "Authorization: $CLICKSTACK_API_KEY" \
-d @nginx-traces-sample.jsonВы должны увидеть ответ вида {"partialSuccess":{}}, который означает, что трассировки успешно отправлены. Все 1 000 трассировок будут приняты ClickStack.
Проверьте трассировки в HyperDX
- Откройте HyperDX и войдите в свою учётную запись (возможно, сначала потребуется её создать)
- Перейдите в Search view и выберите в поле source значение
Traces - Установите временной диапазон 2025-10-25 13:00:00 - 2025-10-28 13:00:00
Вот что вы должны увидеть в Search view:

Панели мониторинга и визуализации
Чтобы помочь вам начать мониторинг трассировок в ClickStack, мы предоставляем основные визуализации для данных трассировок.
Скачать конфигурацию панели мониторинга
Импортируйте преднастроенную панель мониторинга
- Откройте HyperDX и перейдите в раздел Dashboards.
- Нажмите "Import Dashboard" в правом верхнем углу в меню с многоточием.

- Загрузите файл nginx-trace-dashboard.json и нажмите "Finish Import".

Панель мониторинга будет создана со всеми преднастроенными визуализациями.

Устранение неполадок
В HyperDX не отображаются трассировки
Убедитесь, что модуль nginx загружен:
nginx -V 2>&1 | grep otelВы должны увидеть ссылки на модуль OpenTelemetry.
Проверьте сетевое подключение:
telnet <clickstack-host> 4317Подключение к конечной точке OTLP gRPC должно выполниться успешно.
Убедитесь, что ключ API задан:
echo $CLICKSTACK_API_KEYДолжен выводиться ваш ключ API (не пустой).
Проверьте журналы ошибок nginx:
# Для Docker
docker logs <nginx-container> 2>&1 | grep -i otel
# Для systemd
sudo tail -f /var/log/nginx/error.log | grep -i otelПроверьте наличие ошибок, связанных с OpenTelemetry.
Убедитесь, что nginx получает запросы:
# Проверьте журналы доступа для подтверждения наличия трафика
tail -f /var/log/nginx/access.logСледующие шаги
- Настройте оповещения для критически важных метрик (уровень ошибок, пороговые значения задержки)
- Создайте дополнительные панели мониторинга для конкретных сценариев использования (мониторинг API, события безопасности)
Переход к продакшну
В этом руководстве трассировки отправляются напрямую из модуля Nginx OpenTelemetry в конечную точку OTLP ClickStack. Для продакшн-развертываний мы рекомендуем запускать собственный OTel collector в роли шлюза, чтобы обеспечить пакетную отправку и отказоустойчивость. Сведения о конфигурации для продакшна см. в разделе Отправка данных OpenTelemetry.