rrd2json.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_RRD2JSON_H
  3. #define NETDATA_RRD2JSON_H 1
  4. // type of JSON generations
  5. typedef enum {
  6. DATASOURCE_JSON = 0,
  7. DATASOURCE_DATATABLE_JSON = 1,
  8. DATASOURCE_DATATABLE_JSONP = 2,
  9. DATASOURCE_SSV = 3,
  10. DATASOURCE_CSV = 4,
  11. DATASOURCE_JSONP = 5,
  12. DATASOURCE_TSV = 6,
  13. DATASOURCE_HTML = 7,
  14. DATASOURCE_JS_ARRAY = 8,
  15. DATASOURCE_SSV_COMMA = 9,
  16. DATASOURCE_CSV_JSON_ARRAY = 10,
  17. DATASOURCE_CSV_MARKDOWN = 11,
  18. DATASOURCE_JSON2 = 12,
  19. } DATASOURCE_FORMAT;
  20. #include "web/api/web_api_v1.h"
  21. #include "web/api/exporters/allmetrics.h"
  22. #include "web/api/queries/rrdr.h"
  23. #include "web/api/formatters/csv/csv.h"
  24. #include "web/api/formatters/ssv/ssv.h"
  25. #include "web/api/formatters/json/json.h"
  26. #include "web/api/formatters/value/value.h"
  27. #include "web/api/formatters/rrdset2json.h"
  28. #include "web/api/formatters/charts2json.h"
  29. #include "web/api/formatters/json_wrapper.h"
  30. #include "web/server/web_client.h"
  31. #define HOSTNAME_MAX 1024
  32. #define API_RELATIVE_TIME_MAX (3 * 365 * 86400)
  33. #define DATASOURCE_FORMAT_JSON "json"
  34. #define DATASOURCE_FORMAT_JSON2 "json2"
  35. #define DATASOURCE_FORMAT_DATATABLE_JSON "datatable"
  36. #define DATASOURCE_FORMAT_DATATABLE_JSONP "datasource"
  37. #define DATASOURCE_FORMAT_JSONP "jsonp"
  38. #define DATASOURCE_FORMAT_SSV "ssv"
  39. #define DATASOURCE_FORMAT_CSV "csv"
  40. #define DATASOURCE_FORMAT_TSV "tsv"
  41. #define DATASOURCE_FORMAT_HTML "html"
  42. #define DATASOURCE_FORMAT_JS_ARRAY "array"
  43. #define DATASOURCE_FORMAT_SSV_COMMA "ssvcomma"
  44. #define DATASOURCE_FORMAT_CSV_JSON_ARRAY "csvjsonarray"
  45. #define DATASOURCE_FORMAT_CSV_MARKDOWN "markdown"
  46. void rrd_stats_api_v1_chart(RRDSET *st, BUFFER *wb);
  47. const char *rrdr_format_to_string(DATASOURCE_FORMAT format);
  48. int data_query_execute(ONEWAYALLOC *owa, BUFFER *wb, struct query_target *qt, time_t *latest_timestamp);
  49. void rrdr_json_group_by_labels(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options);
  50. int rrdset2value_api_v1(
  51. RRDSET *st
  52. , BUFFER *wb
  53. , NETDATA_DOUBLE *n
  54. , const char *dimensions
  55. , size_t points
  56. , time_t after
  57. , time_t before
  58. , RRDR_TIME_GROUPING group_method
  59. , const char *group_options
  60. , time_t resampling_time
  61. , uint32_t options
  62. , time_t *db_after
  63. , time_t *db_before
  64. , size_t *db_points_read
  65. , size_t *db_points_per_tier
  66. , size_t *result_points_generated
  67. , int *value_is_null
  68. , NETDATA_DOUBLE *anomaly_rate
  69. , time_t timeout
  70. , size_t tier
  71. , QUERY_SOURCE query_source
  72. , STORAGE_PRIORITY priority
  73. );
  74. static inline bool rrdr_dimension_should_be_exposed(RRDR_DIMENSION_FLAGS rrdr_dim_flags, RRDR_OPTIONS options) {
  75. if(unlikely(options & RRDR_OPTION_RETURN_RAW))
  76. return true;
  77. if(unlikely(rrdr_dim_flags & RRDR_DIMENSION_HIDDEN)) return false;
  78. if(unlikely(!(rrdr_dim_flags & RRDR_DIMENSION_QUERIED))) return false;
  79. if(unlikely((options & RRDR_OPTION_NONZERO) && !(rrdr_dim_flags & RRDR_DIMENSION_NONZERO))) return false;
  80. return true;
  81. }
  82. #endif /* NETDATA_RRD2JSON_H */