aclk_stats.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_ACLK_STATS_H
  3. #define NETDATA_ACLK_STATS_H
  4. #include "../daemon/common.h"
  5. #include "libnetdata/libnetdata.h"
  6. #define ACLK_STATS_THREAD_NAME "ACLK_Stats"
  7. extern netdata_mutex_t aclk_stats_mutex;
  8. #define ACLK_STATS_LOCK netdata_mutex_lock(&aclk_stats_mutex)
  9. #define ACLK_STATS_UNLOCK netdata_mutex_unlock(&aclk_stats_mutex)
  10. extern int aclk_stats_enabled;
  11. struct aclk_stats_thread {
  12. netdata_thread_t *thread;
  13. int query_thread_count;
  14. };
  15. // preserve between samples
  16. struct aclk_metrics {
  17. volatile uint8_t online;
  18. };
  19. // reset to 0 on every sample
  20. extern struct aclk_metrics_per_sample {
  21. /* in the unlikely event of ACLK disconnecting
  22. and reconnecting under 1 sampling rate
  23. we want to make sure we record the disconnection
  24. despite it being then seemingly longer in graph */
  25. volatile uint8_t offline_during_sample;
  26. volatile uint32_t queries_queued;
  27. volatile uint32_t queries_dispatched;
  28. #ifdef NETDATA_INTERNAL_CHECKS
  29. volatile uint32_t latency_max;
  30. volatile uint32_t latency_total;
  31. volatile uint32_t latency_count;
  32. #endif
  33. volatile uint32_t cloud_req_recvd;
  34. volatile uint32_t cloud_req_err;
  35. volatile uint32_t cloud_q_process_total;
  36. volatile uint32_t cloud_q_process_count;
  37. volatile uint32_t cloud_q_process_max;
  38. } aclk_metrics_per_sample;
  39. extern uint32_t *aclk_queries_per_thread;
  40. void *aclk_stats_main_thread(void *ptr);
  41. void aclk_stats_thread_cleanup();
  42. void aclk_stats_upd_online(int online);
  43. #ifdef NETDATA_INTERNAL_CHECKS
  44. void aclk_stats_msg_published(uint16_t id);
  45. void aclk_stats_msg_puback(uint16_t id);
  46. #endif /* NETDATA_INTERNAL_CHECKS */
  47. #endif /* NETDATA_ACLK_STATS_H */