From: Costa Tsaousis Date: Sat, 21 Jan 2017 16:30:07 +0000 (+0200) Subject: Merge pull request #1590 from l2isbad/elasticsearch_plugin X-Git-Tag: v1.5.0~8 X-Git-Url: https://arthur.barton.de/gitweb/?a=commitdiff_plain;h=8b09b30e0321de42660bd96784841714330c68a9;hp=f8a0d2faa3ffd4552e8e24632b6d0c1531891c1c;p=netdata.git Merge pull request #1590 from l2isbad/elasticsearch_plugin elasticsearch plugin --- diff --git a/netdata-installer.sh b/netdata-installer.sh index ff8def57..87431543 100755 --- a/netdata-installer.sh +++ b/netdata-installer.sh @@ -693,6 +693,7 @@ run find ./system/ -type f -a \! -name \*.in -a \! -name Makefile\* -a \! -name NETDATA_ADDED_TO_DOCKER=0 NETDATA_ADDED_TO_NGINX=0 NETDATA_ADDED_TO_VARNISH=0 +NETDATA_ADDED_TO_HAPROXY=0 if [ ${UID} -eq 0 ] then portable_add_group netdata @@ -700,6 +701,7 @@ if [ ${UID} -eq 0 ] portable_add_user_to_group docker netdata && NETDATA_ADDED_TO_DOCKER=1 portable_add_user_to_group nginx netdata && NETDATA_ADDED_TO_NGINX=1 portable_add_user_to_group varnish netdata && NETDATA_ADDED_TO_VARNISH=1 + portable_add_user_to_group haproxy netdata && NETDATA_ADDED_TO_HAPROXY=1 if [ -d /etc/logrotate.d -a ! -f /etc/logrotate.d/netdata ] then @@ -1354,6 +1356,16 @@ if [ $? -eq 0 -a "${NETDATA_ADDED_TO_VARNISH}" = "1" ] echo " gpasswd -d netdata varnish" fi +getent group haproxy > /dev/null +if [ $? -eq 0 -a "${NETDATA_ADDED_TO_HAPROXY}" = "1" ] + then + echo + echo "You may also want to remove the netdata user from the haproxy group" + echo "by running:" + echo " gpasswd -d netdata haproxy" +fi + + UNINSTALL chmod 750 netdata-uninstaller.sh diff --git a/python.d/freeradius.chart.py b/python.d/freeradius.chart.py index 335127fd..2ac280f0 100644 --- a/python.d/freeradius.chart.py +++ b/python.d/freeradius.chart.py @@ -101,8 +101,8 @@ class Service(SimpleService): :return: str """ try: - process_echo = Popen(self.sub_echo, stdout=PIPE, shell=False) - process_rad = Popen(self.sub_radclient, stdin=process_echo.stdout, stdout=PIPE, shell=False) + process_echo = Popen(self.sub_echo, stdout=PIPE, stderr=PIPE, shell=False) + process_rad = Popen(self.sub_radclient, stdin=process_echo.stdout, stdout=PIPE, stderr=PIPE, shell=False) process_echo.stdout.close() raw_result = process_rad.communicate()[0] except Exception: diff --git a/python.d/varnish.chart.py b/python.d/varnish.chart.py index 6cf81597..9b37c93d 100644 --- a/python.d/varnish.chart.py +++ b/python.d/varnish.chart.py @@ -60,9 +60,11 @@ CHARTS = {'backend_health': ['s0.g_bytes', 'allocated', 'absolute', -1, 1048576]], 'options': [None, 'Memory usage', 'megabytes', 'Memory usage', 'varnish.memory_usage', 'stacked']}, 'session': - {'lines': [['sess_conn', 'conn', 'incremental', 1, 1], - ['client_req', 'requests', 'incremental', 1, 1], - ['sess_dropped', 'dropped', 'incremental', 1, 1]], + {'lines': [['sess_conn', 'sess_conn', 'incremental', 1, 1], + ['client_req', 'client_requests', 'incremental', 1, 1], + ['client_conn', 'client_conn', 'incremental', 1, 1], + ['client_drop', 'client_drop', 'incremental', 1, 1], + ['sess_dropped', 'sess_dropped', 'incremental', 1, 1]], 'options': [None, 'Sessions', 'units', 'Client metrics', 'varnish.session', 'line']}, 'threads': {'lines': [['threads', None, 'absolute', 1, 1], @@ -88,7 +90,7 @@ class Service(SimpleService): if is_executable(''.join([directory, 'varnishstat']), X_OK)][0] except IndexError: self.varnish = False - self.rgx_all = compile(r'([A-Z]+\.)([\d\w_.]+)\s+(\d+)') + self.rgx_all = compile(r'([A-Z]+\.)?([\d\w_.]+)\s+(\d+)') # Could be # VBE.boot.super_backend.pipe_hdrbyte (new) # or @@ -114,7 +116,7 @@ class Service(SimpleService): # 2. Output is parsable (list is not empty after regex findall) is_parsable = self.rgx_all.findall(reply) if not is_parsable: - self.error('Cant parse output (only varnish version 4+ supported)') + self.error('Cant parse output...') return False # We need to find the right regex for backend parse @@ -187,7 +189,8 @@ class Service(SimpleService): # 3.3 Problems summary chart for elem in ['backend_busy', 'backend_unhealthy', 'esi_errors', 'esi_warnings', 'losthdr', 'sess_drop', 'sess_fail', 'sess_pipe_overflow', 'threads_destroyed', 'threads_failed', 'threads_limited', 'thread_queue_len']: - to_netdata[''.join([elem, '_b'])] = to_netdata.get(elem, 0) + if to_netdata.get(elem) is not None: + to_netdata[''.join([elem, '_b'])] = to_netdata.get(elem) # Ready steady go! return to_netdata @@ -207,7 +210,8 @@ class Service(SimpleService): #self.order.extend(extra_charts) # Create static charts - self.definitions = {chart: values for chart, values in CHARTS.items() if chart in self.order} + #self.definitions = {chart: values for chart, values in CHARTS.items() if chart in self.order} + self.definitions = CHARTS # Create dynamic backend charts if self.backend_list: diff --git a/src/freebsd_sysctl.c b/src/freebsd_sysctl.c index 7edaf4f0..9400089d 100644 --- a/src/freebsd_sysctl.c +++ b/src/freebsd_sysctl.c @@ -163,6 +163,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { int numdevs; static void *devstat_data = NULL; struct devstat *dstat; + char disk[DEVSTAT_NAME_LEN + 10 + 1]; // 10 - maximum number of digits for int struct cur_dstat { collected_number duration_read_ms; collected_number duration_write_ms; @@ -609,34 +610,35 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { error("DISABLED: disk.io"); } else { dstat = devstat_data + sizeof(long); // skip generation number - collected_number total_disk_reads = 0; - collected_number total_disk_writes = 0; + collected_number total_disk_kbytes_read = 0; + collected_number total_disk_kbytes_write = 0; for (i = 0; i < numdevs; i++) { if (((dstat[i].device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_DIRECT) || ((dstat[i].device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_STORARRAY)) { + sprintf(disk, "%s%d", dstat[i].device_name, dstat[i].unit_number); // -------------------------------------------------------------------- - st = rrdset_find_bytype(RRD_TYPE_DISK, dstat[i].device_name); + st = rrdset_find_bytype(RRD_TYPE_DISK, disk); if (unlikely(!st)) { - st = rrdset_create(RRD_TYPE_DISK, dstat[i].device_name, NULL, dstat[i].device_name, "disk.io", "Disk I/O Bandwidth", "kilobytes/s", 2000, update_every, RRDSET_TYPE_AREA); + st = rrdset_create(RRD_TYPE_DISK, disk, NULL, disk, "disk.io", "Disk I/O Bandwidth", "kilobytes/s", 2000, update_every, RRDSET_TYPE_AREA); rrddim_add(st, "reads", NULL, 1, 1024, RRDDIM_INCREMENTAL); rrddim_add(st, "writes", NULL, -1, 1024, RRDDIM_INCREMENTAL); } else rrdset_next(st); - total_disk_reads += dstat[i].bytes[DEVSTAT_READ]; - total_disk_writes += dstat[i].bytes[DEVSTAT_WRITE]; + total_disk_kbytes_read += dstat[i].bytes[DEVSTAT_READ]/KILO_FACTOR; + total_disk_kbytes_write += dstat[i].bytes[DEVSTAT_WRITE]/KILO_FACTOR; prev_dstat.bytes_read = rrddim_set(st, "reads", dstat[i].bytes[DEVSTAT_READ]); prev_dstat.bytes_write = rrddim_set(st, "writes", dstat[i].bytes[DEVSTAT_WRITE]); rrdset_done(st); // -------------------------------------------------------------------- - st = rrdset_find_bytype("disk_ops", dstat[i].device_name); + st = rrdset_find_bytype("disk_ops", disk); if (unlikely(!st)) { - st = rrdset_create("disk_ops", dstat[i].device_name, NULL, dstat[i].device_name, "disk.ops", "Disk Completed I/O Operations", "operations/s", 2001, update_every, RRDSET_TYPE_LINE); + st = rrdset_create("disk_ops", disk, NULL, disk, "disk.ops", "Disk Completed I/O Operations", "operations/s", 2001, update_every, RRDSET_TYPE_LINE); st->isdetail = 1; rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_INCREMENTAL); @@ -650,9 +652,9 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - st = rrdset_find_bytype("disk_qops", dstat[i].device_name); + st = rrdset_find_bytype("disk_qops", disk); if (unlikely(!st)) { - st = rrdset_create("disk_qops", dstat[i].device_name, NULL, dstat[i].device_name, "disk.qops", "Disk Current I/O Operations", "operations", 2002, update_every, RRDSET_TYPE_LINE); + st = rrdset_create("disk_qops", disk, NULL, disk, "disk.qops", "Disk Current I/O Operations", "operations", 2002, update_every, RRDSET_TYPE_LINE); st->isdetail = 1; rrddim_add(st, "operations", NULL, 1, 1, RRDDIM_ABSOLUTE); @@ -664,9 +666,9 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - st = rrdset_find_bytype("disk_util", dstat[i].device_name); + st = rrdset_find_bytype("disk_util", disk); if (unlikely(!st)) { - st = rrdset_create("disk_util", dstat[i].device_name, NULL, dstat[i].device_name, "disk.util", "Disk Utilization Time", "% of time working", 2004, update_every, RRDSET_TYPE_AREA); + st = rrdset_create("disk_util", disk, NULL, disk, "disk.util", "Disk Utilization Time", "% of time working", 2004, update_every, RRDSET_TYPE_AREA); st->isdetail = 1; rrddim_add(st, "utilization", NULL, 1, 10, RRDDIM_INCREMENTAL); @@ -679,9 +681,9 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - st = rrdset_find_bytype("disk_iotime", dstat[i].device_name); + st = rrdset_find_bytype("disk_iotime", disk); if (unlikely(!st)) { - st = rrdset_create("disk_iotime", dstat[i].device_name, NULL, dstat[i].device_name, "disk.iotime", "Disk Total I/O Time", "milliseconds/s", 2022, update_every, RRDSET_TYPE_LINE); + st = rrdset_create("disk_iotime", disk, NULL, disk, "disk.iotime", "Disk Total I/O Time", "milliseconds/s", 2022, update_every, RRDSET_TYPE_LINE); st->isdetail = 1; rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_INCREMENTAL); @@ -703,9 +705,9 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - st = rrdset_find_bytype("disk_await", dstat[i].device_name); + st = rrdset_find_bytype("disk_await", disk); if (unlikely(!st)) { - st = rrdset_create("disk_await", dstat[i].device_name, NULL, dstat[i].device_name, "disk.await", "Average Completed I/O Operation Time", "ms per operation", 2005, update_every, RRDSET_TYPE_LINE); + st = rrdset_create("disk_await", disk, NULL, disk, "disk.await", "Average Completed I/O Operation Time", "ms per operation", 2005, update_every, RRDSET_TYPE_LINE); st->isdetail = 1; rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_ABSOLUTE); @@ -721,9 +723,9 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - st = rrdset_find_bytype("disk_avgsz", dstat[i].device_name); + st = rrdset_find_bytype("disk_avgsz", disk); if (unlikely(!st)) { - st = rrdset_create("disk_avgsz", dstat[i].device_name, NULL, dstat[i].device_name, "disk.avgsz", "Average Completed I/O Operation Bandwidth", "kilobytes per operation", 2006, update_every, RRDSET_TYPE_AREA); + st = rrdset_create("disk_avgsz", disk, NULL, disk, "disk.avgsz", "Average Completed I/O Operation Bandwidth", "kilobytes per operation", 2006, update_every, RRDSET_TYPE_AREA); st->isdetail = 1; rrddim_add(st, "reads", NULL, 1, 1024, RRDDIM_ABSOLUTE); @@ -739,9 +741,9 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - st = rrdset_find_bytype("disk_svctm", dstat[i].device_name); + st = rrdset_find_bytype("disk_svctm", disk); if (unlikely(!st)) { - st = rrdset_create("disk_svctm", dstat[i].device_name, NULL, dstat[i].device_name, "disk.svctm", "Average Service Time", "ms per operation", 2007, update_every, RRDSET_TYPE_LINE); + st = rrdset_create("disk_svctm", disk, NULL, disk, "disk.svctm", "Average Service Time", "ms per operation", 2007, update_every, RRDSET_TYPE_LINE); st->isdetail = 1; rrddim_add(st, "svctm", NULL, 1, 1, RRDDIM_ABSOLUTE); @@ -753,21 +755,21 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { rrdset_done(st); } } + } - // -------------------------------------------------------------------- - - st = rrdset_find_bytype("system", "io"); - if (unlikely(!st)) { - st = rrdset_create("system", "io", NULL, "disk", NULL, "Disk I/O", "kilobytes/s", 150, update_every, RRDSET_TYPE_AREA); - rrddim_add(st, "in", NULL, 1, 1024, RRDDIM_INCREMENTAL); - rrddim_add(st, "out", NULL, -1, 1024, RRDDIM_INCREMENTAL); - } - else rrdset_next(st); + // -------------------------------------------------------------------- - rrddim_set(st, "in", total_disk_reads); - rrddim_set(st, "out", total_disk_writes); - rrdset_done(st); + st = rrdset_find_bytype("system", "io"); + if (unlikely(!st)) { + st = rrdset_create("system", "io", NULL, "disk", NULL, "Disk I/O", "kilobytes/s", 150, update_every, RRDSET_TYPE_AREA); + rrddim_add(st, "in", NULL, 1, 1, RRDDIM_INCREMENTAL); + rrddim_add(st, "out", NULL, -1, 1, RRDDIM_INCREMENTAL); } + else rrdset_next(st); + + rrddim_set(st, "in", total_disk_kbytes_read); + rrddim_set(st, "out", total_disk_kbytes_write); + rrdset_done(st); } } }