diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go
index 30dba94..1a85d49 100644
--- a/pkg/metrics/metrics.go
+++ b/pkg/metrics/metrics.go
@@ -7,6 +7,8 @@ import (
"golang.org/x/exp/constraints"
)
+const StatsTotal = "total"
+
var (
l = log.GetLogger("metrics")
@@ -155,14 +157,11 @@ func initMetric(name string, metric *prometheus.GaugeVec) {
}
func Update(ims ...InstanceMetrics) {
- s := OverallStats{}
for _, im := range ims {
update(im)
- s[im.HostName] = im.Stats
+ stats[im.HostName] = im.Stats
}
- stats = s
-
l.Debug("updated")
}
@@ -241,12 +240,13 @@ type InstanceMetrics struct {
type OverallStats map[string]*model.Stats
-func (s OverallStats) consolidate() *model.Stats {
- total := model.NewStats()
- for _, stats := range s {
- total.Add(stats)
+func (os OverallStats) consolidate() OverallStats {
+ consolidated := OverallStats{StatsTotal: model.NewStats()}
+ for host, stats := range os {
+ consolidated[host] = stats
+ consolidated[StatsTotal].Add(stats)
}
- return total
+ return consolidated
}
func safeMetric[T Number](v *T) float64 {
@@ -260,6 +260,10 @@ type Number interface {
constraints.Float | constraints.Integer
}
-func GetStats() *model.Stats {
+func GetStats() OverallStats {
return stats.consolidate()
}
+
+func (os OverallStats) Total() *model.Stats {
+ return os[StatsTotal]
+}
diff --git a/pkg/sync/http.go b/pkg/sync/http.go
index a541afe..65c39ea 100644
--- a/pkg/sync/http.go
+++ b/pkg/sync/http.go
@@ -33,6 +33,8 @@ func (w *worker) handleSync(c *gin.Context) {
}
func (w *worker) handleRoot(c *gin.Context) {
+ total, dns, blocked, malware, adult := statsGraph()
+
c.HTML(http.StatusOK, "index.html", map[string]interface{}{
"DarkMode": w.cfg.API.DarkMode,
"Metrics": w.cfg.API.Metrics.Enabled,
@@ -41,18 +43,18 @@ func (w *worker) handleRoot(c *gin.Context) {
"SyncStatus": w.status(),
"Stats": map[string]interface{}{
"Labels": getLast24Hours(),
- "DNS": metrics.GetStats().DnsQueries,
- "Blocked": metrics.GetStats().BlockedFiltering,
- "BlockedPercentage": fmt.Sprintf("%.2f", (float64(*metrics.GetStats().NumBlockedFiltering)*100.0)/float64(*metrics.GetStats().NumDnsQueries)),
- "Malware": metrics.GetStats().ReplacedSafebrowsing,
- "MalwarePercentage": fmt.Sprintf("%.2f", (float64(*metrics.GetStats().NumReplacedSafebrowsing)*100.0)/float64(*metrics.GetStats().NumDnsQueries)),
- "Adult": metrics.GetStats().ReplacedParental,
- "AdultPercentage": fmt.Sprintf("%.2f", (float64(*metrics.GetStats().NumReplacedParental)*100.0)/float64(*metrics.GetStats().NumDnsQueries)),
+ "DNS": dns,
+ "Blocked": blocked,
+ "BlockedPercentage": fmt.Sprintf("%.2f", (float64(*total.NumBlockedFiltering)*100.0)/float64(*total.NumDnsQueries)),
+ "Malware": malware,
+ "MalwarePercentage": fmt.Sprintf("%.2f", (float64(*total.NumReplacedSafebrowsing)*100.0)/float64(*total.NumDnsQueries)),
+ "Adult": adult,
+ "AdultPercentage": fmt.Sprintf("%.2f", (float64(*total.NumReplacedParental)*100.0)/float64(*total.NumDnsQueries)),
- "TotalDNS": metrics.GetStats().NumDnsQueries,
- "TotalBlocked": metrics.GetStats().NumBlockedFiltering,
- "TotalMalware": metrics.GetStats().NumReplacedSafebrowsing,
- "TotalAdult": metrics.GetStats().NumReplacedParental,
+ "TotalDNS": total.NumDnsQueries,
+ "TotalBlocked": total.NumBlockedFiltering,
+ "TotalMalware": total.NumReplacedSafebrowsing,
+ "TotalAdult": total.NumReplacedParental,
},
},
)
diff --git a/pkg/sync/index.html b/pkg/sync/index.html
index 6179678..fd993c2 100644
--- a/pkg/sync/index.html
+++ b/pkg/sync/index.html
@@ -181,20 +181,27 @@
{{- end }}