summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt31
-rw-r--r--Makefile.am2
-rw-r--r--collectors/cgroups.plugin/sys_fs_cgroup.c23
-rw-r--r--collectors/cgroups.plugin/tests/test_doubles.c8
-rw-r--r--collectors/cups.plugin/cups_plugin.c13
-rw-r--r--collectors/diskspace.plugin/plugin_diskspace.c6
-rw-r--r--collectors/plugins.d/pluginsd_parser.c26
-rw-r--r--collectors/proc.plugin/ipc.c12
-rw-r--r--collectors/proc.plugin/proc_diskstats.c2
-rw-r--r--collectors/proc.plugin/proc_interrupts.c4
-rw-r--r--collectors/proc.plugin/proc_loadavg.c6
-rw-r--r--collectors/proc.plugin/proc_mdstat.c1
-rw-r--r--collectors/proc.plugin/proc_net_dev.c9
-rw-r--r--collectors/proc.plugin/proc_net_snmp.c4
-rw-r--r--collectors/proc.plugin/proc_net_sockstat.c12
-rw-r--r--collectors/proc.plugin/proc_net_stat_conntrack.c4
-rw-r--r--collectors/proc.plugin/proc_net_wireless.c1
-rw-r--r--collectors/proc.plugin/proc_self_mountinfo.c3
-rw-r--r--collectors/proc.plugin/proc_softirqs.c4
-rw-r--r--collectors/proc.plugin/proc_spl_kstat_zfs.c6
-rw-r--r--collectors/proc.plugin/proc_stat.c4
-rw-r--r--collectors/proc.plugin/sys_block_zram.c13
-rw-r--r--collectors/proc.plugin/sys_class_infiniband.c6
-rw-r--r--collectors/proc.plugin/sys_class_power_supply.c1
-rw-r--r--collectors/proc.plugin/sys_fs_btrfs.c1
-rw-r--r--collectors/statsd.plugin/statsd.c53
-rw-r--r--collectors/tc.plugin/plugin_tc.c75
-rw-r--r--configure.ac1
-rw-r--r--daemon/analytics.c60
-rw-r--r--daemon/global_statistics.c369
-rw-r--r--daemon/main.c4
-rw-r--r--daemon/service.c251
-rw-r--r--daemon/unit_test.c36
-rw-r--r--database/engine/journalfile.c2
-rwxr-xr-xdatabase/engine/rrdengineapi.c2
-rw-r--r--database/ram/rrddim_mem.c2
-rw-r--r--database/rrd.h449
-rw-r--r--database/rrdcalc.c869
-rw-r--r--database/rrdcalc.h115
-rw-r--r--database/rrdcalctemplate.c202
-rw-r--r--database/rrdcalctemplate.h35
-rw-r--r--database/rrdcontext.c188
-rw-r--r--database/rrdcontext.h2
-rw-r--r--database/rrddim.c589
-rw-r--r--database/rrddimvar.c278
-rw-r--r--database/rrddimvar.h44
-rw-r--r--database/rrdfamily.c87
-rw-r--r--database/rrdhost.c544
-rw-r--r--database/rrdlabels.c97
-rw-r--r--database/rrdset.c1085
-rw-r--r--database/rrdsetvar.c305
-rw-r--r--database/rrdsetvar.h36
-rw-r--r--database/rrdvar.c272
-rw-r--r--database/rrdvar.h74
-rw-r--r--database/sqlite/sqlite_aclk.c3
-rw-r--r--database/sqlite/sqlite_aclk_chart.c36
-rw-r--r--database/sqlite/sqlite_aclk_node.c5
-rw-r--r--database/sqlite/sqlite_db_migration.c18
-rw-r--r--database/sqlite/sqlite_functions.c381
-rw-r--r--database/sqlite/sqlite_functions.h13
-rw-r--r--database/sqlite/sqlite_health.c15
-rw-r--r--exporting/json/json.c4
-rw-r--r--exporting/process_data.c12
-rw-r--r--exporting/prometheus/prometheus.c28
-rw-r--r--exporting/prometheus/remote_write/remote_write.c8
-rw-r--r--exporting/tests/netdata_doubles.c8
-rw-r--r--health/health.c184
-rw-r--r--health/health.h4
-rw-r--r--health/health_config.c188
-rw-r--r--health/health_json.c31
-rw-r--r--health/health_log.c19
-rw-r--r--libnetdata/Makefile.am1
-rw-r--r--libnetdata/dictionary/README.md18
-rw-r--r--libnetdata/dictionary/dictionary.c3539
-rw-r--r--libnetdata/dictionary/dictionary.h283
-rw-r--r--libnetdata/libnetdata.h1
-rw-r--r--libnetdata/locks/README.md6
-rw-r--r--libnetdata/log/log.c11
-rw-r--r--libnetdata/required_dummies.h2
-rw-r--r--libnetdata/string/Makefile.am8
-rw-r--r--libnetdata/string/README.md20
-rw-r--r--libnetdata/string/string.c595
-rw-r--r--libnetdata/string/string.h30
-rw-r--r--libnetdata/threads/threads.c29
-rw-r--r--libnetdata/threads/threads.h7
-rw-r--r--ml/Dimension.h2
-rw-r--r--registry/registry.c8
-rw-r--r--registry/registry_db.c11
-rw-r--r--registry/registry_init.c18
-rw-r--r--registry/registry_internals.h2
-rw-r--r--registry/registry_machine.c10
-rw-r--r--streaming/rrdpush.c30
-rw-r--r--streaming/rrdpush.h2
-rw-r--r--streaming/sender.c32
-rw-r--r--tests/profile/benchmark-dictionary.c4
-rw-r--r--web/api/badges/web_buffer_svg.c14
-rw-r--r--web/api/exporters/shell/allmetrics_shell.c21
-rw-r--r--web/api/formatters/charts2json.c15
-rw-r--r--web/api/formatters/json_wrapper.c25
-rw-r--r--web/api/formatters/rrd2json.c11
-rw-r--r--web/api/formatters/rrdset2json.c17
-rw-r--r--web/api/queries/query.c40
-rw-r--r--web/api/queries/rrdr.c4
-rw-r--r--web/api/queries/rrdr.h1
-rw-r--r--web/api/queries/weights.c42
-rw-r--r--web/api/web_api_v1.c8
106 files changed, 6989 insertions, 5163 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c2dfcc02ef..02fc8304e7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -220,7 +220,11 @@ pkg_check_modules(CURL libcurl)
# -----------------------------------------------------------------------------
# Detect libcups
-pkg_check_modules(CURL libcups)
+pkg_check_modules(CUPS libcups)
+IF(NOT CUPS_LIBRARIES)
+ pkg_check_modules(CUPS cups)
+ENDIF()
+
# later we use:
# ${CUPS_LIBRARIES}
# ${CUPS_CFLAGS_OTHER}
@@ -446,6 +450,8 @@ set(LIBNETDATA_FILES
libnetdata/avl/avl.h
libnetdata/buffer/buffer.c
libnetdata/buffer/buffer.h
+ libnetdata/circular_buffer/circular_buffer.c
+ libnetdata/circular_buffer/circular_buffer.h
libnetdata/clocks/clocks.c
libnetdata/clocks/clocks.h
libnetdata/completion/completion.c
@@ -454,10 +460,15 @@ set(LIBNETDATA_FILES
libnetdata/dictionary/dictionary.h
libnetdata/eval/eval.c
libnetdata/eval/eval.h
+ libnetdata/health/health.c
+ libnetdata/health/health.h
libnetdata/inlined.h
+ libnetdata/json/json.c
+ libnetdata/json/json.h
+ libnetdata/json/jsmn.c
+ libnetdata/json/jsmn.h
libnetdata/libnetdata.c
libnetdata/libnetdata.h
- libnetdata/required_dummies.h
libnetdata/locks/locks.c
libnetdata/locks/locks.h
libnetdata/log/log.c
@@ -470,6 +481,9 @@ set(LIBNETDATA_FILES
libnetdata/popen/popen.h
libnetdata/procfile/procfile.c
libnetdata/procfile/procfile.h
+ libnetdata/required_dummies.h
+ libnetdata/socket/security.c
+ libnetdata/socket/security.h
libnetdata/simple_pattern/simple_pattern.c
libnetdata/simple_pattern/simple_pattern.h
libnetdata/socket/socket.c
@@ -478,23 +492,16 @@ set(LIBNETDATA_FILES
libnetdata/statistical/statistical.h
libnetdata/storage_number/storage_number.c
libnetdata/storage_number/storage_number.h
+ libnetdata/string/string.c
+ libnetdata/string/string.h
libnetdata/threads/threads.c
libnetdata/threads/threads.h
libnetdata/url/url.c
libnetdata/url/url.h
- libnetdata/json/json.c
- libnetdata/json/json.h
- libnetdata/json/jsmn.c
- libnetdata/json/jsmn.h
- libnetdata/health/health.c
- libnetdata/health/health.h
libnetdata/string/utf8.h
- libnetdata/socket/security.c
- libnetdata/socket/security.h
libnetdata/worker_utilization/worker_utilization.c
libnetdata/worker_utilization/worker_utilization.h
- libnetdata/circular_buffer/circular_buffer.c
- libnetdata/circular_buffer/circular_buffer.h)
+ )
IF(ENABLE_PLUGIN_EBPF)
list(APPEND LIBNETDATA_FILES
diff --git a/Makefile.am b/Makefile.am
index e56a91f4fe..df535e1c77 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -173,6 +173,8 @@ LIBNETDATA_FILES = \
libnetdata/socket/security.h \
libnetdata/statistical/statistical.c \
libnetdata/statistical/statistical.h \
+ libnetdata/string/string.c \
+ libnetdata/string/string.h \
libnetdata/storage_number/storage_number.c \
libnetdata/storage_number/storage_number.h \
libnetdata/threads/threads.c \
diff --git a/collectors/cgroups.plugin/sys_fs_cgroup.c b/collectors/cgroups.plugin/sys_fs_cgroup.c
index b214b3731b..74aedf2b52 100644
--- a/collectors/cgroups.plugin/sys_fs_cgroup.c
+++ b/collectors/cgroups.plugin/sys_fs_cgroup.c
@@ -857,16 +857,16 @@ struct cgroup {
char *filename_cpu_cfs_quota;
unsigned long long cpu_cfs_quota;
- RRDSETVAR *chart_var_cpu_limit;
+ const RRDSETVAR_ACQUIRED *chart_var_cpu_limit;
NETDATA_DOUBLE prev_cpu_usage;
char *filename_memory_limit;
unsigned long long memory_limit;
- RRDSETVAR *chart_var_memory_limit;
+ const RRDSETVAR_ACQUIRED *chart_var_memory_limit;
char *filename_memoryswap_limit;
unsigned long long memoryswap_limit;
- RRDSETVAR *chart_var_memoryswap_limit;
+ const RRDSETVAR_ACQUIRED *chart_var_memoryswap_limit;
// services
RRDDIM *rd_cpu;
@@ -3708,10 +3708,10 @@ cpu_limits2_err:
}
}
-static inline int update_memory_limits(char **filename, RRDSETVAR **chart_var, unsigned long long *value, const char *chart_var_name, struct cgroup *cg) {
+static inline int update_memory_limits(char **filename, const RRDSETVAR_ACQUIRED **chart_var, unsigned long long *value, const char *chart_var_name, struct cgroup *cg) {
if(*filename) {
if(unlikely(!*chart_var)) {
- *chart_var = rrdsetvar_custom_chart_variable_create(cg->st_mem_usage, chart_var_name);
+ *chart_var = rrdsetvar_custom_chart_variable_add_and_acquire(cg->st_mem_usage, chart_var_name);
if(!*chart_var) {
error("Cannot create cgroup %s chart variable '%s'. Will not update its limit anymore.", cg->id, chart_var_name);
freez(*filename);
@@ -3727,7 +3727,7 @@ static inline int update_memory_limits(char **filename, RRDSETVAR **chart_var, u
*filename = NULL;
}
else {
- rrdsetvar_custom_chart_variable_set(*chart_var, (NETDATA_DOUBLE)(*value / (1024 * 1024)));
+ rrdsetvar_custom_chart_variable_set(cg->st_mem_usage, *chart_var, (NETDATA_DOUBLE)(*value / (1024 * 1024)));
return 1;
}
} else {
@@ -3742,11 +3742,11 @@ static inline int update_memory_limits(char **filename, RRDSETVAR **chart_var, u
char *s = "max\n\0";
if(strcmp(s, buffer) == 0){
*value = UINT64_MAX;
- rrdsetvar_custom_chart_variable_set(*chart_var, (NETDATA_DOUBLE)(*value / (1024 * 1024)));
+ rrdsetvar_custom_chart_variable_set(cg->st_mem_usage, *chart_var, (NETDATA_DOUBLE)(*value / (1024 * 1024)));
return 1;
}
*value = str2ull(buffer);
- rrdsetvar_custom_chart_variable_set(*chart_var, (NETDATA_DOUBLE)(*value / (1024 * 1024)));
+ rrdsetvar_custom_chart_variable_set(cg->st_mem_usage, *chart_var, (NETDATA_DOUBLE)(*value / (1024 * 1024)));
return 1;
}
}
@@ -3843,7 +3843,7 @@ void update_cgroup_charts(int update_every) {
}
if(unlikely(!cg->chart_var_cpu_limit)) {
- cg->chart_var_cpu_limit = rrdsetvar_custom_chart_variable_create(cg->st_cpu, "cpu_limit");
+ cg->chart_var_cpu_limit = rrdsetvar_custom_chart_variable_add_and_acquire(cg->st_cpu, "cpu_limit");
if(!cg->chart_var_cpu_limit) {
error("Cannot create cgroup %s chart variable 'cpu_limit'. Will not update its limit anymore.", cg->id);
if(cg->filename_cpuset_cpus) freez(cg->filename_cpuset_cpus);
@@ -3868,8 +3868,6 @@ void update_cgroup_charts(int update_every) {
value = (NETDATA_DOUBLE)cg->cpuset_cpus * 100;
}
if(likely(value)) {
- rrdsetvar_custom_chart_variable_set(cg->chart_var_cpu_limit, value);
-
if(unlikely(!cg->st_cpu_limit)) {
snprintfz(title, CHART_TITLE_MAX, "CPU Usage within the limits");
@@ -3909,14 +3907,15 @@ void update_cgroup_charts(int update_every) {
cg->prev_cpu_usage = cpu_usage;
+ rrdsetvar_custom_chart_variable_set(cg->st_cpu, cg->chart_var_cpu_limit, value);
rrdset_done(cg->st_cpu_limit);
}
else {
- rrdsetvar_custom_chart_variable_set(cg->chart_var_cpu_limit, NAN);