feat(go.d/vernemq): add "Queued PUBLISH Messages" chart (#18838)
Ilya Mashchenko committed
Oct 21, 2024 at 17:26 UTC
4a8daa2c9803a7f55652727c3bc7064e849e318a
4 files changed
+25
src/go/plugin/go.d/modules/vernemq/charts.go
+14
@@ -20,6 +20,7 @@ const (
20
prioNodeQueueProcessesEvents
21
prioNodeQueueProcessesOfflineStorage
22
prioNodeQueueMessages
23
+ prioNodeQueuedMessages
24
prioNodeQueueUndeliveredMessages
25
26
prioNodeRouterSubscriptions
@@ -102,6 +103,7 @@ var nodeChartsTmpl = module.Charts{
103
nodeQueueProcessesEventsChartTmpl.Copy(),
104
nodeQueueProcessesOfflineStorageChartTmpl.Copy(),
105
nodeQueueMessagesChartTmpl.Copy(),
106
+ nodeQueuedMessagesChartTmpl.Copy(),
107
nodeQueueUndeliveredMessagesChartTmpl.Copy(),
108
109
nodeRouterSubscriptionsChartTmpl.Copy(),
@@ -319,6 +321,18 @@ var (
321
{ID: dimNode(metricQueueMessageOut), Name: "sent", Algo: module.Incremental, Mul: -1},
322
},
323
}
324
+ nodeQueuedMessagesChartTmpl = module.Chart{
325
+ ID: "node_%s_queued_messages",
326
+ Title: "Queued PUBLISH Messages",
327
+ Units: "messages",
328
+ Fam: "queues",
329
+ Ctx: "vernemq.node_queued_messages",
330
+ Type: module.Line,
331
+ Priority: prioNodeQueuedMessages,
332
+ Dims: module.Dims{
333
+ {ID: dimNode("queued_messages"), Name: "queued"},
334
+ },
335
+ }
336
nodeQueueUndeliveredMessagesChartTmpl = module.Chart{
337
ID: "node_%s_queue_undelivered_messages",
338
Title: "Undelivered PUBLISH Messages",
src/go/plugin/go.d/modules/vernemq/collect.go
+3
@@ -45,6 +45,9 @@ func (v *VerneMQ) collectMetrics(mx map[string]int64, mfs prometheus.MetricFamil
45
46
st.stats["open_sockets"] = st.stats[metricSocketOpen] - st.stats[metricSocketClose]
47
st.stats["netsplit_unresolved"] = st.stats[metricNetSplitDetected] - st.stats[metricNetSplitResolved]
48
+ // https://github.com/vernemq/vernemq/blob/a55ada8dfb6051362fcc468d888194bdcd6eb346/apps/vmq_server/priv/static/js/status.js#L167
49
+ queued := st.stats[metricQueueMessageIn] - (st.stats[metricQueueMessageOut] + st.stats[metricQueueMessageDrop] + st.stats[metricQueueMessageUnhandled])
50
+ st.stats["queued_messages"] = max(0, queued)
51
52
px := join("node", node)
53
src/go/plugin/go.d/modules/vernemq/metadata.yaml
+6
@@ -327,6 +327,12 @@ modules:
327
dimensions:
328
- name: received
329
- name: sent
330
+ - name: vernemq.node_queued_messages
331
+ description: Queued PUBLISH Messages
332
+ unit: messages
333
+ chart_type: line
334
+ dimensions:
335
+ - name: queued
336
- name: vernemq.node_queue_undelivered_messages
337
description: Undelivered PUBLISH Messages
338
unit: messages/s
src/go/plugin/go.d/modules/vernemq/vernemq_test.go
+2
@@ -339,6 +339,7 @@ func TestVerneMQ_Collect(t *testing.T) {
339
"node_VerneMQ@172.17.0.2_queue_processes": 0,
340
"node_VerneMQ@172.17.0.2_queue_setup": 338948,
341
"node_VerneMQ@172.17.0.2_queue_teardown": 338948,
342
+ "node_VerneMQ@172.17.0.2_queued_messages": 0,
343
"node_VerneMQ@172.17.0.2_retain_memory": 11344,
344
"node_VerneMQ@172.17.0.2_retain_messages": 0,
345
"node_VerneMQ@172.17.0.2_router_matches_local": 525722,
@@ -583,6 +584,7 @@ func TestVerneMQ_Collect(t *testing.T) {
584
"node_VerneMQ@10.10.10.20_queue_processes": 0,
585
"node_VerneMQ@10.10.10.20_queue_setup": 0,
586
"node_VerneMQ@10.10.10.20_queue_teardown": 0,
587
+ "node_VerneMQ@10.10.10.20_queued_messages": 0,
588
"node_VerneMQ@10.10.10.20_retain_memory": 15792,
589
"node_VerneMQ@10.10.10.20_retain_messages": 0,
590
"node_VerneMQ@10.10.10.20_router_matches_local": 0,