diff --git a/internal/service/api/middleware/logging.go b/internal/service/api/middleware/logging.go index 5368d21..9634391 100644 --- a/internal/service/api/middleware/logging.go +++ b/internal/service/api/middleware/logging.go @@ -24,7 +24,14 @@ func Logging(log *slog.Logger, next http.Handler) http.Handler { start := time.Now() rw := &responseWriter{ResponseWriter: w, status: http.StatusOK} next.ServeHTTP(rw, r) - log.Info("http", + // Пробы здоровья логируем на Debug: платформа опрашивает их часто, а + // Info-строка на каждую засоряет лог (ревью 2026-10-10). + level := slog.LevelInfo + switch r.URL.Path { + case "/health", "/healthz", "/ready": + level = slog.LevelDebug + } + log.Log(r.Context(), level, "http", "method", r.Method, "path", r.URL.Path, "status", rw.status, diff --git a/internal/service/bridge/bridge.go b/internal/service/bridge/bridge.go index afafa86..535415b 100644 --- a/internal/service/bridge/bridge.go +++ b/internal/service/bridge/bridge.go @@ -89,6 +89,9 @@ func connectMQTT(ctx context.Context, cfg *config.Config, log *slog.Logger, hand opts.SetAutoReconnect(true) opts.SetConnectRetry(true) opts.SetConnectRetryInterval(5 * time.Second) + // MaxReconnectInterval по умолчанию ~10 минут — слишком долго для потоковой + // телеметрии; 30с (ревью 2026-10-10). + opts.SetMaxReconnectInterval(30 * time.Second) opts.SetKeepAlive(30 * time.Second) opts.SetCleanSession(false) diff --git a/internal/service/consumer/processor.go b/internal/service/consumer/processor.go index e87f6b8..c7e6a0f 100644 --- a/internal/service/consumer/processor.go +++ b/internal/service/consumer/processor.go @@ -56,7 +56,9 @@ func processTelemetry(ctx context.Context, body string, store *iotpg.IoTPostgres return err } - log.Info("consumer: telemetry saved", + // Debug: данные ещё только буферизованы (не записаны), Info на каждое + // сообщение засорял бы лог (ревью 2026-10-10). + log.Debug("consumer: telemetry buffered", "namespace", envelope.Namespace, "device", envelope.DeviceID, )