@cryptotaxi247 / netdata-1 / commits / 4a8daa2c9

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,