summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--Makefile.am1
-rw-r--r--aclk/aclk.c10
-rw-r--r--aclk/aclk_query.c6
-rw-r--r--aclk/aclk_rx_msgs.c4
-rw-r--r--aclk/schema-wrappers/node_creation.h6
-rw-r--r--aclk/schema-wrappers/node_info.h54
-rw-r--r--collectors/cgroups.plugin/tests/test_doubles.c5
-rw-r--r--collectors/plugins.d/pluginsd_parser.c42
-rw-r--r--collectors/proc.plugin/ipc.c4
-rw-r--r--collectors/proc.plugin/proc_interrupts.c2
-rw-r--r--collectors/proc.plugin/proc_softirqs.c2
-rw-r--r--collectors/statsd.plugin/statsd.c2
-rw-r--r--daemon/analytics.c14
-rw-r--r--daemon/global_statistics.c383
-rw-r--r--daemon/global_statistics.h4
-rw-r--r--daemon/unit_test.c62
-rwxr-xr-xdatabase/engine/metadata_log/metalogpluginsd.c4
-rwxr-xr-xdatabase/engine/rrdengineapi.c5
-rw-r--r--database/ram/rrddim_mem.c8
-rw-r--r--database/rrd.c12
-rw-r--r--database/rrd.h349
-rw-r--r--database/rrdcalc.c454
-rw-r--r--database/rrdcalc.h142
-rw-r--r--database/rrdcalctemplate.c75
-rw-r--r--database/rrdcalctemplate.h58
-rw-r--r--database/rrdcontext.c444
-rw-r--r--database/rrddim.c183
-rw-r--r--database/rrddimvar.c119
-rw-r--r--database/rrddimvar.h23
-rw-r--r--database/rrdfamily.c46
-rw-r--r--database/rrdhost.c425
-rw-r--r--database/rrdlabels.c24
-rw-r--r--database/rrdset.c449
-rw-r--r--database/rrdsetvar.c74
-rw-r--r--database/rrdsetvar.h8
-rw-r--r--database/rrdvar.c150
-rw-r--r--database/rrdvar.h27
-rw-r--r--database/sqlite/sqlite_aclk.c26
-rw-r--r--database/sqlite/sqlite_aclk.h16
-rw-r--r--database/sqlite/sqlite_aclk_alert.c56
-rw-r--r--database/sqlite/sqlite_aclk_chart.c55
-rw-r--r--database/sqlite/sqlite_aclk_node.c16
-rw-r--r--database/sqlite/sqlite_context.c1
-rw-r--r--database/sqlite/sqlite_functions.c169
-rw-r--r--database/sqlite/sqlite_health.c195
-rw-r--r--exporting/check_filters.c10
-rw-r--r--exporting/graphite/graphite.c16
-rw-r--r--exporting/json/json.c42
-rw-r--r--exporting/opentsdb/opentsdb.c32
-rw-r--r--exporting/process_data.c12
-rw-r--r--exporting/prometheus/prometheus.c94
-rw-r--r--exporting/prometheus/remote_write/remote_write.c38
-rw-r--r--exporting/tests/exporting_fixtures.c18
-rw-r--r--exporting/tests/netdata_doubles.c20
-rw-r--r--exporting/tests/test_exporting_engine.c24
-rw-r--r--exporting/tests/test_exporting_engine.h1
-rw-r--r--health/health.c250
-rw-r--r--health/health.h52
-rw-r--r--health/health_config.c592
-rw-r--r--health/health_json.c97
-rw-r--r--health/health_log.c292
-rw-r--r--libnetdata/circular_buffer/circular_buffer.c6
-rw-r--r--libnetdata/circular_buffer/circular_buffer.h2
-rw-r--r--libnetdata/dictionary/dictionary.c608
-rw-r--r--libnetdata/dictionary/dictionary.h33
-rw-r--r--libnetdata/eval/eval.c79
-rw-r--r--libnetdata/eval/eval.h5
-rw-r--r--libnetdata/libnetdata.h70
-rw-r--r--libnetdata/log/log.c4
-rw-r--r--libnetdata/required_dummies.h5
-rw-r--r--libnetdata/simple_pattern/simple_pattern.c4
-rw-r--r--libnetdata/threads/threads.c2
-rw-r--r--libnetdata/worker_utilization/worker_utilization.c149
-rw-r--r--libnetdata/worker_utilization/worker_utilization.h27
-rw-r--r--ml/Dimension.h2
-rw-r--r--ml/Host.cc12
-rw-r--r--ml/Host.h4
-rw-r--r--ml/ml.cc4
-rw-r--r--parser/parser.c5
-rw-r--r--parser/parser.h3
-rw-r--r--registry/registry.c2
-rw-r--r--streaming/compression.c71
-rw-r--r--streaming/receiver.c72
-rw-r--r--streaming/rrdpush.c140
-rw-r--r--streaming/rrdpush.h9
-rw-r--r--streaming/sender.c307
-rw-r--r--web/api/badges/web_buffer_svg.c6
-rw-r--r--web/api/exporters/shell/allmetrics_shell.c40
-rw-r--r--web/api/formatters/charts2json.c24
-rw-r--r--web/api/formatters/csv/csv.c2
-rw-r--r--web/api/formatters/json/json.c4
-rw-r--r--web/api/formatters/json_wrapper.c20
-rw-r--r--web/api/formatters/rrd2json.c12
-rw-r--r--web/api/formatters/rrdset2json.c30
-rw-r--r--web/api/queries/query.c51
-rw-r--r--web/api/queries/weights.c36
-rw-r--r--web/api/web_api_v1.c14
-rw-r--r--web/server/web_client.c6
99 files changed, 4239 insertions, 3436 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8143e5b694..82729885c4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1498,6 +1498,7 @@ if(BUILD_TESTING)
exporting/tests/netdata_doubles.c
exporting/tests/system_doubles.c
database/rrdlabels.c
+ database/rrdvar.c
)
set(TEST_NAME exporting_engine)
set(PROMETHEUS_REMOTE_WRITE_LINK_OPTIONS)
diff --git a/Makefile.am b/Makefile.am
index 153731f978..e56a91f4fe 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1252,6 +1252,7 @@ if ENABLE_UNITTESTS
$(EXPORTING_ENGINE_FILES) \
$(LIBNETDATA_FILES) \
database/rrdlabels.c \
+ database/rrdvar.c \
$(NULL)
exporting_tests_exporting_engine_testdriver_CFLAGS = \
$(AM_CFLAGS) \
diff --git a/aclk/aclk.c b/aclk/aclk.c
index cfd85ad3a3..4b8750064a 100644
--- a/aclk/aclk.c
+++ b/aclk/aclk.c
@@ -762,7 +762,7 @@ void aclk_host_state_update(RRDHOST *host, int cmd)
node_instance_creation_t node_instance_creation = {
.claim_id = localhost->aclk_state.claimed_id,
.hops = host->system_info->hops,
- .hostname = host->hostname,
+ .hostname = rrdhost_hostname(host),
.machine_guid = host->machine_guid
};
create_query->data.bin_payload.payload = generate_node_instance_creation(&create_query->data.bin_payload.size, &node_instance_creation);
@@ -829,7 +829,7 @@ void aclk_send_node_instances()
char host_id[UUID_STR_LEN];
uuid_unparse_lower(list->host_id, host_id);
- RRDHOST *host = rrdhost_find_by_guid(host_id, 0);
+ RRDHOST *host = rrdhost_find_by_guid(host_id);
struct capability caps[] = {
{ .name = "proto", .version = 1, .enabled = 1 },
{ .name = "ml", .version = ml_capable(localhost), .enabled = host ? ml_enabled(host) : 0 },
@@ -867,7 +867,7 @@ void aclk_send_node_instances()
rrdhost_aclk_state_unlock(localhost);
info("Queuing registration for host=%s, hops=%d",(char*)node_instance_creation.machine_guid,
list->hops);
- freez(node_instance_creation.machine_guid);
+ freez((void *)node_instance_creation.machine_guid);
aclk_queue_query(create_query);
}
freez(list->hostname);
@@ -992,7 +992,7 @@ char *aclk_state(void)
RRDHOST *host;
rrd_rdlock();
rrdhost_foreach_read(host) {
- buffer_sprintf(wb, "\n\n> Node Instance for mGUID: \"%s\" hostname \"%s\"\n", host->machine_guid, host->hostname);
+ buffer_sprintf(wb, "\n\n> Node Instance for mGUID: \"%s\" hostname \"%s\"\n", host->machine_guid, rrdhost_hostname(host));
buffer_strcat(wb, "\tClaimed ID: ");
rrdhost_aclk_state_lock(host);
@@ -1179,7 +1179,7 @@ char *aclk_state_json(void)
rrdhost_foreach_read(host) {
json_object *nodeinstance = json_object_new_object();
- tmp = json_object_new_string(host->hostname);
+ tmp = json_object_new_string(rrdhost_hostname(host));
json_object_object_add(nodeinstance, "hostname", tmp);
tmp = json_object_new_string(host->machine_guid);
diff --git a/aclk/aclk_query.c b/aclk/aclk_query.c
index 981c01965a..132d5fe18f 100644
--- a/aclk/aclk_query.c
+++ b/aclk/aclk_query.c
@@ -38,9 +38,7 @@ static RRDHOST *node_id_2_rrdhost(const char *node_id)
int res;
uuid_t node_id_bin, host_id_bin;
- rrd_rdlock();
- RRDHOST *host = find_host_by_node_id((char *) node_id);
- rrd_unlock();
+ RRDHOST *host = find_host_by_node_id((char *)node_id);
if (host)
return host;
@@ -54,7 +52,7 @@ static RRDHOST *node_id_2_rrdhost(const char *node_id)
return NULL;
}
uuid_unparse_lower(host_id_bin, host_id);
- return rrdhost_find_by_guid(host_id, 0);
+ return rrdhost_find_by_guid(host_id);
}
#define NODE_ID_QUERY "/node/"
diff --git a/aclk/aclk_rx_msgs.c b/aclk/aclk_rx_msgs.c
index e6ed332cc5..b42f010f9e 100644
--- a/aclk/aclk_rx_msgs.c
+++ b/aclk/aclk_rx_msgs.c
@@ -274,7 +274,7 @@ int create_node_instance_result(const char *msg, size_t msg_len)
.node_id = res.node_id
};
- RRDHOST *host = rrdhost_find_by_guid(res.machine_guid, 0);
+ RRDHOST *host = rrdhost_find_by_guid(res.machine_guid);
if (host) {
// not all host must have RRDHOST struct created for them
// if they never connected during runtime of agent
@@ -527,7 +527,7 @@ unsigned int aclk_init_rx_msg_handlers(void)
return i;
}
-void aclk_handle_new_cloud_msg(const char *message_type, const char *msg, size_t msg_len, const char *topic)
+void aclk_handle_new_cloud_msg(const char *message_type, const char *msg, size_t msg_len, const char *topic __maybe_unused)
{
if (aclk_stats_enabled) {
ACLK_STATS_LOCK;
diff --git a/aclk/schema-wrappers/node_creation.h b/aclk/schema-wrappers/node_creation.h
index 190ccb4d6e..7a8c7f7c76 100644
--- a/aclk/schema-wrappers/node_creation.h
+++ b/aclk/schema-wrappers/node_creation.h
@@ -8,9 +8,9 @@ extern "C" {
#endif
typedef struct {
- char* claim_id;
- char* machine_guid;
- char* hostname;
+ const char *claim_id;
+ const char *machine_guid;
+ const char *hostname;
int32_t hops;
} node_instance_creation_t;
diff --git a/aclk/schema-wrappers/node_info.h b/aclk/schema-wrappers/node_info.h
index e8ac2d7c60..de4ade78aa 100644
--- a/aclk/schema-wrappers/node_info.h
+++ b/aclk/schema-wrappers/node_info.h
@@ -19,41 +19,27 @@ struct machine_learning_info {
};
struct aclk_node_info {
- char *name;
-
- char *os;
- char *os_name;
- char *os_version;
-
- char *kernel_name;
- char *kernel_version;
-
- char *architecture;
-
+ const char *name;
+
+ const char *os;
+ const char *os_name;
+ const char *os_version;
+ const char *kernel_name;
+ const char *kernel_version;
+ const char *architecture;
uint32_t cpus;
-
- char *cpu_frequency;
-
- char *memory;
-
- char *disk_space;
-
- char *version;
-
- char *release_channel;
-
- char *timezone;
-
- char *virtualization_type;
-
- char *container_type;
-
- char *custom_info;
-
- char *machine_guid;
+ const char *cpu_frequency;
+ const char *memory;
+ const char *disk_space;
+ const char *version;
+ const char *release_channel;
+ const char *timezone;
+ const char *virtualization_type;
+ const char *container_type;
+ const char *custom_info;
+ const char *machine_guid;
DICTIONARY *host_labels_ptr;
-
struct machine_learning_info ml_info;
};
@@ -72,8 +58,8 @@ struct update_node_info {
};
struct collector_info {
- char *module;
- char *plugin;
+ const char *module;
+ const char *plugin;
};
struct update_node_collectors {
diff --git a/collectors/cgroups.plugin/tests/test_doubles.c b/collectors/cgroups.plugin/tests/test_doubles.c
index 6d85bc0f12..7f44416255 100644
--- a/collectors/cgroups.plugin/tests/test_doubles.c
+++ b/collectors/cgroups.plugin/tests/test_doubles.c
@@ -157,3 +157,8 @@ void sql_store_chart_label(uuid_t *chart_uuid, int source_type, char *label, cha
void rrdcalc_update_rrdlabels(RRDSET *st) {
(void)st;
}
+
+void db_execute(const char *cmd)
+{
+ UNUSED(cmd);
+}
diff --git a/collectors/plugins.d/pluginsd_parser.c b/collectors/plugins.d/pluginsd_parser.c
index 88e07fab7f..3f0a5ae8bb 100644
--- a/collectors/plugins.d/pluginsd_parser.c
+++ b/collectors/plugins.d/pluginsd_parser.c
@@ -105,13 +105,13 @@ PARSER_RC pluginsd_variable_action(void *user, RRDHOST *host, RRDSET *st, char *
if (rv)
rrdvar_custom_host_variable_set(host, rv, value);
else
- error("cannot find/create HOST VARIABLE '%s' on host '%s'", name, host->hostname);
+ error("cannot find/create HOST VARIABLE '%s' on host '%s'", name, rrdhost_hostname(host));
} else {
RRDSETVAR *rs = rrdsetvar_custom_chart_variable_create(st, name);
if (rs)
rrdsetvar_custom_chart_variable_set(rs, value);
else
- error("cannot find/create CHART VARIABLE '%s' on host '%s', chart '%s'", name, host->hostname, st->id);
+ error("cannot find/create CHART VARIABLE '%s' on host '%s', chart '%s'", name, rrdhost_hostname(host), rrdset_id(st));
}
return PARSER_RC_OK;
}
@@ -184,7 +184,7 @@ PARSER_RC pluginsd_clabel_commit_action(void *user, RRDHOST *host, DICTIONARY *n
{
RRDSET *st = ((PARSER_USER_OBJECT *)user)->st;
if (unlikely(!st)) {
- error("requested CLABEL_COMMIT on host '%s', without a BEGIN, ignoring