diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-02-07 11:49:00 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-02-07 12:42:05 +0000 |
commit | 2e85f9325a797977eea9dfea0a925775ddd211d9 (patch) | |
tree | 452c7f30d62fca5755f659b99e4e53c7b03afc21 /collectors/charts.d.plugin/ap | |
parent | Releasing debian version 1.19.0-4. (diff) | |
download | netdata-2e85f9325a797977eea9dfea0a925775ddd211d9.tar.xz netdata-2e85f9325a797977eea9dfea0a925775ddd211d9.zip |
Merging upstream version 1.29.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | collectors/charts.d.plugin/ap/README.md | 19 | ||||
-rw-r--r-- | collectors/charts.d.plugin/ap/ap.chart.sh | 60 | ||||
-rw-r--r-- | collectors/charts.d.plugin/apache/README.md | 129 | ||||
-rw-r--r-- | collectors/charts.d.plugin/apache/apache.chart.sh | 251 | ||||
-rw-r--r-- | collectors/charts.d.plugin/apache/apache.conf | 30 | ||||
-rw-r--r-- | collectors/charts.d.plugin/apcupsd/README.md | 20 | ||||
-rw-r--r-- | collectors/charts.d.plugin/apcupsd/apcupsd.chart.sh | 136 | ||||
-rw-r--r-- | collectors/python.d.plugin/alarms/Makefile.inc (renamed from collectors/charts.d.plugin/apache/Makefile.inc) | 6 |
8 files changed, 138 insertions, 513 deletions
diff --git a/collectors/charts.d.plugin/ap/README.md b/collectors/charts.d.plugin/ap/README.md index befe21eec..35a00d65d 100644 --- a/collectors/charts.d.plugin/ap/README.md +++ b/collectors/charts.d.plugin/ap/README.md @@ -1,4 +1,10 @@ -# Access Point Plugin (ap) +<!-- +title: "Access point monitoring with Netdata" +custom_edit_url: https://github.com/netdata/netdata/edit/master/collectors/charts.d.plugin/ap/README.md +sidebar_label: "Access points" +--> + +# Access point monitoring with Netdata The `ap` collector visualizes data related to access points. @@ -76,8 +82,15 @@ Station 40:b8:37:5a:ed:5e (on wlan0) ## Configuration -You can only set `ap_update_every=NUMBER` to `/etc/netdata/charts.d/ap.conf`, to give the data collection frequency. -To edit this file on your system run `/etc/netdata/edit-config charts.d/ap.conf`. +Edit the `charts.d/ap.conf` configuration file using `edit-config` from the Netdata [config +directory](/docs/configure/nodes.md), which is typically at `/etc/netdata`. + +```bash +cd /etc/netdata # Replace this path with your Netdata config directory, if different +sudo ./edit-config charts.d/ap.conf +``` + +You can only set `ap_update_every=NUMBER` to change the data collection frequency. ## Auto-detection diff --git a/collectors/charts.d.plugin/ap/ap.chart.sh b/collectors/charts.d.plugin/ap/ap.chart.sh index a2d04c0a7..5dd787835 100644 --- a/collectors/charts.d.plugin/ap/ap.chart.sh +++ b/collectors/charts.d.plugin/ap/ap.chart.sh @@ -16,9 +16,9 @@ declare -A ap_devs=() # _check is called once, to find out if this chart should be enabled or not ap_check() { - require_cmd iw || return 1 - local ev - ev=$(run iw dev | awk ' + require_cmd iw || return 1 + local ev + ev=$(run iw dev | awk ' BEGIN { i = ""; ssid = ""; @@ -41,26 +41,26 @@ ap_check() { } } ') - eval "${ev}" + eval "${ev}" - # this should return: - # - 0 to enable the chart - # - 1 to disable the chart + # this should return: + # - 0 to enable the chart + # - 1 to disable the chart - [ ${#ap_devs[@]} -gt 0 ] && return 0 - error "no devices found in AP mode, with 'iw dev'" - return 1 + [ ${#ap_devs[@]} -gt 0 ] && return 0 + error "no devices found in AP mode, with 'iw dev'" + return 1 } # _create is called once, to create the charts ap_create() { - local ssid dev + local ssid dev - for dev in "${!ap_devs[@]}"; do - ssid="${ap_devs[${dev}]}" + for dev in "${!ap_devs[@]}"; do + ssid="${ap_devs[${dev}]}" - # create the chart with 3 dimensions - cat <<EOF + # create the chart with 3 dimensions + cat << EOF CHART ap_clients.${dev} '' "Connected clients to ${ssid} on ${dev}" "clients" ${dev} ap.clients line $((ap_priority + 1)) $ap_update_every DIMENSION clients '' absolute 1 1 @@ -84,25 +84,25 @@ DIMENSION receive '' absolute 1 1000 DIMENSION transmit '' absolute -1 1000 DIMENSION expected 'expected throughput' absolute 1 1000 EOF - done + done - return 0 + return 0 } # _update is called continuously, to collect the values ap_update() { - # the first argument to this function is the microseconds since last update - # pass this parameter to the BEGIN statement (see bellow). - - # do all the work to collect / calculate the values - # for each dimension - # remember: KEEP IT SIMPLE AND SHORT - - for dev in "${!ap_devs[@]}"; do - echo - echo "DEVICE ${dev}" - iw "${dev}" station dump - done | awk ' + # the first argument to this function is the microseconds since last update + # pass this parameter to the BEGIN statement (see bellow). + + # do all the work to collect / calculate the values + # for each dimension + # remember: KEEP IT SIMPLE AND SHORT + + for dev in "${!ap_devs[@]}"; do + echo + echo "DEVICE ${dev}" + iw "${dev}" station dump + done | awk ' function zero_data() { dev = ""; c = 0; @@ -175,5 +175,5 @@ ap_update() { } ' - return 0 + return 0 } diff --git a/collectors/charts.d.plugin/apache/README.md b/collectors/charts.d.plugin/apache/README.md deleted file mode 100644 index 53f02a5b8..000000000 --- a/collectors/charts.d.plugin/apache/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# Apache - -> THIS MODULE IS OBSOLETE. -> USE [THE PYTHON ONE](../../python.d.plugin/apache) - IT SUPPORTS MULTIPLE JOBS AND IT IS MORE EFFICIENT - ---- - -The `apache` collector visualizes key performance data for an apache web server. - -## Example Netdata charts - -For apache 2.2: - -![image](https://cloud.githubusercontent.com/assets/2662304/12530273/421c4d14-c1e2-11e5-9fb6-ca6d6dd3b1dd.png) - -For apache 2.4: - -![image](https://cloud.githubusercontent.com/assets/2662304/12530376/29ec26de-c1e6-11e5-9af1-e48aaf781795.png) - -## How it works - -It runs `curl "http://apache.host/server-status?auto` to fetch the current status of apache. - -It has been tested with apache 2.2 and apache 2.4. The latter also provides connections information (total and break down by status). - -Apache 2.2 response: - -```sh -curl "http://127.0.0.1/server-status?auto" -Total Accesses: 80057 -Total kBytes: 223017 -CPULoad: .018287 -Uptime: 64472 -ReqPerSec: 1.24173 -BytesPerSec: 3542.15 -BytesPerReq: 2852.59 -BusyWorkers: 1 -IdleWorkers: 49 -Scoreboard: _________________________......................................._W_______________________....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... -``` - -Apache 2.4 response: - -```sh -curl "http://127.0.0.1/server-status?auto" -127.0.0.1 -ServerVersion: Apache/2.4.18 (Unix) -ServerMPM: event -Server Built: Dec 14 2015 08:05:54 -CurrentTime: Saturday, 23-Jan-2016 14:42:06 EET -RestartTime: Saturday, 23-Jan-2016 04:57:13 EET -ParentServerConfigGeneration: 2 -ParentServerMPMGeneration: 1 -ServerUptimeSeconds: 35092 -ServerUptime: 9 hours 44 minutes 52 seconds -Load1: 0.32 -Load5: 0.32 -Load15: 0.27 -Total Accesses: 32403 -Total kBytes: 34464 -CPUUser: 30.37 -CPUSystem: 29.55 -CPUChildrenUser: 0 -CPUChildrenSystem: 0 -CPULoad: .170751 -Uptime: 35092 -ReqPerSec: .923373 -BytesPerSec: 1005.67 -BytesPerReq: 1089.13 -BusyWorkers: 1 -IdleWorkers: 99 -ConnsTotal: 0 -ConnsAsyncWriting: 0 -ConnsAsyncKeepAlive: 0 -ConnsAsyncClosing: 0 -Scoreboard: __________________________________________________________________________________________W_________............................................................................................................................................................................................................................................................................................................ -``` - -From the apache status output it collects: - -- total accesses (incremental value, rendered as requests/s) -- total bandwidth (incremental value, rendered as bandwidth/s) -- requests per second (this appears to be calculated by apache as an average for its lifetime, while the one calculated by Netdata using the total accesses counter is real-time) -- bytes per second (average for the lifetime of the apache server) -- bytes per request (average for the lifetime of the apache server) -- workers by status (`busy` and `idle`) -- total connections (currently active connections - offered by apache 2.4+) -- async connections per status (`keepalive`, `writing`, `closing` - offered by apache 2.4+) - -## Configuration - -The configuration is stored in `/etc/netdata/charts.d/apache.conf`. -To edit this file on your system run `/etc/netdata/edit-config charts.d/apache.conf`. - -The internal default is: - -```sh -# the URL your apache server is responding with mod_status information. -apache_url="http://127.0.0.1:80/server-status?auto" - -# use this to set custom curl options you may need -apache_curl_opts= - -# set this to a NUMBER to overwrite the update frequency -# it is in seconds -apache_update_every= -``` - -The default `apache_update_every` is configured in Netdata. - -## Auto-detection - -If you have configured your apache server to offer server-status information on localhost clients, the defaults should work fine. - -## Apache Configuration - -Apache configuration differs between distributions. Please check your distribution's documentation for information on enabling apache's `mod_status` module. - -If you are able to run successfully, by hand this command: - -```sh -curl "http://127.0.0.1:80/server-status?auto" -``` - -Netdata will be able to do it too. - -Notice: You may need to have the default `000-default.conf` website enabled in order for the status mod to work. - -[![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fcollectors%2Fcharts.d.plugin%2Fapache%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)](<>) diff --git a/collectors/charts.d.plugin/apache/apache.chart.sh b/collectors/charts.d.plugin/apache/apache.chart.sh deleted file mode 100644 index 7d09ee676..000000000 --- a/collectors/charts.d.plugin/apache/apache.chart.sh +++ /dev/null @@ -1,251 +0,0 @@ -# shellcheck shell=bash -# no need for shebang - this file is loaded from charts.d.plugin -# SPDX-License-Identifier: GPL-3.0-or-later - -# netdata -# real-time performance and health monitoring, done right! -# (C) 2016 Costa Tsaousis <costa@tsaousis.gr> -# - -# the URL to download apache status info -apache_url="http://127.0.0.1:80/server-status?auto" -apache_curl_opts= - -# _update_every is a special variable - it holds the number of seconds -# between the calls of the _update() function -apache_update_every= - -apache_priority=60000 - -# convert apache floating point values -# to integer using this multiplier -# this only affects precision - the values -# will be in the proper units -apache_decimal_detail=1000000 - -declare -a apache_response=() -apache_accesses=0 -apache_kbytes=0 -apache_reqpersec=0 -apache_bytespersec=0 -apache_bytesperreq=0 -apache_busyworkers=0 -apache_idleworkers=0 -apache_connstotal=0 -apache_connsasyncwriting=0 -apache_connsasynckeepalive=0 -apache_connsasyncclosing=0 - -apache_keys_detected=0 -apache_has_conns=0 -apache_key_accesses= -apache_key_kbytes= -apache_key_reqpersec= -apache_key_bytespersec= -apache_key_bytesperreq= -apache_key_busyworkers= -apache_key_idleworkers= -apache_key_scoreboard= -apache_key_connstotal= -apache_key_connsasyncwriting= -apache_key_connsasynckeepalive= -apache_key_connsasyncclosing= -apache_detect() { - local i=0 - for x in "${@}"; do - case "${x}" in - 'Total Accesses') apache_key_accesses=$((i + 1)) ;; - 'Total kBytes') apache_key_kbytes=$((i + 1)) ;; - 'ReqPerSec') apache_key_reqpersec=$((i + 1)) ;; - 'BytesPerSec') apache_key_bytespersec=$((i + 1)) ;; - 'BytesPerReq') apache_key_bytesperreq=$((i + 1)) ;; - 'BusyWorkers') apache_key_busyworkers=$((i + 1)) ;; - 'IdleWorkers') apache_key_idleworkers=$((i + 1)) ;; - 'ConnsTotal') apache_key_connstotal=$((i + 1)) ;; - 'ConnsAsyncWriting') apache_key_connsasyncwriting=$((i + 1)) ;; - 'ConnsAsyncKeepAlive') apache_key_connsasynckeepalive=$((i + 1)) ;; - 'ConnsAsyncClosing') apache_key_connsasyncclosing=$((i + 1)) ;; - 'Scoreboard') apache_key_scoreboard=$((i)) ;; - esac - - i=$((i + 1)) - done - - # we will not check of the Conns* - # keys, since these are apache 2.4 specific - [ -z "${apache_key_accesses}" ] && error "missing 'Total Accesses' from apache server: ${*}" && return 1 - [ -z "${apache_key_kbytes}" ] && error "missing 'Total kBytes' from apache server: ${*}" && return 1 - [ -z "${apache_key_reqpersec}" ] && error "missing 'ReqPerSec' from apache server: ${*}" && return 1 - [ -z "${apache_key_bytespersec}" ] && error "missing 'BytesPerSec' from apache server: ${*}" && return 1 - [ -z "${apache_key_bytesperreq}" ] && error "missing 'BytesPerReq' from apache server: ${*}" && return 1 - [ -z "${apache_key_busyworkers}" ] && error "missing 'BusyWorkers' from apache server: ${*}" && return 1 - [ -z "${apache_key_idleworkers}" ] && error "missing 'IdleWorkers' from apache server: ${*}" && return 1 - [ -z "${apache_key_scoreboard}" ] && error "missing 'Scoreboard' from apache server: ${*}" && return 1 - - if [ ! -z "${apache_key_connstotal}" ] && - [ ! -z "${apache_key_connsasyncwriting}" ] && - [ ! -z "${apache_key_connsasynckeepalive}" ] && - [ ! -z "${apache_key_connsasyncclosing}" ]; then - apache_has_conns=1 - else - apache_has_conns=0 - fi - - return 0 -} - -apache_get() { - local oIFS="${IFS}" ret - # shellcheck disable=2207 - IFS=$':\n' apache_response=($(run curl -Ss ${apache_curl_opts} "${apache_url}")) - ret=$? - IFS="${oIFS}" - - if [ $ret -ne 0 ] || [ "${#apache_response[@]}" -eq 0 ]; then - return 1 - fi - - # the last line on the apache output is "Scoreboard" - # we use this label to detect that the output has a new word count - if [ ${apache_keys_detected} -eq 0 ] || [ "${apache_response[${apache_key_scoreboard}]}" != "Scoreboard" ]; then - apache_detect "${apache_response[@]}" || return 1 - apache_keys_detected=1 - fi - - apache_accesses="${apache_response[${apache_key_accesses}]}" - apache_kbytes="${apache_response[${apache_key_kbytes}]}" - - float2int "${apache_response[${apache_key_reqpersec}]}" ${apache_decimal_detail} - apache_reqpersec=${FLOAT2INT_RESULT} - - float2int "${apache_response[${apache_key_bytespersec}]}" ${apache_decimal_detail} - apache_bytespersec=${FLOAT2INT_RESULT} - - float2int "${apache_response[${apache_key_bytesperreq}]}" ${apache_decimal_detail} - apache_bytesperreq=${FLOAT2INT_RESULT} - - apache_busyworkers="${apache_response[${apache_key_busyworkers}]}" - apache_idleworkers="${apache_response[${apache_key_idleworkers}]}" - - if - [ -z "${apache_accesses}" ] || - [ -z "${apache_kbytes}" ] || - [ -z "${apache_reqpersec}" ] || - [ -z "${apache_bytespersec}" ] || - [ -z "${apache_bytesperreq}" ] || - [ -z "${apache_busyworkers}" ] - [ -z "${apache_idleworkers}" ] - then - error "empty values got from apache server: ${apache_response[*]}" - return 1 - fi - - if [ ${apache_has_conns} -eq 1 ]; then - apache_connstotal="${apache_response[${apache_key_connstotal}]}" - apache_connsasyncwriting="${apache_response[${apache_key_connsasyncwriting}]}" - apache_connsasynckeepalive="${apache_response[${apache_key_connsasynckeepalive}]}" - apache_connsasyncclosing="${apache_response[${apache_key_connsasyncclosing}]}" - fi - - return 0 -} - -# _check is called once, to find out if this chart should be enabled or not -apache_check() { - - apache_get - # shellcheck disable=2181 - if [ $? -ne 0 ]; then - # shellcheck disable=2154 - error "cannot find stub_status on URL '${apache_url}'. Please set apache_url='http://apache.server:80/server-status?auto' in $confd/apache.conf" - return 1 - fi - - # this should return: - # - 0 to enable the chart - # - 1 to disable the chart - - return 0 -} - -# _create is called once, to create the charts -apache_create() { - cat <<EOF -CHART apache_local.bytesperreq '' "apache Lifetime Avg. Response Size" "bytes/request" statistics apache.bytesperreq area $((apache_priority + 8)) $apache_update_every -DIMENSION size '' absolute 1 ${apache_decimal_detail} -CHART apache_local.workers '' "apache Workers" "workers" workers apache.workers stacked $((apache_priority + 5)) $apache_update_every -DIMENSION idle '' absolute 1 1 -DIMENSION busy '' absolute 1 1 -CHART apache_local.reqpersec '' "apache Lifetime Avg. Requests/s" "requests/s" statistics apache.reqpersec line $((apache_priority + 6)) $apache_update_every -DIMENSION requests '' absolute 1 ${apache_decimal_detail} -CHART apache_local.bytespersec '' "apache Lifetime Avg. Bandwidth/s" "kilobits/s" statistics apache.bytespersec area $((apache_priority + 7)) $apache_update_every -DIMENSION sent '' absolute 8 $((apache_decimal_detail * 1000)) -CHART apache_local.requests '' "apache Requests" "requests/s" requests apache.requests line $((apache_priority + 1)) $apache_update_every -DIMENSION requests '' incremental 1 1 -CHART apache_local.net '' "apache Bandwidth" "kilobits/s" bandwidth apache.net area $((apache_priority + 3)) $apache_update_every -DIMENSION sent '' incremental 8 1 -EOF - - if [ ${apache_has_conns} -eq 1 ]; then - cat <<EOF2 -CHART apache_local.connections '' "apache Connections" "connections" connections apache.connections line $((apache_priority + 2)) $apache_update_every -DIMENSION connections '' absolute 1 1 -CHART apache_local.conns_async '' "apache Async Connections" "connections" connections apache.conns_async stacked $((apache_priority + 4)) $apache_update_every -DIMENSION keepalive '' absolute 1 1 -DIMENSION closing '' absolute 1 1 -DIMENSION writing '' absolute 1 1 -EOF2 - fi - - return 0 -} - -# _update is called continuously, to collect the values -apache_update() { - # the first argument to this function is the microseconds since last update - # pass this parameter to the BEGIN statement (see bellow). - - # do all the work to collect / calculate the values - # for each dimension - # remember: KEEP IT SIMPLE AND SHORT - - apache_get || return 1 - - # write the result of the work. - cat <<VALUESEOF -BEGIN apache_local.requests $1 -SET requests = $((apache_accesses)) -END -BEGIN apache_local.net $1 -SET sent = $((apache_kbytes)) -END -BEGIN apache_local.reqpersec $1 -SET requests = $((apache_reqpersec)) -END -BEGIN apache_local.bytespersec $1 -SET sent = $((apache_bytespersec)) -END -BEGIN apache_local.bytesperreq $1 -SET size = $((apache_bytesperreq)) -END -BEGIN apache_local.workers $1 -SET idle = $((apache_idleworkers)) -SET busy = $((apache_busyworkers)) -END -VALUESEOF - - if [ ${apache_has_conns} -eq 1 ]; then - cat <<VALUESEOF2 -BEGIN apache_local.connections $1 -SET connections = $((apache_connstotal)) -END -BEGIN apache_local.conns_async $1 -SET keepalive = $((apache_connsasynckeepalive)) -SET closing = $((apache_connsasyncclosing)) -SET writing = $((apache_connsasyncwriting)) -END -VALUESEOF2 - fi - - return 0 -} diff --git a/collectors/charts.d.plugin/apache/apache.conf b/collectors/charts.d.plugin/apache/apache.conf deleted file mode 100644 index 50914cf32..000000000 --- a/collectors/charts.d.plugin/apache/apache.conf +++ /dev/null @@ -1,30 +0,0 @@ -# no need for shebang - this file is loaded from charts.d.plugin - -# netdata -# real-time performance and health monitoring, done right! -# (C) 2018 Costa Tsaousis <costa@tsaousis.gr> -# GPL v3+ - -# THIS PLUGIN IS DEPRECATED -# USE THE PYTHON.D ONE - -# the URL to download apache status info -#apache_url="http://127.0.0.1:80/server-status?auto" -#apache_curl_opts= - -# convert apache floating point values -# to integer using this multiplier -# this only affects precision - the values -# will be in the proper units -#apache_decimal_detail=1000000 - -# the data collection frequency -# if unset, will inherit the netdata update frequency -#apache_update_every= - -# the charts priority on the dashboard -#apache_priority=60000 - -# the number of retries to do in case of failure -# before disabling the module -#apache_retries=10 diff --git a/collectors/charts.d.plugin/apcupsd/README.md b/collectors/charts.d.plugin/apcupsd/README.md index 51bb6eccd..b5b41e84d 100644 --- a/collectors/charts.d.plugin/apcupsd/README.md +++ b/collectors/charts.d.plugin/apcupsd/README.md @@ -1,7 +1,21 @@ -# apcupsd +<!-- +title: "APC UPS monitoring with Netdata" +custom_edit_url: https://github.com/netdata/netdata/edit/master/collectors/charts.d.plugin/apcupsd/README.md +sidebar_label: "APC UPS" +--> -_Under construction_ +# APC UPS monitoring with Netdata -Collects UPS metrics +Monitors different APC UPS models and retrieves status information using `apcaccess` tool. + +## Configuration + +Edit the `charts.d/apcupsd.conf` configuration file using `edit-config` from the Netdata [config +directory](/docs/configure/nodes.md), which is typically at `/etc/netdata`. + +```bash +cd /etc/netdata # Replace this path with your Netdata config directory, if different +sudo ./edit-config charts.d/apcupsd.conf +``` [![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fcollectors%2Fcharts.d.plugin%2Fapcupsd%2FREADME&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)](<>) diff --git a/collectors/charts.d.plugin/apcupsd/apcupsd.chart.sh b/collectors/charts.d.plugin/apcupsd/apcupsd.chart.sh index 31ff93160..014a9c1de 100644 --- a/collectors/charts.d.plugin/apcupsd/apcupsd.chart.sh +++ b/collectors/charts.d.plugin/apcupsd/apcupsd.chart.sh @@ -11,7 +11,7 @@ apcupsd_ip= apcupsd_port= declare -A apcupsd_sources=( - ["local"]="127.0.0.1:3551" + ["local"]="127.0.0.1:3551" ) # how frequently to collect UPS data @@ -23,55 +23,63 @@ apcupsd_timeout=3 apcupsd_priority=90000 apcupsd_get() { - run -t $apcupsd_timeout apcaccess status "$1" + run -t $apcupsd_timeout apcaccess status "$1" +} + +is_ups_alive() { + local status + status="$(apcupsd_get "$1" | sed -e 's/STATUS.*: //' -e 't' -e 'd')" + case "$status" in + "" | "COMMLOST" | "SHUTTING DOWN") return 1 ;; + *) return 0 ;; + esac } apcupsd_check() { - # this should return: - # - 0 to enable the chart - # - 1 to disable the chart - - require_cmd apcaccess || return 1 - - # backwards compatibility - if [ "${apcupsd_ip}:${apcupsd_port}" != ":" ]; then - apcupsd_sources["local"]="${apcupsd_ip}:${apcupsd_port}" - fi - - local host working=0 failed=0 - for host in "${!apcupsd_sources[@]}"; do - run apcupsd_get "${apcupsd_sources[${host}]}" >/dev/null - # shellcheck disable=2181 - if [ $? -ne 0 ]; then - error "cannot get information for apcupsd server ${host} on ${apcupsd_sources[${host}]}." - failed=$((failed + 1)) - else - apcupsd_status="$(apcupsd_get ${apcupsd_sources[${host}]} | awk '/^STATUS.*/{ print $3 }')" - if [ "${apcupsd_status}" != "ONLINE" ] && [ "${apcupsd_status}" != "ONBATT" ]; then - error "APC UPS ${host} on ${apcupsd_sources[${host}]} is not online." - failed=$((failed + 1)) - else - working=$((working + 1)) - fi - fi - done - - if [ ${working} -eq 0 ]; then - error "No APC UPSes found available." - return 1 - fi - - return 0 + # this should return: + # - 0 to enable the chart + # - 1 to disable the chart + + require_cmd apcaccess || return 1 + + # backwards compatibility + if [ "${apcupsd_ip}:${apcupsd_port}" != ":" ]; then + apcupsd_sources["local"]="${apcupsd_ip}:${apcupsd_port}" + fi + + local host working=0 failed=0 + for host in "${!apcupsd_sources[@]}"; do + run apcupsd_get "${apcupsd_sources[${host}]}" > /dev/null + # shellcheck disable=2181 + if [ $? -ne 0 ]; then + error "cannot get information for apcupsd server ${host} on ${apcupsd_sources[${host}]}." + failed=$((failed + 1)) + else + if ! is_ups_alive ${apcupsd_sources[${host}]}; then + error "APC UPS ${host} on ${apcupsd_sources[${host}]} is not online." + failed=$((failed + 1)) + else + working=$((working + 1)) + fi + fi + done + + if [ ${working} -eq 0 ]; then + error "No APC UPSes found available." + return 1 + fi + + return 0 } apcupsd_create() { - local host src - for host in "${!apcupsd_sources[@]}"; do - src=${apcupsd_sources[${host}]} + local host src + for host in "${!apcupsd_sources[@]}"; do + src=${apcupsd_sources[${host}]} - # create the charts - cat <<EOF + # create the charts + cat << EOF CHART apcupsd_${host}.charge '' "UPS Charge for ${host} on ${src}" "percentage" ups apcupsd.charge area $((apcupsd_priority + 1)) $apcupsd_update_every DIMENSION battery_charge charge absolute 1 100 @@ -104,21 +112,21 @@ CHART apcupsd_${host}.online '' "UPS ONLINE flag for ${host} on ${src}" "boolean DIMENSION online online absolute 0 1 EOF - done - return 0 + done + return 0 } apcupsd_update() { - # the first argument to this function is the microseconds since last update - # pass this parameter to the BEGIN statement (see bellow). + # the first argument to this function is the microseconds since last update + # pass this parameter to the BEGIN statement (see bellow). - # do all the work to collect / calculate the values - # for each dimension - # remember: KEEP IT SIMPLE AND SHORT + # do all the work to collect / calculate the values + # for each dimension + # remember: KEEP IT SIMPLE AND SHORT - local host working=0 failed=0 - for host in "${!apcupsd_sources[@]}"; do - apcupsd_get "${apcupsd_sources[${host}]}" | awk " + local host working=0 failed=0 + for host in "${!apcupsd_sources[@]}"; do + apcupsd_get "${apcupsd_sources[${host}]}" | awk " BEGIN { battery_charge = 0; @@ -190,16 +198,16 @@ END { print \"END\" } }" - # shellcheck disable=SC2181 - if [ $? -ne 0 ]; then - failed=$((failed + 1)) - error "failed to get values for APC UPS ${host} on ${apcupsd_sources[${host}]}" && return 1 - else - working=$((working + 1)) - fi - done - - [ $working -eq 0 ] && error "failed to get values from all APC UPSes" && return 1 - - return 0 + # shellcheck disable=SC2181 + if [ $? -ne 0 ]; then + failed=$((failed + 1)) + error "failed to get values for APC UPS ${host} on ${apcupsd_sources[${host}]}" && return 1 + else + working=$((working + 1)) + fi + done + + [ $working -eq 0 ] && error "failed to get values from all APC UPSes" && return 1 + + return 0 } diff --git a/collectors/charts.d.plugin/apache/Makefile.inc b/collectors/python.d.plugin/alarms/Makefile.inc index 4b360eae0..c2de11724 100644 --- a/collectors/charts.d.plugin/apache/Makefile.inc +++ b/collectors/python.d.plugin/alarms/Makefile.inc @@ -5,9 +5,9 @@ # IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT # install these files -dist_charts_DATA += apache/apache.chart.sh -dist_chartsconfig_DATA += apache/apache.conf +dist_python_DATA += alarms/alarms.chart.py +dist_pythonconfig_DATA += alarms/alarms.conf # do not install these files, but include them in the distribution -dist_noinst_DATA += apache/README.md apache/Makefile.inc +dist_noinst_DATA += alarms/README.md alarms/Makefile.inc |