]> arthur.barton.de Git - netdata.git/commitdiff
allow netdata to be easily relocatable
authorCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Tue, 14 Feb 2017 23:24:38 +0000 (01:24 +0200)
committerCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Tue, 14 Feb 2017 23:24:38 +0000 (01:24 +0200)
38 files changed:
CMakeLists.txt
src/apps_plugin.c
src/common.c
src/common.h
src/daemon.c
src/health.c
src/ipc.c
src/main.c
src/plugin_proc.c
src/plugin_tc.c
src/plugins_d.c
src/proc_diskstats.c
src/proc_interrupts.c
src/proc_loadavg.c
src/proc_meminfo.c
src/proc_net_dev.c
src/proc_net_ip_vs_stats.c
src/proc_net_netstat.c
src/proc_net_rpc_nfs.c
src/proc_net_rpc_nfsd.c
src/proc_net_snmp.c
src/proc_net_snmp6.c
src/proc_net_softnet_stat.c
src/proc_net_stat_conntrack.c
src/proc_net_stat_synproxy.c
src/proc_self_mountinfo.c
src/proc_softirqs.c
src/proc_stat.c
src/proc_sys_kernel_random_entropy_avail.c
src/proc_uptime.c
src/proc_vmstat.c
src/registry_init.c
src/rrd.c
src/sys_devices_system_edac_mc.c
src/sys_devices_system_node.c
src/sys_fs_cgroup.c
src/sys_kernel_mm_ksm.c
src/web_client.c

index 04c4415e0d611ba4a110d2fca39060a5d0ba91ac..893af80660953a7d7438136c2f45ca3fbb7d49ac 100755 (executable)
@@ -10,6 +10,8 @@ find_package (Threads)
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wformat-signedness -Werror=format-security -DNETDATA_INTERNAL_CHECKS=1")
 
 set(NETDATA_SOURCE_FILES
+        src/adaptive_resortable_list.c
+        src/adaptive_resortable_list.h
         src/appconfig.c
         src/appconfig.h
         src/avl.c
@@ -30,29 +32,37 @@ set(NETDATA_SOURCE_FILES
         src/global_statistics.h
         src/health.c
         src/health.h
+        src/inlined.h
         src/ipc.c
         src/ipc.h
         src/log.c
         src/log.h
+        src/macos_fw.c
+        src/macos_mach_smi.c
+        src/macos_sysctl.c
         src/main.c
         src/main.h
         src/plugin_checks.c
         src/plugin_checks.h
+        src/plugin_freebsd.c
+        src/plugin_freebsd.h
         src/plugin_idlejitter.c
         src/plugin_idlejitter.h
+        src/plugin_macos.c
+        src/plugin_macos.h
         src/plugin_nfacct.c
         src/plugin_nfacct.h
         src/plugin_proc.c
         src/plugin_proc.h
-        src/plugins_d.c
-        src/plugins_d.h
+        src/plugin_proc_diskspace.c
+        src/plugin_proc_diskspace.h
         src/plugin_tc.c
         src/plugin_tc.h
+        src/plugins_d.c
+        src/plugins_d.h
         src/popen.c
         src/popen.h
         src/proc_diskstats.c
-        src/procfile.c
-        src/procfile.h
         src/proc_interrupts.c
         src/proc_loadavg.c
         src/proc_meminfo.c
@@ -61,8 +71,8 @@ set(NETDATA_SOURCE_FILES
         src/proc_net_netstat.c
         src/proc_net_rpc_nfs.c
         src/proc_net_rpc_nfsd.c
-        src/proc_net_snmp6.c
         src/proc_net_snmp.c
+        src/proc_net_snmp6.c
         src/proc_net_softnet_stat.c
         src/proc_net_stat_conntrack.c
         src/proc_net_stat_synproxy.c
@@ -71,15 +81,34 @@ set(NETDATA_SOURCE_FILES
         src/proc_softirqs.c
         src/proc_stat.c
         src/proc_sys_kernel_random_entropy_avail.c
+        src/proc_uptime.c
         src/proc_vmstat.c
+        src/procfile.c
+        src/procfile.h
         src/registry.c
         src/registry.h
-        src/rrd2json.c
-        src/rrd2json.h
+        src/registry_db.c
+        src/registry_init.c
+        src/registry_internals.c
+        src/registry_internals.h
+        src/registry_log.c
+        src/registry_machine.c
+        src/registry_machine.h
+        src/registry_person.c
+        src/registry_person.h
+        src/registry_url.c
+        src/registry_url.h
         src/rrd.c
         src/rrd.h
+        src/rrd2json.c
+        src/rrd2json.h
+        src/simple_pattern.c
+        src/simple_pattern.h
+        src/socket.c src/socket.h
         src/storage_number.c
         src/storage_number.h
+        src/sys_devices_system_edac_mc.c
+        src/sys_devices_system_node.c
         src/sys_fs_cgroup.c
         src/sys_kernel_mm_ksm.c
         src/unit_test.c
@@ -94,34 +123,6 @@ set(NETDATA_SOURCE_FILES
         src/web_client.h
         src/web_server.c
         src/web_server.h
-        src/socket.c src/socket.h
-        src/registry_url.c
-        src/registry_url.h
-        src/registry_internals.h
-        src/registry_person.c
-        src/registry_person.h
-        src/registry_machine.c
-        src/registry_machine.h
-        src/registry_internals.c
-        src/registry_init.c
-        src/registry_db.c
-        src/registry_log.c
-        src/proc_uptime.c
-        src/sys_devices_system_edac_mc.c
-        src/plugin_proc_diskspace.c
-        src/plugin_proc_diskspace.h
-        src/simple_pattern.c
-        src/simple_pattern.h
-        src/inlined.h
-        src/adaptive_resortable_list.h
-        src/adaptive_resortable_list.c
-        src/plugin_freebsd.c
-        src/plugin_freebsd.h
-        src/macos_fw.c
-        src/macos_mach_smi.c
-        src/macos_sysctl.c
-        src/plugin_macos.c
-        src/plugin_macos.h
         )
 
 set(APPS_PLUGIN_SOURCE_FILES
index af634c0a44e565c9640afc56ade6981e846cfe2e..103bc143293d26c494047ffcfbd890be4c92fc1c 100644 (file)
@@ -687,19 +687,19 @@ static inline int managed_log(struct pid_stat *p, uint32_t log, int status) {
                 p->log_thrown |= log;
                 switch(log) {
                     case PID_LOG_IO:
-                        error("Cannot process %s/proc/%d/io (command '%s')", global_host_prefix, p->pid, p->comm);
+                        error("Cannot process %s/proc/%d/io (command '%s')", netdata_configured_host_prefix, p->pid, p->comm);
                         break;
 
                     case PID_LOG_STATM:
-                        error("Cannot process %s/proc/%d/statm (command '%s')", global_host_prefix, p->pid, p->comm);
+                        error("Cannot process %s/proc/%d/statm (command '%s')", netdata_configured_host_prefix, p->pid, p->comm);
                         break;
 
                     case PID_LOG_CMDLINE:
-                        error("Cannot process %s/proc/%d/cmdline (command '%s')", global_host_prefix, p->pid, p->comm);
+                        error("Cannot process %s/proc/%d/cmdline (command '%s')", netdata_configured_host_prefix, p->pid, p->comm);
                         break;
 
                     case PID_LOG_FDS:
-                        error("Cannot process entries in %s/proc/%d/fd (command '%s')", global_host_prefix, p->pid, p->comm);
+                        error("Cannot process entries in %s/proc/%d/fd (command '%s')", netdata_configured_host_prefix, p->pid, p->comm);
                         break;
 
                     case PID_LOG_STAT:
@@ -760,7 +760,7 @@ static inline int read_proc_pid_cmdline(struct pid_stat *p) {
 
     if(unlikely(!p->cmdline_filename)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/cmdline", global_host_prefix, p->pid);
+        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/cmdline", netdata_configured_host_prefix, p->pid);
         p->cmdline_filename = strdupz(filename);
     }
 
@@ -813,7 +813,7 @@ static inline int read_proc_pid_stat(struct pid_stat *p) {
 
     if(unlikely(!p->stat_filename)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/stat", global_host_prefix, p->pid);
+        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/stat", netdata_configured_host_prefix, p->pid);
         p->stat_filename = strdupz(filename);
     }
 
@@ -935,7 +935,7 @@ static inline int read_proc_pid_stat(struct pid_stat *p) {
     }
 
     if(unlikely(debug || (p->target && p->target->debug)))
-        fprintf(stderr, "apps.plugin: READ PROC/PID/STAT: %s/proc/%d/stat, process: '%s' on target '%s' (dt=%llu) VALUES: utime=" KERNEL_UINT_FORMAT ", stime=" KERNEL_UINT_FORMAT ", cutime=" KERNEL_UINT_FORMAT ", cstime=" KERNEL_UINT_FORMAT ", minflt=" KERNEL_UINT_FORMAT ", majflt=" KERNEL_UINT_FORMAT ", cminflt=" KERNEL_UINT_FORMAT ", cmajflt=" KERNEL_UINT_FORMAT ", threads=%d\n", global_host_prefix, p->pid, p->comm, (p->target)?p->target->name:"UNSET", p->stat_collected_usec - p->last_stat_collected_usec, p->utime, p->stime, p->cutime, p->cstime, p->minflt, p->majflt, p->cminflt, p->cmajflt, p->num_threads);
+        fprintf(stderr, "apps.plugin: READ PROC/PID/STAT: %s/proc/%d/stat, process: '%s' on target '%s' (dt=%llu) VALUES: utime=" KERNEL_UINT_FORMAT ", stime=" KERNEL_UINT_FORMAT ", cutime=" KERNEL_UINT_FORMAT ", cstime=" KERNEL_UINT_FORMAT ", minflt=" KERNEL_UINT_FORMAT ", majflt=" KERNEL_UINT_FORMAT ", cminflt=" KERNEL_UINT_FORMAT ", cmajflt=" KERNEL_UINT_FORMAT ", threads=%d\n", netdata_configured_host_prefix, p->pid, p->comm, (p->target)?p->target->name:"UNSET", p->stat_collected_usec - p->last_stat_collected_usec, p->utime, p->stime, p->cutime, p->cstime, p->minflt, p->majflt, p->cminflt, p->cmajflt, p->num_threads);
 
     if(unlikely(global_iterations_counter == 1)) {
         p->minflt           = 0;
@@ -973,7 +973,7 @@ static inline int read_proc_pid_statm(struct pid_stat *p) {
 
     if(unlikely(!p->statm_filename)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/statm", global_host_prefix, p->pid);
+        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/statm", netdata_configured_host_prefix, p->pid);
         p->statm_filename = strdupz(filename);
     }
 
@@ -1011,7 +1011,7 @@ static inline int read_proc_pid_io(struct pid_stat *p) {
 
     if(unlikely(!p->io_filename)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/io", global_host_prefix, p->pid);
+        snprintfz(filename, FILENAME_MAX, "%s/proc/%d/io", netdata_configured_host_prefix, p->pid);
         p->io_filename = strdupz(filename);
     }
 
@@ -1087,7 +1087,7 @@ static inline int read_proc_stat() {
     static usec_t collected_usec = 0, last_collected_usec = 0;
 
     if(unlikely(!ff)) {
-        snprintfz(filename, FILENAME_MAX, "%s/proc/stat", global_host_prefix);
+        snprintfz(filename, FILENAME_MAX, "%s/proc/stat", netdata_configured_host_prefix);
         ff = procfile_open(filename, " \t:", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) goto cleanup;
     }
@@ -1406,7 +1406,7 @@ static inline void zero_pid_fds(struct pid_stat *p, int first, int size) {
 static inline int read_pid_file_descriptors(struct pid_stat *p) {
     if(unlikely(!p->fds_dirname)) {
         char dirname[FILENAME_MAX+1];
-        snprintfz(dirname, FILENAME_MAX, "%s/proc/%d/fd", global_host_prefix, p->pid);
+        snprintfz(dirname, FILENAME_MAX, "%s/proc/%d/fd", netdata_configured_host_prefix, p->pid);
         p->fds_dirname = strdupz(dirname);
     }
 
@@ -1449,7 +1449,7 @@ static inline int read_pid_file_descriptors(struct pid_stat *p) {
         if(unlikely(p->fds[fdid] == 0)) {
             // we don't know this fd, get it
 
-            sprintf(fdname, "%s/proc/%d/fd/%s", global_host_prefix, p->pid, de->d_name);
+            sprintf(fdname, "%s/proc/%d/fd/%s", netdata_configured_host_prefix, p->pid, de->d_name);
             ssize_t l = readlink(fdname, linkname, FILENAME_MAX);
             if(unlikely(l == -1)) {
                 if(debug || (p->target && p->target->debug)) {
@@ -1886,7 +1886,7 @@ static int collect_data_for_all_processes(void) {
 
     char dirname[FILENAME_MAX + 1];
 
-    snprintfz(dirname, FILENAME_MAX, "%s/proc", global_host_prefix);
+    snprintfz(dirname, FILENAME_MAX, "%s/proc", netdata_configured_host_prefix);
     DIR *dir = opendir(dirname);
     if(!dir) return 0;
 
@@ -3090,12 +3090,12 @@ int main(int argc, char **argv) {
     error_log_errors_per_period = 100;
     error_log_throttle_period = 3600;
 
-    global_host_prefix = getenv("NETDATA_HOST_PREFIX");
-    if(global_host_prefix == NULL) {
+    netdata_configured_host_prefix = getenv("NETDATA_HOST_PREFIX");
+    if(netdata_configured_host_prefix == NULL) {
         // info("NETDATA_HOST_PREFIX is not passed from netdata");
-        global_host_prefix = "";
+        netdata_configured_host_prefix = "";
     }
-    // else info("Found NETDATA_HOST_PREFIX='%s'", global_host_prefix);
+    // else info("Found NETDATA_HOST_PREFIX='%s'", netdata_configured_host_prefix);
 
     config_dir = getenv("NETDATA_CONFIG_DIR");
     if(config_dir == NULL) {
index e3682e87718d6fb2a8e74d78c27d30b54a69b2fa..5243e40739880ba4c980857ba6cda184a66d90c3 100644 (file)
@@ -8,7 +8,15 @@
 #    define MADV_DONTFORK INHERIT_NONE
 #endif /* __FreeBSD__ || __APPLE__*/
 
-char *global_host_prefix = "";
+char *netdata_configured_config_dir  = NULL;
+char *netdata_configured_log_dir     = NULL;
+char *netdata_configured_plugins_dir = NULL;
+char *netdata_configured_web_dir     = NULL;
+char *netdata_configured_cache_dir   = NULL;
+char *netdata_configured_varlib_dir  = NULL;
+char *netdata_configured_home_dir    = NULL;
+char *netdata_configured_host_prefix = NULL;
+
 int enable_ksm = 1;
 
 volatile sig_atomic_t netdata_exit = 0;
@@ -1115,7 +1123,7 @@ long get_system_cpus(void) {
     #else
 
     char filename[FILENAME_MAX + 1];
-    snprintfz(filename, FILENAME_MAX, "%s/proc/stat", global_host_prefix);
+    snprintfz(filename, FILENAME_MAX, "%s/proc/stat", netdata_configured_host_prefix);
 
     procfile *ff = procfile_open(filename, NULL, PROCFILE_FLAG_DEFAULT);
     if(!ff) {
@@ -1172,7 +1180,7 @@ pid_t get_system_pid_max(void) {
     read = 1;
 
     char filename[FILENAME_MAX + 1];
-    snprintfz(filename, FILENAME_MAX, "%s/proc/sys/kernel/pid_max", global_host_prefix);
+    snprintfz(filename, FILENAME_MAX, "%s/proc/sys/kernel/pid_max", netdata_configured_host_prefix);
 
     unsigned long long max = 0;
     if(read_single_number_file(filename, &max) != 0) {
index e781d47bcc830461b0745fe4b0dc66d9167b88e0..5b9b65b034e905d74649e77227e1994b70ce1653 100644 (file)
 #include "inlined.h"
 #include "adaptive_resortable_list.h"
 
+extern char *netdata_configured_config_dir;
+extern char *netdata_configured_log_dir;
+extern char *netdata_configured_plugins_dir;
+extern char *netdata_configured_web_dir;
+extern char *netdata_configured_cache_dir;
+extern char *netdata_configured_varlib_dir;
+extern char *netdata_configured_home_dir;
+extern char *netdata_configured_host_prefix;
+
 extern void netdata_fix_chart_id(char *s);
 extern void netdata_fix_chart_name(char *s);
 
@@ -255,7 +264,6 @@ extern int savememory(const char *filename, void *mem, size_t size);
 
 extern int fd_is_valid(int fd);
 
-extern char *global_host_prefix;
 extern int enable_ksm;
 
 extern pid_t gettid(void);
index dddafec6e615e9644d87aecd1e32899cff318eae..e7f3b037fd73bd808ea5d999bb00bd1b60b107ff 100644 (file)
@@ -84,8 +84,8 @@ int become_user(const char *username, int pid_fd)
     uid_t uid = pw->pw_uid;
     gid_t gid = pw->pw_gid;
 
-    create_needed_dir(CACHE_DIR, uid, gid);
-    create_needed_dir(VARLIB_DIR, uid, gid);
+    create_needed_dir(netdata_configured_cache_dir, uid, gid);
+    create_needed_dir(netdata_configured_varlib_dir, uid, gid);
 
     if(pidfile[0]) {
         if(chown(pidfile, uid, gid) == -1)
@@ -360,8 +360,8 @@ int become_daemon(int dont_fork, const char *user)
         else debug(D_SYSTEM, "Successfully became user '%s'.", user);
     }
     else {
-        create_needed_dir(CACHE_DIR, getuid(), getgid());
-        create_needed_dir(VARLIB_DIR, getuid(), getgid());
+        create_needed_dir(netdata_configured_cache_dir, getuid(), getgid());
+        create_needed_dir(netdata_configured_varlib_dir, getuid(), getgid());
     }
 
     if(pidfd != -1)
index ffe4713b2fbead7096b7213f2191fc32be533037..9df2e241fe9619406c2a3a45138866dbd22765e7 100644 (file)
@@ -11,9 +11,9 @@ struct health_options {
 };
 
 static struct health_options health = {
-    .health_default_exec = PLUGINS_DIR "/alarm-notify.sh",
+    .health_default_exec = NULL,
     .health_default_recipient = "root",
-    .log_filename = VARLIB_DIR "/health/alarm_log.db",
+    .log_filename = NULL,
     .log_entries_written = 0,
     .log_fp = NULL
 };
@@ -2389,7 +2389,7 @@ void health_readdir(const char *path) {
 
 static inline char *health_config_dir(void) {
     char buffer[FILENAME_MAX + 1];
-    snprintfz(buffer, FILENAME_MAX, "%s/health.d", config_get("global", "config directory", CONFIG_DIR));
+    snprintfz(buffer, FILENAME_MAX, "%s/health.d", netdata_configured_config_dir);
     return config_get("health", "health configuration directory", buffer);
 }
 
@@ -2401,7 +2401,8 @@ void health_init(void) {
         return;
     }
 
-    char *pathname = config_get("health", "health db directory", VARLIB_DIR "/health");
+    char pathname[FILENAME_MAX + 1];
+    snprintfz(pathname, FILENAME_MAX, "%s/health", netdata_configured_varlib_dir);
     if(mkdir(pathname, 0770) == -1 && errno != EEXIST)
         fatal("Cannot create directory '%s'.", pathname);
 
@@ -2414,11 +2415,8 @@ void health_init(void) {
 
     char *path = health_config_dir();
 
-    {
-        char buffer[FILENAME_MAX + 1];
-        snprintfz(buffer, FILENAME_MAX, "%s/alarm-notify.sh", config_get("global", "plugins directory", PLUGINS_DIR));
-        health.health_default_exec = config_get("health", "script to execute on alarm", buffer);
-    }
+    snprintfz(filename, FILENAME_MAX, "%s/alarm-notify.sh", netdata_configured_plugins_dir);
+    health.health_default_exec = config_get("health", "script to execute on alarm", filename);
 
     long n = config_get_number("health", "in memory max health log entries", (long)localhost.health_log.max);
     if(n < 10) {
index a5ab342d3b06de85594574b4dd0398732005181e..39797893a5b271ac94e7f40ce0cf0ef2d6245ece 100644 (file)
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -57,7 +57,7 @@ static inline int ipc_sem_get_limits(struct ipc_limits *lim) {
     static char filename[FILENAME_MAX + 1] = "";
 
     if(unlikely(!filename[0]))
-        snprintfz(filename, FILENAME_MAX, "%s/proc/sys/kernel/sem", global_host_prefix);
+        snprintfz(filename, FILENAME_MAX, "%s/proc/sys/kernel/sem", netdata_configured_host_prefix);
 
     if(unlikely(!ff)) {
         ff = procfile_open(filename, NULL, PROCFILE_FLAG_DEFAULT);
index 8dcc5d7097142b7fe501b5391749bf18ee2176b4..798b6c2590b34e1f65fbb6d1f212acb59b1868f9 100644 (file)
@@ -530,18 +530,26 @@ int main(int argc, char **argv) {
             mallopt(M_ARENA_MAX, 1);
 #endif
 
-        char *config_dir = config_get("global", "config directory", CONFIG_DIR);
-
         // prepare configuration environment variables for the plugins
-        setenv("NETDATA_CONFIG_DIR" , verify_required_directory(config_dir) , 1);
-        setenv("NETDATA_PLUGINS_DIR", verify_required_directory(config_get("global", "plugins directory"  , PLUGINS_DIR)), 1);
-        setenv("NETDATA_WEB_DIR"    , verify_required_directory(config_get("global", "web files directory", WEB_DIR))    , 1);
-        setenv("NETDATA_CACHE_DIR"  , verify_required_directory(config_get("global", "cache directory"    , CACHE_DIR))  , 1);
-        setenv("NETDATA_LIB_DIR"    , verify_required_directory(config_get("global", "lib directory"      , VARLIB_DIR)) , 1);
-        setenv("NETDATA_LOG_DIR"    , verify_required_directory(config_get("global", "log directory"      , LOG_DIR))    , 1);
 
-        setenv("NETDATA_HOST_PREFIX", config_get("global", "host access prefix" , "")         , 1);
-        setenv("HOME"               , config_get("global", "home directory"     , CACHE_DIR)  , 1);
+        netdata_configured_config_dir  = config_get("global", "config directory",    CONFIG_DIR);
+        netdata_configured_log_dir     = config_get("global", "log directory",       LOG_DIR);
+        netdata_configured_plugins_dir = config_get("global", "plugins directory",   PLUGINS_DIR);
+        netdata_configured_web_dir     = config_get("global", "web files directory", WEB_DIR);
+        netdata_configured_cache_dir   = config_get("global", "cache directory",     CACHE_DIR);
+        netdata_configured_varlib_dir  = config_get("global", "lib directory",       VARLIB_DIR);
+        netdata_configured_home_dir    = config_get("global", "home directory",      CACHE_DIR);
+
+        setenv("NETDATA_CONFIG_DIR" , verify_required_directory(netdata_configured_config_dir),  1);
+        setenv("NETDATA_PLUGINS_DIR", verify_required_directory(netdata_configured_plugins_dir), 1);
+        setenv("NETDATA_WEB_DIR"    , verify_required_directory(netdata_configured_web_dir),     1);
+        setenv("NETDATA_CACHE_DIR"  , verify_required_directory(netdata_configured_cache_dir),   1);
+        setenv("NETDATA_LIB_DIR"    , verify_required_directory(netdata_configured_varlib_dir),  1);
+        setenv("NETDATA_LOG_DIR"    , verify_required_directory(netdata_configured_log_dir),     1);
+        setenv("HOME"               , verify_required_directory(netdata_configured_home_dir),    1);
+
+        netdata_configured_host_prefix = config_get("global", "host access prefix", "");
+        setenv("NETDATA_HOST_PREFIX", netdata_configured_host_prefix, 1);
 
         // disable buffering for python plugins
         setenv("PYTHONUNBUFFERED", "1", 1);
@@ -553,8 +561,8 @@ int main(int argc, char **argv) {
         // work while we are cd into config_dir
         // to allow the plugins refer to their config
         // files using relative filenames
-        if(chdir(config_dir) == -1)
-            fatal("Cannot cd to '%s'", config_dir);
+        if(chdir(netdata_configured_config_dir) == -1)
+            fatal("Cannot cd to '%s'", netdata_configured_config_dir);
 
         char path[1024 + 1], *p = getenv("PATH");
         if(!p) p = "/bin:/usr/bin";
@@ -594,18 +602,23 @@ int main(int argc, char **argv) {
 
         // --------------------------------------------------------------------
 
-        global_host_prefix = config_get("global", "host access prefix", "");
-        setenv("NETDATA_HOST_PREFIX", global_host_prefix, 1);
-
         get_system_HZ();
         get_system_cpus();
         get_system_pid_max();
         
         // --------------------------------------------------------------------
 
-        stdout_filename    = config_get("global", "debug log",  LOG_DIR "/debug.log");
-        stderr_filename    = config_get("global", "error log",  LOG_DIR "/error.log");
-        stdaccess_filename = config_get("global", "access log", LOG_DIR "/access.log");
+        {
+            char filename[FILENAME_MAX + 1];
+            snprintfz(filename, FILENAME_MAX, "%s/debug.log", netdata_configured_log_dir);
+            stdout_filename    = config_get("global", "debug log",  filename);
+
+            snprintfz(filename, FILENAME_MAX, "%s/error.log", netdata_configured_log_dir);
+            stderr_filename    = config_get("global", "error log",  filename);
+
+            snprintfz(filename, FILENAME_MAX, "%s/access.log", netdata_configured_log_dir);
+            stdaccess_filename = config_get("global", "access log", filename);
+        }
 
         error_log_throttle_period_backup =
             error_log_throttle_period = config_get_number("global", "errors flood protection period", error_log_throttle_period);
index 9fdb016fcb73960960cb2d0d406851efbcf85fcc..215925a58e0097e07639735bfffaabfc38d71c57 100644 (file)
@@ -157,7 +157,7 @@ int get_numa_node_count(void)
     numa_node_count = 0;
 
     char name[FILENAME_MAX + 1];
-    snprintfz(name, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/devices/system/node");
+    snprintfz(name, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/devices/system/node");
     char *dirname = config_get("plugin:proc:/sys/devices/system/node", "directory to monitor", name);
 
     DIR *dir = opendir(dirname);
index 5fdbf32584bc330725e4274d274019687a561a92..3cb64505469d4498b161a1c4d80cf48dd7466c82 100644 (file)
@@ -782,7 +782,7 @@ void *tc_main(void *ptr) {
 #endif
     uint32_t first_hash;
 
-    snprintfz(buffer, TC_LINE_MAX, "%s/tc-qos-helper.sh", config_get("plugins", "plugins directory", PLUGINS_DIR));
+    snprintfz(buffer, TC_LINE_MAX, "%s/tc-qos-helper.sh", netdata_configured_plugins_dir);
     char *tc_script = config_get("plugin:tc", "script to run to get tc values", buffer);
     
     for(;1;) {
index 4b83b5281616058afa2d26b7e22c32b1a60f8ea1..60f88d88d300f0aed263ac7361d933f225a3d28e 100644 (file)
@@ -442,7 +442,7 @@ void *pluginsd_main(void *ptr) {
     if(pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL) != 0)
         error("Cannot set pthread cancel state to ENABLE.");
 
-    char *dir_name = config_get("plugins", "plugins directory", PLUGINS_DIR);
+    char *dir_name = netdata_configured_plugins_dir;
     int automatic_run = config_get_boolean("plugins", "enable running new plugins", 1);
     int scan_frequency = (int) config_get_number("plugins", "check for new plugins every", 60);
     DIR *dir = NULL;
index 9f7e8e9b2e29866546beb798508477bd1cad46b3..b21838b6182bdb682a43d2ef8b798eeba8613485 100644 (file)
@@ -72,7 +72,7 @@ static struct disk *get_disk(unsigned long major, unsigned long minor, char *dis
 
     // get the default path for finding info about the block device
     if(unlikely(!path_find_block_device[0])) {
-        snprintfz(buffer, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/dev/block/%lu:%lu/%s");
+        snprintfz(buffer, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/dev/block/%lu:%lu/%s");
         snprintfz(path_find_block_device, FILENAME_MAX, "%s", config_get("plugin:proc:/proc/diskstats", "path to get block device infos", buffer));
     }
 
@@ -126,11 +126,11 @@ static struct disk *get_disk(unsigned long major, unsigned long minor, char *dis
     // find the disk sector size
 
     if(unlikely(!path_to_get_hw_sector_size[0])) {
-        snprintfz(buffer, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/block/%s/queue/hw_sector_size");
+        snprintfz(buffer, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/block/%s/queue/hw_sector_size");
         snprintfz(path_to_get_hw_sector_size, FILENAME_MAX, "%s", config_get("plugin:proc:/proc/diskstats", "path to get h/w sector size", buffer));
     }
     if(unlikely(!path_to_get_hw_sector_size_partitions[0])) {
-        snprintfz(buffer, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/dev/block/%lu:%lu/subsystem/%s/../queue/hw_sector_size");
+        snprintfz(buffer, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/dev/block/%lu:%lu/subsystem/%s/../queue/hw_sector_size");
         snprintfz(path_to_get_hw_sector_size_partitions, FILENAME_MAX, "%s", config_get("plugin:proc:/proc/diskstats", "path to get h/w sector size for partitions", buffer));
     }
 
@@ -233,7 +233,7 @@ int do_proc_diskstats(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/diskstats");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/diskstats");
         ff = procfile_open(config_get("plugin:proc:/proc/diskstats", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
     }
     if(unlikely(!ff)) return 0;
index f663c0fdd540498120ecccd1d8d1172a3d78244c..5e29f4f07b0348c8c30dcfd1bdd12572ac2e72e5 100644 (file)
@@ -59,7 +59,7 @@ int do_proc_interrupts(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/interrupts");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/interrupts");
         ff = procfile_open(config_get("plugin:proc:/proc/interrupts", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
     }
     if(unlikely(!ff))
index aa1b2aebb651d1fa28004baaa1c463befe16e51b..4b1779f70c1f9ad8058f0641cae9c5114750192e 100644 (file)
@@ -11,7 +11,7 @@ int do_proc_loadavg(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/loadavg");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/loadavg");
 
         ff = procfile_open(config_get("plugin:proc:/proc/loadavg", "filename to monitor", filename), " \t,:|/", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff))
index 19ba8da3c9a847a3ae5567cd2d883bc7b0808bbf..da6a430b93654b1af3324165cf66fb980fb876bb 100644 (file)
@@ -109,7 +109,7 @@ int do_proc_meminfo(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/meminfo");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/meminfo");
         ff = procfile_open(config_get("plugin:proc:/proc/meminfo", "filename to monitor", filename), " \t:", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff))
             return 1;
index a0e19f3c3d5e73ccb6f8ec2e865b36276e2311bf..bb1e4c0fac1b387e075da17b918a2be1865a4d98 100644 (file)
@@ -134,7 +134,7 @@ int do_proc_net_dev(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/dev");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/dev");
         ff = procfile_open(config_get("plugin:proc:/proc/net/dev", "filename to monitor", filename), " \t,:|", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index a53299291ddbbc4ac88f4d82289413310d75f8c5..96f4660f65dcf9de7d40227c63ea97a3dece9627 100644 (file)
@@ -13,7 +13,7 @@ int do_proc_net_ip_vs_stats(int update_every, usec_t dt) {
 
     if(!ff) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/ip_vs_stats");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/ip_vs_stats");
         ff = procfile_open(config_get("plugin:proc:/proc/net/ip_vs_stats", "filename to monitor", filename), " \t,:|", PROCFILE_FLAG_DEFAULT);
     }
     if(!ff) return 1;
index 37b7add1b8fdb3930534dd59eec75de9b038c9ac..2235e79b0251bb3408b84c4c62b9fff1c9e53f9d 100644 (file)
@@ -195,7 +195,7 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/netstat");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/netstat");
         ff = procfile_open(config_get("plugin:proc:/proc/net/netstat", "filename to monitor", filename), " \t:", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index 9dba08d561877c3972bc4f9a9f6ea03c6579049b..e7f6bb6ea727ca41508e8831bb4dcbd8ba56f427 100644 (file)
@@ -136,7 +136,7 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
 
     if(!ff) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/rpc/nfs");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/rpc/nfs");
         ff = procfile_open(config_get("plugin:proc:/proc/net/rpc/nfs", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
     }
     if(!ff) return 1;
index e857ad6a4066506ce15eb78483f29b08ce00e2dd..969910f32c85b9ed46eebc0cd851fda546b3b7ea 100644 (file)
@@ -217,7 +217,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
 
     if(!ff) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/rpc/nfsd");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/rpc/nfsd");
         ff = procfile_open(config_get("plugin:proc:/proc/net/rpc/nfsd", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
     }
     if(!ff) return 1;
index cd5c250aee3b1abc824daf2f77b857894741b945..7707d3b789a76903a4a859dc5815b069c80e430e 100644 (file)
@@ -355,7 +355,7 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/snmp");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/snmp");
         ff = procfile_open(config_get("plugin:proc:/proc/net/snmp", "filename to monitor", filename), " \t:", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index 51d7121a19e20f2bafda95bdb87bd9fd0de20dee..278592153d968e49c6b95f9acc8c8a56adbf32f9 100644 (file)
@@ -246,7 +246,7 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/snmp6");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/snmp6");
         ff = procfile_open(config_get("plugin:proc:/proc/net/snmp6", "filename to monitor", filename), " \t:", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff))
             return 1;
index 2f4eb3e66a0322acfb6354686330cef051dd14c4..ed6d8db7ac357be945b0acd729626f0ac2073dbf 100644 (file)
@@ -24,7 +24,7 @@ int do_proc_net_softnet_stat(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/softnet_stat");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/softnet_stat");
         ff = procfile_open(config_get("plugin:proc:/proc/net/softnet_stat", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index b9c724983833bf45093372db1e0914a7d71e0adb..7a90683bb9bd800603448ab12f54f57dab12e2e7 100644 (file)
@@ -16,10 +16,10 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
 
     if(unlikely(do_sockets == -1)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/stat/nf_conntrack");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/stat/nf_conntrack");
         nf_conntrack_filename = config_get("plugin:proc:/proc/net/stat/nf_conntrack", "filename to monitor", filename);
 
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/sys/net/netfilter/nf_conntrack_max");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/sys/net/netfilter/nf_conntrack_max");
         nf_conntrack_max_filename = config_get("plugin:proc:/proc/sys/net/netfilter/nf_conntrack_max", "filename to monitor", filename);
         usec_since_last_max = get_max_every = config_get_number("plugin:proc:/proc/sys/net/netfilter/nf_conntrack_max", "read every seconds", 10) * USEC_PER_SEC;
 
@@ -35,7 +35,7 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
 
         do_sockets = 1;
         if(!read_full) {
-            snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/sys/net/netfilter/nf_conntrack_count");
+            snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/sys/net/netfilter/nf_conntrack_count");
             nf_conntrack_count_filename = config_get("plugin:proc:/proc/sys/net/netfilter/nf_conntrack_count", "filename to monitor", filename);
 
             if(read_single_number_file(nf_conntrack_count_filename, &aentries))
index 6bb0a3c69d61fe8caf62bed23c7313bb95fd6a0e..688e8c7cea1d80416f5f1e44e47e17befca86c1d 100644 (file)
@@ -18,7 +18,7 @@ int do_proc_net_stat_synproxy(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/stat/synproxy");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/stat/synproxy");
         ff = procfile_open(config_get("plugin:proc:/proc/net/stat/synproxy", "filename to monitor", filename), " \t,:|", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff))
             return 1;
index d07f22510aab7a95e8ceb7633f5791db879c3201..780c2af7af60b6e52932387667cb7dab4ac5e128 100644 (file)
@@ -175,10 +175,10 @@ static inline int is_read_only(const char *s) {
 // read the whole mountinfo into a linked list
 struct mountinfo *mountinfo_read(int do_statvfs) {
     char filename[FILENAME_MAX + 1];
-    snprintfz(filename, FILENAME_MAX, "%s/proc/self/mountinfo", global_host_prefix);
+    snprintfz(filename, FILENAME_MAX, "%s/proc/self/mountinfo", netdata_configured_host_prefix);
     procfile *ff = procfile_open(filename, " \t", PROCFILE_FLAG_DEFAULT);
     if(unlikely(!ff)) {
-        snprintfz(filename, FILENAME_MAX, "%s/proc/1/mountinfo", global_host_prefix);
+        snprintfz(filename, FILENAME_MAX, "%s/proc/1/mountinfo", netdata_configured_host_prefix);
         ff = procfile_open(filename, " \t", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return NULL;
     }
index c7b10d70df85d062f2d9f2b08ba320ce7bc9f55b..9eb72cd376d5ca2f49dcd8224b08cf5fd99165f4 100644 (file)
@@ -58,7 +58,7 @@ int do_proc_softirqs(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/softirqs");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/softirqs");
         ff = procfile_open(config_get("plugin:proc:/proc/softirqs", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index f7e6d5bc007184074133d4768f2785f303a683fd..d52de1b26ebafcf2a33e726fcc33ec73b1726afb 100644 (file)
@@ -24,7 +24,7 @@ int do_proc_stat(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/stat");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/stat");
         ff = procfile_open(config_get("plugin:proc:/proc/stat", "filename to monitor", filename), " \t:", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index 388406e0b0ff69874152260997dcb5b27ab54b2f..25dbca839025ed55205aea33208b5fb50dfdbc18 100644 (file)
@@ -7,7 +7,7 @@ int do_proc_sys_kernel_random_entropy_avail(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/sys/kernel/random/entropy_avail");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/sys/kernel/random/entropy_avail");
         ff = procfile_open(config_get("plugin:proc:/proc/sys/kernel/random/entropy_avail", "filename to monitor", filename), "", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index 9f341a33f59f31916fdd39c97806a9a7c420568f..8dd10b1f0bfe14a57acc5b2841a4c8e264288228 100644 (file)
@@ -13,7 +13,7 @@ int do_proc_uptime(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/uptime");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/uptime");
 
         ff = procfile_open(config_get("plugin:proc:/proc/uptime", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff))
index ea917b989197be09319fcb439711073f71680602..748fa3486da5fb7751cc800ea1ff7ec549929798 100644 (file)
@@ -62,7 +62,7 @@ int do_proc_vmstat(int update_every, usec_t dt) {
 
     if(unlikely(!ff)) {
         char filename[FILENAME_MAX + 1];
-        snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/vmstat");
+        snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/vmstat");
         ff = procfile_open(config_get("plugin:proc:/proc/vmstat", "filename to monitor", filename), " \t:", PROCFILE_FLAG_DEFAULT);
         if(unlikely(!ff)) return 1;
     }
index fb61acd0808e673c646afba3d8abf6183a405d1d..a846f861174ba2059365357517b1f4ba7d1c949f 100644 (file)
@@ -7,7 +7,8 @@ int registry_init(void) {
     registry.enabled = config_get_boolean("registry", "enabled", 0);
 
     // pathnames
-    registry.pathname = config_get("registry", "registry db directory", VARLIB_DIR "/registry");
+    snprintfz(filename, FILENAME_MAX, "%s/registry", netdata_configured_varlib_dir);
+    registry.pathname = config_get("registry", "registry db directory", filename);
     if(mkdir(registry.pathname, 0770) == -1 && errno != EEXIST)
         fatal("Cannot create directory '%s'.", registry.pathname);
 
index a6c5cbb6a3c4d54dfba9e8ea03bc2331548f4115..a17704394165246919c0c7b4783198a5b7487256 100644 (file)
--- a/src/rrd.c
+++ b/src/rrd.c
@@ -392,19 +392,11 @@ char *rrdset_cache_dir(const char *id)
 {
     char *ret = NULL;
 
-    static char *cache_dir = NULL;
-    if(!cache_dir) {
-        cache_dir = config_get("global", "cache directory", CACHE_DIR);
-        int r = mkdir(cache_dir, 0755);
-        if(r != 0 && errno != EEXIST)
-            error("Cannot create directory '%s'", cache_dir);
-    }
-
     char b[FILENAME_MAX + 1];
     char n[FILENAME_MAX + 1];
     rrdset_strncpyz_name(b, id, FILENAME_MAX);
 
-    snprintfz(n, FILENAME_MAX, "%s/%s", cache_dir, b);
+    snprintfz(n, FILENAME_MAX, "%s/%s", netdata_configured_cache_dir, b);
     ret = config_get(id, "cache directory", n);
 
     if(rrd_memory_mode == RRD_MEMORY_MODE_MAP || rrd_memory_mode == RRD_MEMORY_MODE_SAVE) {
index c764615f1e46738e63302a92f6aa806ffe66b4e9..260f5121fb727160a9b4b3f722764b0b35566993 100644 (file)
@@ -23,7 +23,7 @@ static struct mc *mc_root = NULL;
 
 static void find_all_mc() {
     char name[FILENAME_MAX + 1];
-    snprintfz(name, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/devices/system/edac/mc");
+    snprintfz(name, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/devices/system/edac/mc");
     char *dirname = config_get("plugin:proc:/sys/devices/system/edac/mc", "directory to monitor", name);
 
     DIR *dir = opendir(dirname);
index 18c3fcd3a2845635aed8a4a4c8728dc14721e528..eb0318295de9b97ffa852a85758a68ffb46baa0d 100644 (file)
@@ -12,7 +12,7 @@ static struct node *numa_root = NULL;
 static int find_all_nodes() {
     int numa_node_count = 0;
     char name[FILENAME_MAX + 1];
-    snprintfz(name, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/devices/system/node");
+    snprintfz(name, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/devices/system/node");
     char *dirname = config_get("plugin:proc:/sys/devices/system/node", "directory to monitor", name);
 
     DIR *dir = opendir(dirname);
index faeb7c930c6d8189af7483196a659f07cdb48a1a..8b92646b7442e54708c56c3c32f5a05c8769c361 100644 (file)
@@ -49,7 +49,7 @@ static SIMPLE_PATTERN *enabled_cgroup_paths = NULL;
 static SIMPLE_PATTERN *enabled_cgroup_renames = NULL;
 static SIMPLE_PATTERN *systemd_services_cgroups = NULL;
 
-static char *cgroups_rename_script = PLUGINS_DIR "/cgroup-name.sh";
+static char *cgroups_rename_script = NULL;
 
 static uint32_t Read_hash = 0;
 static uint32_t Write_hash = 0;
@@ -105,7 +105,7 @@ void read_cgroup_plugin_configuration() {
         s = "/sys/fs/cgroup/cpuacct";
     }
     else s = mi->mount_point;
-    snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, s);
+    snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, s);
     cgroup_cpuacct_base = config_get("plugin:cgroups", "path to /sys/fs/cgroup/cpuacct", filename);
 
     mi = mountinfo_find_by_filesystem_super_option(root, "cgroup", "blkio");
@@ -115,7 +115,7 @@ void read_cgroup_plugin_configuration() {
         s = "/sys/fs/cgroup/blkio";
     }
     else s = mi->mount_point;
-    snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, s);
+    snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, s);
     cgroup_blkio_base = config_get("plugin:cgroups", "path to /sys/fs/cgroup/blkio", filename);
 
     mi = mountinfo_find_by_filesystem_super_option(root, "cgroup", "memory");
@@ -125,7 +125,7 @@ void read_cgroup_plugin_configuration() {
         s = "/sys/fs/cgroup/memory";
     }
     else s = mi->mount_point;
-    snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, s);
+    snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, s);
     cgroup_memory_base = config_get("plugin:cgroups", "path to /sys/fs/cgroup/memory", filename);
 
     mi = mountinfo_find_by_filesystem_super_option(root, "cgroup", "devices");
@@ -135,7 +135,7 @@ void read_cgroup_plugin_configuration() {
         s = "/sys/fs/cgroup/devices";
     }
     else s = mi->mount_point;
-    snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, s);
+    snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, s);
     cgroup_devices_base = config_get("plugin:cgroups", "path to /sys/fs/cgroup/devices", filename);
 
     cgroup_root_max = (int)config_get_number("plugin:cgroups", "max cgroups to allow", cgroup_root_max);
@@ -177,7 +177,8 @@ void read_cgroup_plugin_configuration() {
                     " * "
             ), SIMPLE_PATTERN_EXACT);
 
-    cgroups_rename_script = config_get("plugin:cgroups", "script to get cgroup names", cgroups_rename_script);
+    snprintfz(filename, FILENAME_MAX, "%s/cgroup-name.sh", netdata_configured_plugins_dir);
+    cgroups_rename_script = config_get("plugin:cgroups", "script to get cgroup names", filename);
 
     enabled_cgroup_renames = simple_pattern_create(
             config_get("plugin:cgroups", "run script to rename cgroups matching",
index 391aa4fd52a5012c19e2a0a720c6551f20079620..4998b0108321e456c8159888359894be4f53891a 100644 (file)
@@ -28,31 +28,31 @@ int do_sys_kernel_mm_ksm(int update_every, usec_t dt) {
         page_size = sysconf(_SC_PAGESIZE);
 
     if(!ff_pages_shared) {
-        snprintfz(values[PAGES_SHARED].filename, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/kernel/mm/ksm/pages_shared");
+        snprintfz(values[PAGES_SHARED].filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/kernel/mm/ksm/pages_shared");
         snprintfz(values[PAGES_SHARED].filename, FILENAME_MAX, "%s", config_get("plugin:proc:/sys/kernel/mm/ksm", "/sys/kernel/mm/ksm/pages_shared", values[PAGES_SHARED].filename));
         ff_pages_shared = procfile_open(values[PAGES_SHARED].filename, " \t:", PROCFILE_FLAG_DEFAULT);
     }
 
     if(!ff_pages_sharing) {
-        snprintfz(values[PAGES_SHARING].filename, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/kernel/mm/ksm/pages_sharing");
+        snprintfz(values[PAGES_SHARING].filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/kernel/mm/ksm/pages_sharing");
         snprintfz(values[PAGES_SHARING].filename, FILENAME_MAX, "%s", config_get("plugin:proc:/sys/kernel/mm/ksm", "/sys/kernel/mm/ksm/pages_sharing", values[PAGES_SHARING].filename));
         ff_pages_sharing = procfile_open(values[PAGES_SHARING].filename, " \t:", PROCFILE_FLAG_DEFAULT);
     }
 
     if(!ff_pages_unshared) {
-        snprintfz(values[PAGES_UNSHARED].filename, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/kernel/mm/ksm/pages_unshared");
+        snprintfz(values[PAGES_UNSHARED].filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/kernel/mm/ksm/pages_unshared");
         snprintfz(values[PAGES_UNSHARED].filename, FILENAME_MAX, "%s", config_get("plugin:proc:/sys/kernel/mm/ksm", "/sys/kernel/mm/ksm/pages_unshared", values[PAGES_UNSHARED].filename));
         ff_pages_unshared = procfile_open(values[PAGES_UNSHARED].filename, " \t:", PROCFILE_FLAG_DEFAULT);
     }
 
     if(!ff_pages_volatile) {
-        snprintfz(values[PAGES_VOLATILE].filename, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/kernel/mm/ksm/pages_volatile");
+        snprintfz(values[PAGES_VOLATILE].filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/kernel/mm/ksm/pages_volatile");
         snprintfz(values[PAGES_VOLATILE].filename, FILENAME_MAX, "%s", config_get("plugin:proc:/sys/kernel/mm/ksm", "/sys/kernel/mm/ksm/pages_volatile", values[PAGES_VOLATILE].filename));
         ff_pages_volatile = procfile_open(values[PAGES_VOLATILE].filename, " \t:", PROCFILE_FLAG_DEFAULT);
     }
 
     if(!ff_pages_to_scan) {
-        snprintfz(values[PAGES_TO_SCAN].filename, FILENAME_MAX, "%s%s", global_host_prefix, "/sys/kernel/mm/ksm/pages_to_scan");
+        snprintfz(values[PAGES_TO_SCAN].filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/sys/kernel/mm/ksm/pages_to_scan");
         snprintfz(values[PAGES_TO_SCAN].filename, FILENAME_MAX, "%s", config_get("plugin:proc:/sys/kernel/mm/ksm", "/sys/kernel/mm/ksm/pages_to_scan", values[PAGES_TO_SCAN].filename));
         ff_pages_to_scan = procfile_open(values[PAGES_TO_SCAN].filename, " \t:", PROCFILE_FLAG_DEFAULT);
     }
index 5acb44d5b0537e150e821981601bc71ea0c7c5ae..ed90dcf6d3ca5edd152618b3993b7ee768a0f9ee 100644 (file)
@@ -290,12 +290,7 @@ gid_t web_files_gid(void) {
 
 int mysendfile(struct web_client *w, char *filename)
 {
-    static char *web_dir = NULL;
-
-    // initialize our static data
-    if(unlikely(!web_dir)) web_dir = config_get("global", "web files directory", WEB_DIR);
-
-    debug(D_WEB_CLIENT, "%llu: Looking for file '%s/%s'", w->id, web_dir, filename);
+    debug(D_WEB_CLIENT, "%llu: Looking for file '%s/%s'", w->id, netdata_configured_web_dir, filename);
 
     // skip leading slashes
     while (*filename == '/') filename++;
@@ -324,7 +319,7 @@ int mysendfile(struct web_client *w, char *filename)
 
     // access the file
     char webfilename[FILENAME_MAX + 1];
-    snprintfz(webfilename, FILENAME_MAX, "%s/%s", web_dir, filename);
+    snprintfz(webfilename, FILENAME_MAX, "%s/%s", netdata_configured_web_dir, filename);
 
     // check if the file exists
     struct stat stat;