Перейти к содержимому
Перейти к основному содержимому

OTLP receiver не принимает данные

Приложение шлёт OTLP-трафик на 127.0.0.1:4318, но данные не доходят до Flaree. Обычно проблема проявляется сразу после запуска приложения или после изменения конфигурации OTel SDK.

Симптом

  • Приложение логирует connection refused на 127.0.0.1:4318.
  • Экспортёр получает ошибки на POST /v1/logs или /v1/metrics.
  • Данные приняты receiver'ом, но не видны в дашборде.
  • Traces отправляются, но не появляются — это ожидаемо: receiver принимает /v1/traces и отбрасывает их, трейсинг не реализован.

Диагностика

Убедитесь, что порт 4318 слушается агентом и отвечает на loopback:

ss -tnlp | grep 4318
curl -sS -o /dev/null -w '%{http_code}\n' \
-H 'Content-Type: application/json' -d '{}' \
http://127.0.0.1:4318/v1/logs
journalctl -u flaree-agent | grep -i otlp | tail -n 20

Интерпретация вывода:

  • ss пуст — receiver выключен: по умолчанию otlp.enabled: false, его нужно включить явно.
  • curl возвращает 200/400 — receiver работает; 400 на пустом теле — нормальная структурная ошибка.
  • curl возвращает 413 — тело больше лимита otlp.max_request_bytes (по умолчанию 4 МБ); уменьшите размер батча в SDK.
  • Агент не стартует, exit 78, в stderr otlp.host must be a loopback address — в конфиге указан non-loopback адрес (0.0.0.0 запрещён валидацией).
  • Receiver принимает только OTLP/JSON: если SDK шлёт Protobuf, переключите его на http/json.

Исправление

  1. Включите receiver: otlp.enabled: true в agent.yaml или FLAREE_AGENT_OTLP_ENABLED=true, затем перезапустите агент.
  2. Оставьте otlp.host: 127.0.0.1 — любой другой адрес не пройдёт валидацию при старте.
  3. Переключите экспортёр приложения на JSON-кодирование и loopback-endpoint:
OTEL_EXPORTER_OTLP_PROTOCOL=http/json \
OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 \
systemctl restart myapp
  1. Проверьте результат повторным curl — код 200 на /v1/logs подтверждает приём; данные появятся в дашборде после пересылки через /api/agent/logs.

Связанные страницы