Мониторинг логов Nginx с помощью ClickStack
В этом руководстве показано, как настроить мониторинг Nginx с помощью ClickStack, настроив OTel collector для приёма access-логов Nginx. Вы узнаете, как:
- Настроить Nginx на вывод логов в формате JSON
- Создать пользовательскую конфигурацию OTel collector для ингестии логов
- Развернуть ClickStack с вашей пользовательской конфигурацией
- Использовать готовый дашборд для визуализации метрик Nginx
Доступен демонстрационный набор данных с примерами логов, если вы хотите протестировать интеграцию до настройки Nginx в продакшене.
Необходимое время: 5–10 минут
Интеграция с существующим Nginx
В этом разделе описывается, как настроить ваш существующий Nginx для отправки логов в ClickStack путём изменения конфигурации OTel collector в ClickStack. Если вы хотите протестировать интеграцию до настройки собственной среды, вы можете воспользоваться нашей предварительно настроенной конфигурацией и тестовыми данными в следующем разделе.
Предварительные условия
- Развёрнутый экземпляр ClickStack
- Установленный Nginx
- Доступ к изменению файлов конфигурации Nginx
Настройка формата логов Nginx
Сначала настройте Nginx для вывода логов в формате JSON, чтобы упростить их обработку. Добавьте следующее определение формата логов в файл nginx.conf:
Файл nginx.conf обычно расположен по пути:
- Linux (apt/yum):
/etc/nginx/nginx.conf - macOS (Homebrew):
/usr/local/etc/nginx/nginx.confили/opt/homebrew/etc/nginx/nginx.conf - Docker: конфигурацию обычно монтируют как том
Добавьте это определение формата журнала в блок http:
После внесения этого изменения перезагрузите Nginx.
Создайте пользовательскую конфигурацию OTel collector
ClickStack позволяет расширить базовую конфигурацию OpenTelemetry Collector путём монтирования пользовательского конфигурационного файла и установки переменной окружения. Пользовательская конфигурация объединяется с базовой конфигурацией, которой управляет HyperDX через OpAMP.
Создайте файл nginx-monitoring.yaml со следующей конфигурацией:
Эта конфигурация:
- Считывает логи Nginx из стандартных путей
- Разбирает JSON-записи журнала
- Извлекает и сохраняет исходные метки времени журналов
- Добавляет атрибут source: nginx для фильтрации в HyperDX
- Направляет логи в экспортёр ClickHouse через отдельный конвейер
- В пользовательской конфигурации вы задаёте только новые receivers и pipelines
- Процессоры (memory_limiter, transform, batch) и экспортёры (clickhouse) уже определены в базовой конфигурации ClickStack — достаточно просто ссылаться на них по имени
- Оператор time_parser извлекает метки времени из поля time_local сервера Nginx, чтобы сохранить исходное время записей в логах
- Конвейеры направляют данные от ваших приёмников к экспортёру ClickHouse через существующие процессоры.
Настройте ClickStack для загрузки пользовательской конфигурации
Чтобы включить пользовательскую конфигурацию коллектора в существующем развертывании ClickStack, необходимо:
- Смонтируйте файл пользовательской конфигурации в /etc/otelcol-contrib/custom.config.yaml
- Установите переменную окружения CUSTOM_OTELCOL_CONFIG_FILE в значение /etc/otelcol-contrib/custom.config.yaml
- Смонтируйте каталоги с логами Nginx, чтобы коллектор мог их считывать
Вариант 1: Docker Compose
Обновите конфигурацию развёртывания ClickStack:
Вариант 2: Docker Run (образ «всё в одном»)
При использовании универсального образа с помощью docker run:
Убедитесь, что коллектор ClickStack имеет необходимые права для чтения файлов журналов nginx. В продакшене используйте монтирование только для чтения (:ro) и следуйте принципу наименьших привилегий.
Проверка логов в HyperDX
После настройки войдите в HyperDX и убедитесь, что журналы поступают:
- Перейдите в режим поиска
- Выберите Logs в качестве источника и убедитесь, что вы видите записи логов с полями вроде request, request_time, upstream_response_time и т. д.
Вот пример того, что вы должны увидеть:


Демонстрационный набор данных
Для пользователей, которые хотят протестировать интеграцию с nginx перед настройкой продуктивных систем, мы предоставляем образец набора данных с предварительно сгенерированными access‑логами nginx с реалистическими характеристиками трафика.
Загрузка демонстрационного набора данных
Набор данных включает:
- Записи логов с реалистическими характеристиками трафика
- Различные эндпоинты и HTTP‑методы
- Как успешные запросы, так и ошибки
- Реалистичное время отклика и объём данных в байтах
Создание конфигурации тестового коллектора
Создайте файл с именем nginx-demo.yaml со следующей конфигурацией:
Запуск ClickStack с демонстрационной конфигурацией
Запустите ClickStack с демонстрационными логами и конфигурацией:
Проверка логов в HyperDX
После запуска ClickStack:
- Откройте HyperDX и войдите в свою учётную запись (при необходимости сначала создайте её)
- Перейдите в раздел Search и установите источник
Logs - Установите диапазон времени 2025-10-19 11:00:00 - 2025-10-22 11:00:00
Вот что вы должны увидеть в представлении поиска:
HyperDX отображает временные метки в часовом поясе вашего браузера. Демонстрационные данные охватывают период 2025-10-20 11:00:00 - 2025-10-21 11:00:00 UTC. Широкий диапазон времени гарантирует, что вы увидите демонстрационные логи независимо от вашего местоположения. После того как вы увидите логи, можно сузить диапазон до 24 часов для более наглядной визуализации.


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

- Загрузите файл nginx-logs-dashboard.json и нажмите "Завершить импорт".

Дашборд будет создан со всеми предварительно настроенными визуализациями
Для демонстрационного набора данных задайте диапазон времени 2025-10-20 11:00:00 – 2025-10-21 11:00:00 (UTC) (при необходимости скорректируйте под ваш часовой пояс). У импортированного дашборда по умолчанию не будет задан диапазон времени.

Устранение неполадок
Пользовательская конфигурация не загружается
- Убедитесь, что переменная окружения CUSTOM_OTELCOL_CONFIG_FILE установлена корректно
- Проверьте, что пользовательский конфигурационный файл смонтирован по пути /etc/otelcol-contrib/custom.config.yaml
- Просмотрите содержимое пользовательской конфигурации, чтобы убедиться, что его можно прочитать
В HyperDX не отображаются логи
- Убедитесь, что nginx пишет логи в формате JSON
- Убедитесь, что коллектор может читать логи
- Убедитесь, что в фактической конфигурации присутствует ваш приёмник
filelog
- Проверьте журналы коллектора на наличие ошибок
Следующие шаги
Если вы хотите продолжить изучение, вот несколько следующих шагов для экспериментов с вашим дашбордом:
- Настройте оповещения для критически важных метрик (уровень ошибок, пороги задержки)
- Создайте дополнительные дашборды для конкретных сценариев использования (мониторинг API, события безопасности)