github.com/netdata/go.d.plugin@v0.58.1/modules/windows/collect_service.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package windows 4 5 import ( 6 "strings" 7 8 "github.com/netdata/go.d.plugin/pkg/prometheus" 9 ) 10 11 const ( 12 metricServiceState = "windows_service_state" 13 metricServiceStatus = "windows_service_status" 14 ) 15 16 func (w *Windows) collectService(mx map[string]int64, pms prometheus.Series) { 17 seen := make(map[string]bool) 18 px := "service_" 19 for _, pm := range pms.FindByName(metricServiceState) { 20 name := cleanService(pm.Labels.Get("name")) 21 state := cleanService(pm.Labels.Get("state")) 22 if name == "" || state == "" { 23 continue 24 } 25 26 seen[name] = true 27 mx[px+name+"_state_"+state] = int64(pm.Value) 28 } 29 for _, pm := range pms.FindByName(metricServiceStatus) { 30 name := cleanService(pm.Labels.Get("name")) 31 status := cleanService(pm.Labels.Get("status")) 32 if name == "" || status == "" { 33 continue 34 } 35 36 seen[name] = true 37 mx[px+name+"_status_"+status] = int64(pm.Value) 38 } 39 40 for svc := range seen { 41 if !w.cache.services[svc] { 42 w.cache.services[svc] = true 43 w.addServiceCharts(svc) 44 } 45 } 46 for svc := range w.cache.services { 47 if !seen[svc] { 48 delete(w.cache.services, svc) 49 w.removeServiceCharts(svc) 50 } 51 } 52 } 53 54 func cleanService(name string) string { 55 return strings.ReplaceAll(name, " ", "_") 56 }