diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 12:08:03 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 12:08:18 +0000 |
commit | 5da14042f70711ea5cf66e034699730335462f66 (patch) | |
tree | 0f6354ccac934ed87a2d555f45be4c831cf92f4a /src/go/collectors/go.d.plugin/modules/consul/collect_checks.go | |
parent | Releasing debian version 1.44.3-2. (diff) | |
download | netdata-5da14042f70711ea5cf66e034699730335462f66.tar.xz netdata-5da14042f70711ea5cf66e034699730335462f66.zip |
Merging upstream version 1.45.3+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/go/collectors/go.d.plugin/modules/consul/collect_checks.go | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/consul/collect_checks.go b/src/go/collectors/go.d.plugin/modules/consul/collect_checks.go new file mode 100644 index 000000000..88ea4612b --- /dev/null +++ b/src/go/collectors/go.d.plugin/modules/consul/collect_checks.go @@ -0,0 +1,47 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package consul + +const ( + // https://www.consul.io/api-docs/agent/check#list-checks + urlPathAgentChecks = "/v1/agent/checks" +) + +type agentCheck struct { + Node string + CheckID string + Name string + Status string + ServiceID string + ServiceName string + ServiceTags []string +} + +func (c *Consul) collectChecks(mx map[string]int64) error { + var checks map[string]*agentCheck + + if err := c.doOKDecode(urlPathAgentChecks, &checks); err != nil { + return err + } + + for id, check := range checks { + if !c.checks[id] { + c.checks[id] = true + c.addHealthCheckCharts(check) + } + + mx["health_check_"+id+"_passing_status"] = boolToInt(check.Status == "passing") + mx["health_check_"+id+"_warning_status"] = boolToInt(check.Status == "warning") + mx["health_check_"+id+"_critical_status"] = boolToInt(check.Status == "critical") + mx["health_check_"+id+"_maintenance_status"] = boolToInt(check.Status == "maintenance") + } + + for id := range c.checks { + if _, ok := checks[id]; !ok { + delete(c.checks, id) + c.removeHealthCheckCharts(id) + } + } + + return nil +} |