Реализация логирования и мониторинга трафика через API Gateway

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Реализация логирования и мониторинга трафика через API Gateway
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Реализация логирования и мониторинга трафика через API Gateway

API Gateway — это единственная точка входа, через которую проходит весь трафик. Если там нет нормального логирования, вы слепой: непонятно, кто дёргает API, с каким latency, какие эндпоинты падают и почему. Настройка наблюдаемости на уровне gateway занимает меньше времени, чем потом разбираться с инцидентами вручную.

Что логировать

Минимальный набор полей на каждый запрос:

Поле Пример Зачем
request_id uuid4 Сквозная трассировка через сервисы
consumer_id client_abc Кто делает запрос
method + path GET /api/v2/orders Статистика по эндпоинтам
status_code 429 Мониторинг ошибок
latency_ms 143 Производительность
upstream_latency_ms 138 Где тратится время
request_size 1024 Аномалии в трафике
response_size 4096
ip 1.2.3.4 Безопасность

Тело запроса логировать нельзя по умолчанию — там могут быть пароли, токены, PAN-данные. Отдельный флаг на уровне роута для дебаг-режима.

Настройка в Kong Gateway

Kong — наиболее распространённый self-hosted gateway. Логирование через плагин http-log:

plugins:
  - name: http-log
    config:
      http_endpoint: http://logstash:5044/kong
      method: POST
      timeout: 1000
      keepalive: 1000
      flush_timeout: 2
      retry_count: 10
      queue:
        max_batch_size: 200
        max_coalescing_delay: 1
        max_entries: 10000

Для Prometheus-метрик — отдельный плагин:

plugins:
  - name: prometheus
    config:
      per_consumer: true
      status_code_metrics: true
      latency_metrics: true
      bandwidth_metrics: true
      upstream_health_metrics: true

После этого /metrics на Kong Manager отдаёт все метрики в формате Prometheus. Scrape-интервал: 15 секунд.

Настройка в AWS API Gateway

В AWS логирование настраивается на уровне Stage через CloudWatch:

{
  "loggingLevel": "INFO",
  "dataTraceEnabled": false,
  "metricsEnabled": true,
  "accessLogDestinationArn": "arn:aws:logs:us-east-1:123456789:log-group:api-gateway-access",
  "accessLogFormat": "{\"requestId\":\"$context.requestId\",\"ip\":\"$context.identity.sourceIp\",\"caller\":\"$context.identity.caller\",\"user\":\"$context.identity.user\",\"requestTime\":\"$context.requestTime\",\"httpMethod\":\"$context.httpMethod\",\"resourcePath\":\"$context.resourcePath\",\"status\":\"$context.status\",\"protocol\":\"$context.protocol\",\"responseLength\":\"$context.responseLength\",\"integrationLatency\":\"$context.integrationLatency\",\"responseLatency\":\"$context.responseLatency\"}"
}

dataTraceEnabled: false — никогда не включать в production, пишет тела запросов.

CloudWatch Insights-запрос для p95 latency по эндпоинту:

fields @timestamp, resourcePath, responseLatency
| filter status >= 200
| stats pct(responseLatency, 95) as p95 by resourcePath
| sort p95 desc
| limit 20

Nginx API Gateway + OpenTelemetry

Если gateway на Nginx (nginx-plus или OpenResty), логирование настраивается через log_format:

log_format api_json escape=json
  '{'
    '"timestamp":"$time_iso8601",'
    '"request_id":"$request_id",'
    '"method":"$request_method",'
    '"path":"$uri",'
    '"status":$status,'
    '"latency_ms":$request_time,'
    '"upstream_latency_ms":"$upstream_response_time",'
    '"bytes_sent":$bytes_sent,'
    '"consumer":"$http_x_consumer_id",'
    '"ip":"$remote_addr"'
  '}';

access_log /var/log/nginx/api_access.log api_json buffer=32k flush=5s;

Для распределённой трассировки — opentelemetry-nginx-module:

opentelemetry on;
opentelemetry_propagate;
opentelemetry_operation_name $request_method_$uri;
opentelemetry_otlp_exporter otelhttp;
otelhttp_exporter_otlp_endpoint http://otel-collector:4317;

Стек для сбора и визуализации

Два распространённых варианта:

ELK-стек:

  • Logstash собирает логи из gateway
  • Elasticsearch хранит и индексирует
  • Kibana — дашборды, алерты

Grafana Stack:

  • Loki — хранение логов (дешевле ES, не индексирует поля)
  • Prometheus — метрики
  • Grafana — единый UI для логов и метрик

Для большинства проектов Grafana Stack проще в эксплуатации и дешевле хранение.

Ключевые дашборды, которые нужно построить:

  • Обзор трафика: RPS, error rate, p50/p95/p99 latency — за последние 15 минут и 24 часа
  • По consumer: кто генерирует больше всего запросов, кто получает 4xx/5xx
  • По эндпоинту: топ медленных, топ ошибочных
  • Upstream health: latency до бэкенд-сервисов

Алертинг

Минимальный набор алертов (Prometheus AlertManager / Grafana Alerting):

- alert: APIHighErrorRate
  expr: |
    sum(rate(kong_http_requests_total{status=~"5.."}[5m]))
    / sum(rate(kong_http_requests_total[5m])) > 0.05
  for: 2m
  labels:
    severity: critical
  annotations:
    summary: "Error rate > 5% за последние 5 минут"

- alert: APIHighLatency
  expr: |
    histogram_quantile(0.95,
      sum(rate(kong_request_latency_ms_bucket[5m])) by (le, route)
    ) > 2000
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: "p95 latency > 2s для роута {{ $labels.route }}"

Сроки

Базовое логирование и дашборды: 2–3 дня. Полноценный стек с алертингом, трассировкой и ретроспективным анализом: 1–2 недели в зависимости от зрелости инфраструктуры.