rrd2json.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 DATASOURCE_FORMAT_JSON "json"
  33. #define DATASOURCE_FORMAT_JSON2 "json2"
  34. #define DATASOURCE_FORMAT_DATATABLE_JSON "datatable"
  35. #define DATASOURCE_FORMAT_DATATABLE_JSONP "datasource"
  36. #define DATASOURCE_FORMAT_JSONP "jsonp"
  37. #define DATASOURCE_FORMAT_SSV "ssv"
  38. #define DATASOURCE_FORMAT_CSV "csv"
  39. #define DATASOURCE_FORMAT_TSV "tsv"
  40. #define DATASOURCE_FORMAT_HTML "html"
  41. #define DATASOURCE_FORMAT_JS_ARRAY "array"
  42. #define DATASOURCE_FORMAT_SSV_COMMA "ssvcomma"
  43. #define DATASOURCE_FORMAT_CSV_JSON_ARRAY "csvjsonarray"
  44. #define DATASOURCE_FORMAT_CSV_MARKDOWN "markdown"
  45. void rrd_stats_api_v1_chart(RRDSET *st, BUFFER *wb);
  46. const char *rrdr_format_to_string(DATASOURCE_FORMAT format);
  47. int data_query_execute(ONEWAYALLOC *owa, BUFFER *wb, struct query_target *qt, time_t *latest_timestamp);
  48. void rrdr_json_group_by_labels(BUFFER *wb, const char *key, RRDR *r, RRDR_OPTIONS options);
  49. int rrdset2value_api_v1(
  50. RRDSET *st
  51. , BUFFER *wb
  52. , NETDATA_DOUBLE *n
  53. , const char *dimensions
  54. , size_t points
  55. , time_t after
  56. , time_t before
  57. , RRDR_TIME_GROUPING group_method
  58. , const char *group_options
  59. , time_t resampling_time
  60. , uint32_t options
  61. , time_t *db_after
  62. , time_t *db_before
  63. , size_t *db_points_read
  64. , size_t *db_points_per_tier
  65. , size_t *result_points_generated
  66. , int *value_is_null
  67. , NETDATA_DOUBLE *anomaly_rate
  68. , time_t timeout
  69. , size_t tier
  70. , QUERY_SOURCE query_source
  71. , STORAGE_PRIORITY priority
  72. );
  73. static inline bool rrdr_dimension_should_be_exposed(RRDR_DIMENSION_FLAGS rrdr_dim_flags, RRDR_OPTIONS options) {
  74. if(unlikely((options & RRDR_OPTION_RETURN_RAW) && (rrdr_dim_flags & RRDR_DIMENSION_QUERIED)))
  75. return true;
  76. if(unlikely(rrdr_dim_flags & RRDR_DIMENSION_HIDDEN)) return false;
  77. if(unlikely(!(rrdr_dim_flags & RRDR_DIMENSION_QUERIED))) return false;
  78. if(unlikely((options & RRDR_OPTION_NONZERO) && !(rrdr_dim_flags & RRDR_DIMENSION_NONZERO))) return false;
  79. return true;
  80. }
  81. #endif /* NETDATA_RRD2JSON_H */