package stats import ( "log" "os" "strings" ) // NewProvider создаёт StatsProvider из переменных окружения. // // Переменные: // - GRAFANA_INTERNAL_URL — внутренний URL (http://grafana.grafana.svc.cluster.local:3000) // - GRAFANA_PUBLIC_URL — публичный URL для ссылок (https://fission.kube5s.ru/grafana) // - GRAFANA_ADMIN_USER — имя admin (default: "admin") // - GRAFANA_ADMIN_PASS — пароль admin func NewProvider() StatsProvider { internalURL := strings.TrimSpace(os.Getenv("GRAFANA_INTERNAL_URL")) if internalURL == "" { log.Printf("stats: GRAFANA_INTERNAL_URL not set — using NoopProvider") return NoopProvider{} } publicURL := strings.TrimSpace(os.Getenv("GRAFANA_PUBLIC_URL")) if publicURL == "" { publicURL = "https://fission.kube5s.ru/grafana" } adminUser := strings.TrimSpace(os.Getenv("GRAFANA_ADMIN_USER")) if adminUser == "" { adminUser = "admin" } adminPass := os.Getenv("GRAFANA_ADMIN_PASS") log.Printf("stats: GrafanaProvider internalURL=%s publicURL=%s user=%s", internalURL, publicURL, adminUser) return NewGrafanaProvider(internalURL, publicURL, adminUser, adminPass) }