1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- // SPDX-License-Identifier: GPL-3.0-or-later
- #ifndef NETDATA_ACLK_STATS_H
- #define NETDATA_ACLK_STATS_H
- #include "daemon/common.h"
- #include "libnetdata/libnetdata.h"
- #include "aclk_query_queue.h"
- #include "mqtt_wss_client.h"
- extern netdata_mutex_t aclk_stats_mutex;
- #define ACLK_STATS_LOCK netdata_mutex_lock(&aclk_stats_mutex)
- #define ACLK_STATS_UNLOCK netdata_mutex_unlock(&aclk_stats_mutex)
- // if you change update `cloud_req_http_type_names`.
- #define ACLK_STATS_CLOUD_HTTP_REQ_TYPE_CNT 9
- int aclk_cloud_req_http_type_to_idx(const char *name);
- struct aclk_stats_thread {
- netdata_thread_t *thread;
- int query_thread_count;
- mqtt_wss_client client;
- };
- // preserve between samples
- struct aclk_metrics {
- volatile uint8_t online;
- };
- // reset to 0 on every sample
- extern struct aclk_metrics_per_sample {
- /* in the unlikely event of ACLK disconnecting
- and reconnecting under 1 sampling rate
- we want to make sure we record the disconnection
- despite it being then seemingly longer in graph */
- volatile uint8_t offline_during_sample;
- volatile uint32_t queries_queued;
- volatile uint32_t queries_dispatched;
- #ifdef NETDATA_INTERNAL_CHECKS
- volatile uint32_t latency_max;
- volatile uint32_t latency_total;
- volatile uint32_t latency_count;
- #endif
- volatile uint32_t cloud_req_recvd;
- volatile uint32_t cloud_req_err;
- // query types.
- volatile uint32_t queries_per_type[ACLK_QUERY_TYPE_COUNT];
- // HTTP-specific request types.
- volatile uint32_t cloud_req_http_by_type[ACLK_STATS_CLOUD_HTTP_REQ_TYPE_CNT];
- volatile uint32_t cloud_q_process_total;
- volatile uint32_t cloud_q_process_count;
- volatile uint32_t cloud_q_process_max;
- } aclk_metrics_per_sample;
- extern uint32_t *aclk_proto_rx_msgs_sample;
- extern uint32_t *aclk_queries_per_thread;
- void *aclk_stats_main_thread(void *ptr);
- void aclk_stats_thread_prepare(int query_thread_count, unsigned int proto_hdl_cnt);
- void aclk_stats_thread_cleanup();
- void aclk_stats_upd_online(int online);
- #ifdef NETDATA_INTERNAL_CHECKS
- void aclk_stats_msg_published(uint16_t id);
- void aclk_stats_msg_puback(uint16_t id);
- #endif /* NETDATA_INTERNAL_CHECKS */
- #endif /* NETDATA_ACLK_STATS_H */
|