backends.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_BACKENDS_H
  3. #define NETDATA_BACKENDS_H 1
  4. #include "daemon/common.h"
  5. typedef enum backend_options {
  6. BACKEND_OPTION_NONE = 0,
  7. BACKEND_SOURCE_DATA_AS_COLLECTED = (1 << 0),
  8. BACKEND_SOURCE_DATA_AVERAGE = (1 << 1),
  9. BACKEND_SOURCE_DATA_SUM = (1 << 2),
  10. BACKEND_OPTION_SEND_NAMES = (1 << 16)
  11. } BACKEND_OPTIONS;
  12. typedef enum backend_types {
  13. BACKEND_TYPE_UNKNOWN, // Invalid type
  14. BACKEND_TYPE_GRAPHITE, // Send plain text to Graphite
  15. BACKEND_TYPE_OPENTSDB_USING_TELNET, // Send data to OpenTSDB using telnet API
  16. BACKEND_TYPE_OPENTSDB_USING_HTTP, // Send data to OpenTSDB using HTTP API
  17. BACKEND_TYPE_JSON, // Stores the data using JSON.
  18. BACKEND_TYPE_PROMETHEUS_REMOTE_WRITE, // The user selected to use Prometheus backend
  19. BACKEND_TYPE_KINESIS, // Send message to AWS Kinesis
  20. BACKEND_TYPE_MONGODB, // Send data to MongoDB collection
  21. BACKEND_TYPE_NUM // Number of backend types
  22. } BACKEND_TYPE;
  23. typedef int (**backend_response_checker_t)(BUFFER *);
  24. typedef int (**backend_request_formatter_t)(BUFFER *, const char *, RRDHOST *, const char *, RRDSET *, RRDDIM *, time_t, time_t, BACKEND_OPTIONS);
  25. #define BACKEND_OPTIONS_SOURCE_BITS (BACKEND_SOURCE_DATA_AS_COLLECTED|BACKEND_SOURCE_DATA_AVERAGE|BACKEND_SOURCE_DATA_SUM)
  26. #define BACKEND_OPTIONS_DATA_SOURCE(backend_options) (backend_options & BACKEND_OPTIONS_SOURCE_BITS)
  27. extern int global_backend_update_every;
  28. extern BACKEND_OPTIONS global_backend_options;
  29. extern const char *global_backend_prefix;
  30. extern void *backends_main(void *ptr);
  31. BACKEND_TYPE backend_select_type(const char *type);
  32. extern BACKEND_OPTIONS backend_parse_data_source(const char *source, BACKEND_OPTIONS backend_options);
  33. #ifdef BACKENDS_INTERNALS
  34. extern int backends_can_send_rrdset(BACKEND_OPTIONS backend_options, RRDSET *st);
  35. extern calculated_number backend_calculate_value_from_stored_data(
  36. RRDSET *st // the chart
  37. , RRDDIM *rd // the dimension
  38. , time_t after // the start timestamp
  39. , time_t before // the end timestamp
  40. , BACKEND_OPTIONS backend_options // BACKEND_SOURCE_* bitmap
  41. , time_t *first_timestamp // the timestamp of the first point used in this response
  42. , time_t *last_timestamp // the timestamp that should be reported to backend
  43. );
  44. extern size_t backend_name_copy(char *d, const char *s, size_t usable);
  45. extern int discard_response(BUFFER *b, const char *backend);
  46. static inline char *strip_quotes(char *str) {
  47. if(*str == '"' || *str == '\'') {
  48. char *s;
  49. str++;
  50. s = str;
  51. while(*s) s++;
  52. if(s != str) s--;
  53. if(*s == '"' || *s == '\'') *s = '\0';
  54. }
  55. return str;
  56. }
  57. #endif // BACKENDS_INTERNALS
  58. #include "backends/prometheus/backend_prometheus.h"
  59. #include "backends/graphite/graphite.h"
  60. #include "backends/json/json.h"
  61. #include "backends/opentsdb/opentsdb.h"
  62. #if HAVE_KINESIS
  63. #include "backends/aws_kinesis/aws_kinesis.h"
  64. #endif
  65. #if ENABLE_PROMETHEUS_REMOTE_WRITE
  66. #include "backends/prometheus/remote_write/remote_write.h"
  67. #endif
  68. #if HAVE_MONGOC
  69. #include "backends/mongodb/mongodb.h"
  70. #endif
  71. #endif /* NETDATA_BACKENDS_H */