From 0659238beae07a3ffb144ec56b08013058b06c93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D1=83=D1=86=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=90=D0=BD?= =?UTF-8?q?=D0=B4=D1=80=D0=B5=D0=B9=20=D0=90=D0=BD=D0=B0=D1=82=D0=BE=D0=BB?= =?UTF-8?q?=D1=8C=D0=B5=D0=B2=D0=B8=D1=87?= Date: Fri, 10 Apr 2026 14:14:25 +1000 Subject: [PATCH] Ping: stop logging every no-reply by default; opt-in NETTOPO_LOG_PING_FAILURES. Made-with: Cursor --- .env.example | 1 + internal/scans/runner.go | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 872c34b..10894f1 100644 --- a/.env.example +++ b/.env.example @@ -4,3 +4,4 @@ STORE_BACKEND=memory RUN_MIGRATIONS=true SNMP_ENABLED=true SNMP_COMMUNITY=public +# NETTOPO_LOG_PING_FAILURES=true # логировать каждый неответивший ping (по умолчанию выключено — иначе засоряет journal) diff --git a/internal/scans/runner.go b/internal/scans/runner.go index d17d122..dc3c20e 100644 --- a/internal/scans/runner.go +++ b/internal/scans/runner.go @@ -5,10 +5,11 @@ import ( "log" "net" "net/netip" + "os" "os/exec" "runtime" - "strings" "strconv" + "strings" "sync" "time" @@ -336,7 +337,11 @@ func probeHost(ip string, timeoutMS int) bool { cmd = exec.Command("ping", "-c", "1", "-W", timeoutSec, ip) } if err := cmd.Run(); err != nil { - log.Printf("probe failed for %s: %v", ip, err) + // На Linux/macOS ping с -c 1 даёт exit 1 при отсутствии ответа — это ожидаемо для большинства + // адресов в CIDR, не ошибка приложения. Логировать каждый такой случай бессмысленно засоряет journal. + if os.Getenv("NETTOPO_LOG_PING_FAILURES") == "true" { + log.Printf("ping: нет ответа от %s: %v", ip, err) + } return false } return true