fix(dns): retry configurable resolvers
Все проверки выполнены успешно
CI / test (push) Successful in 2m32s
Docker / Build and publish worker image (push) Successful in 20m9s

Treat resolver transport failures as inconclusive checks so they do not open outage alerts.
Этот коммит содержится в:
Gleb Tv
2026-07-16 19:30:02 +03:00
родитель fd1a010e31
Коммит 579a14b403
6 изменённых файлов: 82 добавлений и 41 удалений

Просмотреть файл

@@ -1,6 +1,9 @@
package cdns
import (
"net"
"os"
"strings"
"time"
"github.com/miekg/dns"
@@ -33,7 +36,27 @@ var (
func init() {
conf = &dns.ClientConfig{
Servers: []string{"8.8.8.8", "1.1.1.1", "77.88.8.8"},
Servers: resolversFromEnv(),
Port: "53",
}
}
func resolversFromEnv() []string {
const defaults = "188.93.17.19,188.93.16.19,82.117.245.122"
resolvers := strings.Split(os.Getenv("RSMON_DNS_RESOLVERS"), ",")
if strings.TrimSpace(os.Getenv("RSMON_DNS_RESOLVERS")) == "" {
resolvers = strings.Split(defaults, ",")
}
valid := make([]string, 0, len(resolvers))
for _, resolver := range resolvers {
resolver = strings.TrimSpace(resolver)
if net.ParseIP(resolver) != nil {
valid = append(valid, resolver)
}
}
if len(valid) == 0 {
return strings.Split(defaults, ",")
}
return valid
}