From 85bcf26220b83ad3cd6495df9bdf7f31f597fac6 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Sat, 10 Oct 2026 19:24:12 +0300 Subject: [PATCH] =?UTF-8?q?chore(iot):=20MaxReconnectInterval=2030=D1=81?= =?UTF-8?q?=20+=20Debug=20=D0=B4=D0=BB=D1=8F=20health-=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B1=20=D0=B8=20=D1=82=D0=B5=D0=BB=D0=B5=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D1=80=D0=B8=D0=B8=20(=D1=80=D0=B5=D0=B2=D1=8C=D1=8E)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bridge: SetMaxReconnectInterval(30с) — дефолт ~10м слишком долог для телеметрии. - logging middleware: /health,/healthz,/ready → Debug (не засорять лог). - processor: 'telemetry buffered' вместо Info 'saved' (данные ещё буферизованы). --- internal/service/api/middleware/logging.go | 9 ++++++++- internal/service/bridge/bridge.go | 3 +++ internal/service/consumer/processor.go | 4 +++- 3 files changed, 14 insertions(+), 2 deletions(-) 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, )