ACLK statistics on bytes recvd and sent (#13091)
Timotej S committed
Jun 14, 2022 at 17:09 UTC
6bed6b1519b2937b1b58324deb9243480a68eded
4 files changed
+34
-1
aclk/aclk.c
+1
@@ -822,6 +822,7 @@ void *aclk_main(void *ptr)
822
stats_thread = callocz(1, sizeof(struct aclk_stats_thread));
823
stats_thread->thread = mallocz(sizeof(netdata_thread_t));
824
stats_thread->query_thread_count = query_threads.count;
825
+ stats_thread->client = mqttwss_client;
826
aclk_stats_thread_prepare(query_threads.count, proto_hdl_cnt);
827
netdata_thread_create(
828
stats_thread->thread, ACLK_STATS_THREAD_NAME, NETDATA_THREAD_OPTION_JOINABLE, aclk_stats_main_thread,
aclk/aclk_stats.c
+30
@@ -261,6 +261,33 @@ static void aclk_stats_newproto_rx(uint32_t *rx_msgs_sample)
261
}
262
#endif
263
264
+static void aclk_stats_mqtt_wss(struct mqtt_wss_stats *stats)
265
+{
266
+ static RRDSET *st = NULL;
267
+ static RRDDIM *rd_sent = NULL;
268
+ static RRDDIM *rd_recvd = NULL;
269
+ static uint64_t sent = 0;
270
+ static uint64_t recvd = 0;
271
+
272
+ sent += stats->bytes_tx;
273
+ recvd += stats->bytes_rx;
274
+
275
+ if (unlikely(!st)) {
276
+ st = rrdset_create_localhost(
277
+ "netdata", "aclk_openssl_bytes", NULL, "aclk", NULL, "Received and Sent bytes.", "B/s",
278
+ "netdata", "stats", 200011, localhost->rrd_update_every, RRDSET_TYPE_STACKED);
279
+
280
+ rd_sent = rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
281
+ rd_recvd = rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
282
+ } else
283
+ rrdset_next(st);
284
+
285
+ rrddim_set_by_pointer(st, rd_sent, sent);
286
+ rrddim_set_by_pointer(st, rd_recvd, recvd);
287
+
288
+ rrdset_done(st);
289
+}
290
+
291
void aclk_stats_thread_prepare(int query_thread_count, unsigned int proto_hdl_cnt)
292
{
293
#ifndef ENABLE_NEW_CLOUD_PROTOCOL
@@ -343,6 +370,9 @@ void *aclk_stats_main_thread(void *ptr)
370
371
aclk_stats_query_time(&per_sample);
372
373
+ struct mqtt_wss_stats mqtt_wss_stats = mqtt_wss_get_stats(args->client);
374
+ aclk_stats_mqtt_wss(&mqtt_wss_stats);
375
+
376
#ifdef ENABLE_NEW_CLOUD_PROTOCOL
377
aclk_stats_newproto_rx(aclk_stats_cfg.aclk_proto_rx_msgs_sample);
378
#endif
aclk/aclk_stats.h
+2
@@ -6,6 +6,7 @@
6
#include "daemon/common.h"
7
#include "libnetdata/libnetdata.h"
8
#include "aclk_query_queue.h"
9
+#include "mqtt_wss_client.h"
10
11
#define ACLK_STATS_THREAD_NAME "ACLK_Stats"
12
@@ -22,6 +23,7 @@ int aclk_cloud_req_http_type_to_idx(const char *name);
23
struct aclk_stats_thread {
24
netdata_thread_t *thread;
25
int query_thread_count;
26
+ mqtt_wss_client client;
27
};
28
29
// preserve between samples
mqtt_websockets
+1
-1
@@ -1 +1 @@
1
-Subproject commit 7a06d06ee6952beea9db22378709d11675e45b95
1
+Subproject commit d25d9838bf90ffff8743685d96fa8f31b55a7b1e