summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/windows/collect_collector.go
blob: 6950ff57525f3fe9229e42c28c276eb9ddee8994 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// SPDX-License-Identifier: GPL-3.0-or-later

package windows

import (
	"github.com/netdata/netdata/go/go.d.plugin/pkg/prometheus"
)

const (
	metricCollectorDuration = "windows_exporter_collector_duration_seconds"
	metricCollectorSuccess  = "windows_exporter_collector_success"
)

func (w *Windows) collectCollector(mx map[string]int64, pms prometheus.Series) {
	seen := make(map[string]bool)
	px := "collector_"
	for _, pm := range pms.FindByName(metricCollectorDuration) {
		if name := pm.Labels.Get("collector"); name != "" {
			seen[name] = true
			mx[px+name+"_duration"] = int64(pm.Value * precision)
		}
	}
	for _, pm := range pms.FindByName(metricCollectorSuccess) {
		if name := pm.Labels.Get("collector"); name != "" {
			seen[name] = true
			if pm.Value == 1 {
				mx[px+name+"_status_success"], mx[px+name+"_status_fail"] = 1, 0
			} else {
				mx[px+name+"_status_success"], mx[px+name+"_status_fail"] = 0, 1
			}
		}
	}

	for name := range seen {
		if !w.cache.collectors[name] {
			w.cache.collectors[name] = true
			w.addCollectorCharts(name)
		}
	}
	for name := range w.cache.collectors {
		if !seen[name] {
			delete(w.cache.collectors, name)
			w.removeCollectorCharts(name)
		}
	}
}