Skip to content

Commit 89e5ce3

Browse files
committed
Reworked metrics to fit state
Signed-off-by: Philip Örnfeldt <philip.ornfeldt@outlook.com>
1 parent 299d05b commit 89e5ce3

2 files changed

Lines changed: 44 additions & 27 deletions

File tree

pkg/probe/system_central_management.go

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@ func probeSystemCentralManagementStatus (c http.FortiHTTP, meta *TargetMetadata)
2525
var (
2626
mode = prometheus.NewDesc(
2727
"fortigate_system_central_management_mode",
28-
"Operating mode of the central management. (Normal = 1, Backup = 0)",
29-
[]string{"server", "mgmt_ip", "mgmt_port", "sn", "pendfortman"}, nil,
28+
"Operating mode of the central management.",
29+
[]string{"mode", "server", "mgmt_ip", "mgmt_port", "sn", "pendfortman"}, nil,
3030
)
3131
status = prometheus.NewDesc(
3232
"fortigate_system_central_management_status",
33-
"Status of the connection from FortiGate to the central management server. (down = 0, up = 1, handshake = 2)",
34-
[]string{"server", "mgmt_ip", "mgmt_port", "sn", "pendfortman"}, nil,
33+
"Status of the connection from FortiGate to the central management server.",
34+
[]string{"status", "server", "mgmt_ip", "mgmt_port", "sn", "pendfortman"}, nil,
3535
)
3636
registrationStatus = prometheus.NewDesc(
3737
"fortigate_system_central_management_registration_status",
38-
"Status of the registration from FortiGate to the central management server. (unknown = -1, in_progress = 2, registered = 1, unregistered = 0)",
39-
[]string{"server", "mgmt_ip", "mgmt_port", "sn", "pendfortman"}, nil,
38+
"Status of the registration from FortiGate to the central management server.",
39+
[]string{"status", "server", "mgmt_ip", "mgmt_port", "sn", "pendfortman"}, nil,
4040
)
4141
)
4242

@@ -62,28 +62,40 @@ func probeSystemCentralManagementStatus (c http.FortiHTTP, meta *TargetMetadata)
6262
}
6363

6464
m := []prometheus.Metric{}
65-
if res.Result.Mode == "normal" {
66-
m = append(m, prometheus.MustNewConstMetric(mode, prometheus.GaugeValue, 1, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
65+
var normal, backup, down, up, handshake, inProgress, registered, unregistered, defaultValue float64
66+
if res.Result.Mode == "normal" {
67+
normal = 1
6768
} else {
68-
m = append(m, prometheus.MustNewConstMetric(mode, prometheus.GaugeValue, 0, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
69+
backup = 1
6970
}
7071
switch res.Result.Status {
7172
case "down":
72-
m = append(m, prometheus.MustNewConstMetric(status, prometheus.GaugeValue, 0, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
73+
down = 1
7374
case "up":
74-
m = append(m, prometheus.MustNewConstMetric(status, prometheus.GaugeValue, 1, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
75+
up = 1
7576
case "handshake":
76-
m = append(m, prometheus.MustNewConstMetric(status, prometheus.GaugeValue, 2, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
77+
handshake = 1
7778
}
7879
switch res.Result.RegStat {
7980
case "in_progress":
80-
m = append(m, prometheus.MustNewConstMetric(registration_status, prometheus.GaugeValue, 2, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
81+
inProgress = 1
8182
case "registered":
82-
m = append(m, prometheus.MustNewConstMetric(registration_status, prometheus.GaugeValue, 1, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
83+
registered = 1
8384
case "unregistered":
84-
m = append(m, prometheus.MustNewConstMetric(registration_status, prometheus.GaugeValue, 0, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
85+
unregistered = 1
8586
default:
86-
m = append(m, prometheus.MustNewConstMetric(registration_status, prometheus.GaugeValue, -1, res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
87+
defaultValue = 1
8788
}
89+
m = append(m, prometheus.MustNewConstMetric(mode, prometheus.GaugeValue, normal, "normal", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
90+
m = append(m, prometheus.MustNewConstMetric(mode, prometheus.GaugeValue, backup, "backup", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
91+
m = append(m, prometheus.MustNewConstMetric(status, prometheus.GaugeValue, down, "down", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
92+
m = append(m, prometheus.MustNewConstMetric(status, prometheus.GaugeValue, up, "up", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
93+
m = append(m, prometheus.MustNewConstMetric(status, prometheus.GaugeValue, handshake, "handshake", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
94+
m = append(m, prometheus.MustNewConstMetric(registrationStatus, prometheus.GaugeValue, inProgress, "inprogress", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
95+
m = append(m, prometheus.MustNewConstMetric(registrationStatus, prometheus.GaugeValue, registered, "registered", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
96+
m = append(m, prometheus.MustNewConstMetric(registrationStatus, prometheus.GaugeValue, unregistered, "unregistered", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
97+
m = append(m, prometheus.MustNewConstMetric(registrationStatus, prometheus.GaugeValue, defaultValue, "unknown", res.Result.Server, res.Result.MgmtIp, strconv.FormatFloat(res.Result.MgmtPort, 'f', -1, 64), res.Result.Sn, res.Result.PenFortMan))
98+
99+
88100
return m, true
89101
}

pkg/probe/system_central_management_test.go

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,22 @@ func TestSystemCentralManagementStatus(t *testing.T) {
2929
t.Errorf("probeSystemCentralManagementStatus() returned non-success")
3030
}
3131

32-
em := `
33-
# HELP fortigate_system_central_management_mode Operating mode of the central management. (Normal = 1, Backup = 0)
34-
# TYPE fortigate_system_central_management_mode gauge
35-
fortigate_system_central_management_mode{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748"} 1
36-
# HELP fortigate_system_central_management_registration_status Status of the registration from FortiGate to the central management server. (unknown = -1, in_progress = 2, registered = 1, unregistered = 0)
37-
# TYPE fortigate_system_central_management_registration_status gauge
38-
fortigate_system_central_management_registration_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748"} -1
39-
# HELP fortigate_system_central_management_status Status of the connection from FortiGate to the central management server. (down = 0, up = 1, handshake = 2)
40-
# TYPE fortigate_system_central_management_status gauge
41-
fortigate_system_central_management_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748"} 0
42-
`
32+
em := `# HELP fortigate_system_central_management_mode Operating mode of the central management.
33+
# TYPE fortigate_system_central_management_mode gauge
34+
fortigate_system_central_management_mode{mgmt_ip="127.0.0.1",mgmt_port="0",mode="backup",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748"} 0
35+
fortigate_system_central_management_mode{mgmt_ip="127.0.0.1",mgmt_port="0",mode="normal",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748"} 1
36+
# HELP fortigate_system_central_management_registration_status Status of the registration from FortiGate to the central management server.
37+
# TYPE fortigate_system_central_management_registration_status gauge
38+
fortigate_system_central_management_registration_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748",status="inprogress"} 0
39+
fortigate_system_central_management_registration_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748",status="registered"} 0
40+
fortigate_system_central_management_registration_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748",status="unknown"} 1
41+
fortigate_system_central_management_registration_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748",status="unregistered"} 0
42+
# HELP fortigate_system_central_management_status Status of the connection from FortiGate to the central management server.
43+
# TYPE fortigate_system_central_management_status gauge
44+
fortigate_system_central_management_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748",status="down"} 1
45+
fortigate_system_central_management_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748",status="handshake"} 0
46+
fortigate_system_central_management_status{mgmt_ip="127.0.0.1",mgmt_port="0",pendfortman="12.329845.45k3",server="HA-TEST",sn="121748",status="up"} 0
47+
`
4348

4449
if err := testutil.GatherAndCompare(r, strings.NewReader(em)); err != nil {
4550
t.Fatalf("metric compare: err %v", err)

0 commit comments

Comments
 (0)