Перейти к содержимому
Skip to main content

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

info

Перевод в процессе / Translation in progress. See русская версия.

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

Симптом

  • Приложение логирует connection refused на 127.0.0.1:4318.
  • Счётчик flaree_agent_otlp_accepted_total не растёт (остаётся на старом значении после нескольких повторов).
  • OTEL exporter получает HTTP 415 с телом unsupported content-type — receiver отказывается декодировать Protobuf.

Диагностика

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

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

Что искать в выводе:

  • ss показывает listener только если агент стартовал OTLP-receiver; пустой вывод — receiver выключен (otlp.enabled: false).
  • curl на /v1/logs с Content-Type: application/json должен возвращать 200 или 400 (структурная ошибка). Код 415 означает, что приложение шлёт Protobuf — receiver принимает только JSON, чтобы сохранить NativeAOT-совместимость.
  • Если агент стартует с host: 0.0.0.0, он откажется биндить порт и залогирует fatal: receiver разрешён только на loopback (127.0.0.1 или ::1).

Исправление

  1. Включите receiver: FLAREE_AGENT_OTLP_ENABLED=true или otlp.enabled: true в agent.yaml.
  2. Проверьте, что otlp.host: 127.0.0.1 и otlp.port: 4318 (значения по умолчанию). 0.0.0.0 не поддерживается.
  3. Переключите OTEL exporter в приложении на JSON-кодирование — это обязательное требование агента.
  4. Убедитесь, что приложение шлёт заголовок Content-Type: application/json.

Для большинства SDK достаточно переменных окружения:

OTEL_EXPORTER_OTLP_PROTOCOL=http/json \
OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 \
systemctl restart myapp

После рестарта приложения счётчик flaree_agent_otlp_accepted_total должен начать расти в пределах нескольких секунд.

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