From 0057c6607e0d18fa0ca8089e6759297a97b1ca25 Mon Sep 17 00:00:00 2001 From: Guillaume Marsay Date: Mon, 26 Sep 2016 10:38:07 +0200 Subject: [PATCH 1/5] Add Chilli plugin for sessions state --- plugins/chilli/chilli_ | 118 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100755 plugins/chilli/chilli_ diff --git a/plugins/chilli/chilli_ b/plugins/chilli/chilli_ new file mode 100755 index 00000000..e5df6999 --- /dev/null +++ b/plugins/chilli/chilli_ @@ -0,0 +1,118 @@ +#!/bin/bash +# -*- sh -*- + +: << =cut + +=head1 NAME + +chilli_ - Wildcard-plugin to monitor sessions state on Coova Chilli. + +=head1 CONFIGURATION + +This plugin does not normally require configuration. + +The plugin may need to run as root. This is configured like this: + + [chilli_*] + user root + +This is a wildcard plugin. To monitor an instance, link +chilli_ to this file. For example : + + ln -s /usr/share/munin/plugins/chilli_ \ + /etc/munin/plugins/chilli_hotspot1 + +will monitor hotspot1. + +For monitor all instances use : + + ln -s /usr/share/munin/plugins/chilli_ \ + /etc/munin/plugins/chilli_total + +=head1 AUTHOR + +OPENevents - Guillaume Marsay + +=head1 LICENSE + +GPLv2 + +=head1 MAGIC MARKERS + + #%# family=auto + #%# capabilities=autoconf suggest + +=cut + + +INSTANCE=${0##*chilli_} +CHILLI_PATH_BIN="/usr/sbin/chilli_query" +CHILLI_PATH_SOCK="/var/run" + + +case $1 in + autoconf) + if [[ -r $CHILLI_PATH_BIN ]]; then + if [[ $INSTANCE == "total" ]]; then + echo "yes" + exit 0 + else + if [[ -r $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock ]]; then + echo yes + exit 0 + else + echo "no ($CHILLI_PATH_SOCK/chilli_$INSTANCE.sock not found)" + exit 0 + fi + fi + else + echo "no ($CHILLI_PATH_BIN not found)" + exit 0 + fi + ;; + suggest) + INSTANCES_LIST=$(ls /var/run/chilli_*.sock) + + for file in $INSTANCES_LIST; do + echo $(basename $file .sock | cut -d _ -f 2) + done + + echo "total" + + exit 0 + ;; + config) + echo "graph_title Chilli $INSTANCE sessions" + echo "graph_args --base 1000 -l 0" + echo "graph_category chilli" + echo "none.label NONE" + echo "none.min 0" + echo "none.draw AREA" + echo "none.colour ff8000" + echo "dnat.label DNAT" + echo "dnat.min 0" + echo "dnat.draw STACK" + echo "dnat.colour 0066b3" + echo "pass.label PASS" + echo "pass.draw STACK" + echo "pass.min 0" + echo "pass.colour 00cc00" + + exit 0 + ;; +esac + + +if [[ $INSTANCE == "total" ]]; then + STATE_PASS=$($CHILLI_PATH_BIN list | grep "pass" | wc -l) + STATE_DNAT=$($CHILLI_PATH_BIN list | grep "dnat" | wc -l) + STATE_NONE=$($CHILLI_PATH_BIN list | grep "none" | wc -l) +else + STATE_PASS=$($CHILLI_PATH_BIN -s $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock list | grep "pass" | wc -l) + STATE_DNAT=$($CHILLI_PATH_BIN -s $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock list | grep "dnat" | wc -l) + STATE_NONE=$($CHILLI_PATH_BIN -s $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock list | grep "none" | wc -l) +fi + +echo "pass.value $STATE_PASS" +echo "dnat.value $STATE_DNAT" +echo "none.value $STATE_NONE" From cdd3955588c76325f74137fda4ff825e9652aa08 Mon Sep 17 00:00:00 2001 From: Guillaume Marsay Date: Thu, 5 Jan 2017 08:26:00 +0100 Subject: [PATCH 2/5] Update script --- plugins/chilli/{chilli_ => chilli_sessions_} | 49 ++++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) rename plugins/chilli/{chilli_ => chilli_sessions_} (56%) diff --git a/plugins/chilli/chilli_ b/plugins/chilli/chilli_sessions_ similarity index 56% rename from plugins/chilli/chilli_ rename to plugins/chilli/chilli_sessions_ index e5df6999..df34117f 100755 --- a/plugins/chilli/chilli_ +++ b/plugins/chilli/chilli_sessions_ @@ -1,11 +1,11 @@ -#!/bin/bash +#!/bin/sh # -*- sh -*- : << =cut =head1 NAME -chilli_ - Wildcard-plugin to monitor sessions state on Coova Chilli. +chilli_sessions_ - Wildcard-plugin to monitor sessions state on Coova Chilli. =head1 CONFIGURATION @@ -13,21 +13,21 @@ This plugin does not normally require configuration. The plugin may need to run as root. This is configured like this: - [chilli_*] + [chilli_sessions_*] user root This is a wildcard plugin. To monitor an instance, link -chilli_ to this file. For example : +chilli_sessions_ to this file. For example : - ln -s /usr/share/munin/plugins/chilli_ \ - /etc/munin/plugins/chilli_hotspot1 + ln -s /usr/share/munin/plugins/chilli_sessions_ \ + /etc/munin/plugins/chilli_sessions_hotspot1 will monitor hotspot1. For monitor all instances use : - ln -s /usr/share/munin/plugins/chilli_ \ - /etc/munin/plugins/chilli_total + ln -s /usr/share/munin/plugins/chilli_sessions_ \ + /etc/munin/plugins/chilli_sessions_total =head1 AUTHOR @@ -45,20 +45,20 @@ GPLv2 =cut -INSTANCE=${0##*chilli_} +INSTANCE="${0##*chilli_}" CHILLI_PATH_BIN="/usr/sbin/chilli_query" CHILLI_PATH_SOCK="/var/run" -case $1 in +case "$1" in autoconf) - if [[ -r $CHILLI_PATH_BIN ]]; then - if [[ $INSTANCE == "total" ]]; then + if [ -r "$CHILLI_PATH_BIN" ]; then + if [ "$INSTANCE" = "total" ]; then echo "yes" exit 0 else - if [[ -r $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock ]]; then - echo yes + if [ -r "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock ]; then + echo "yes" exit 0 else echo "no ($CHILLI_PATH_SOCK/chilli_$INSTANCE.sock not found)" @@ -74,12 +74,12 @@ case $1 in INSTANCES_LIST=$(ls /var/run/chilli_*.sock) for file in $INSTANCES_LIST; do - echo $(basename $file .sock | cut -d _ -f 2) + basename "$file" .sock | cut -d _ -f 2 done echo "total" - - exit 0 + + exit 0 ;; config) echo "graph_title Chilli $INSTANCE sessions" @@ -102,15 +102,14 @@ case $1 in ;; esac - -if [[ $INSTANCE == "total" ]]; then - STATE_PASS=$($CHILLI_PATH_BIN list | grep "pass" | wc -l) - STATE_DNAT=$($CHILLI_PATH_BIN list | grep "dnat" | wc -l) - STATE_NONE=$($CHILLI_PATH_BIN list | grep "none" | wc -l) +if [ "$INSTANCE" = "total" ]; then + STATE_PASS=$("$CHILLI_PATH_BIN" list | grep -wc "pass") + STATE_DNAT=$("$CHILLI_PATH_BIN" list | grep -wc "dnat") + STATE_NONE=$("$CHILLI_PATH_BIN" list | grep -wc "none") else - STATE_PASS=$($CHILLI_PATH_BIN -s $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock list | grep "pass" | wc -l) - STATE_DNAT=$($CHILLI_PATH_BIN -s $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock list | grep "dnat" | wc -l) - STATE_NONE=$($CHILLI_PATH_BIN -s $CHILLI_PATH_SOCK/chilli_$INSTANCE.sock list | grep "none" | wc -l) + STATE_PASS=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock list | grep -wc "pass") + STATE_DNAT=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock list | grep -wc "dnat") + STATE_NONE=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock list | grep -wc "none") fi echo "pass.value $STATE_PASS" From 7f3c3007a5490e827844a05928afa64b629f771b Mon Sep 17 00:00:00 2001 From: Guillaume Marsay Date: Thu, 5 Jan 2017 08:32:46 +0100 Subject: [PATCH 3/5] Update with "shellcheck -s dash" recommendations --- plugins/chilli/chilli_sessions_ | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/chilli/chilli_sessions_ b/plugins/chilli/chilli_sessions_ index df34117f..87eb8f56 100755 --- a/plugins/chilli/chilli_sessions_ +++ b/plugins/chilli/chilli_sessions_ @@ -57,7 +57,7 @@ case "$1" in echo "yes" exit 0 else - if [ -r "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock ]; then + if [ -r $CHILLI_PATH_SOCK/chilli_"$INSTANCE".sock ]; then echo "yes" exit 0 else @@ -107,9 +107,9 @@ if [ "$INSTANCE" = "total" ]; then STATE_DNAT=$("$CHILLI_PATH_BIN" list | grep -wc "dnat") STATE_NONE=$("$CHILLI_PATH_BIN" list | grep -wc "none") else - STATE_PASS=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock list | grep -wc "pass") - STATE_DNAT=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock list | grep -wc "dnat") - STATE_NONE=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK"/chilli_"$INSTANCE".sock list | grep -wc "none") + STATE_PASS=$("$CHILLI_PATH_BIN" -s $CHILLI_PATH_SOCK/chilli_"$INSTANCE".sock list | grep -wc "pass") + STATE_DNAT=$("$CHILLI_PATH_BIN" -s $CHILLI_PATH_SOCK/chilli_"$INSTANCE".sock list | grep -wc "dnat") + STATE_NONE=$("$CHILLI_PATH_BIN" -s $CHILLI_PATH_SOCK/chilli_"$INSTANCE".sock list | grep -wc "none") fi echo "pass.value $STATE_PASS" From 1ded68fc876fa593a30df2bd85d546288ffedb86 Mon Sep 17 00:00:00 2001 From: Guillaume Marsay Date: Tue, 10 Jan 2017 08:48:19 +0100 Subject: [PATCH 4/5] Update plugin --- plugins/chilli/chilli_sessions_ | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/plugins/chilli/chilli_sessions_ b/plugins/chilli/chilli_sessions_ index 87eb8f56..5fdac965 100755 --- a/plugins/chilli/chilli_sessions_ +++ b/plugins/chilli/chilli_sessions_ @@ -7,6 +7,10 @@ chilli_sessions_ - Wildcard-plugin to monitor sessions state on Coova Chilli. +=head DESCRIPTION + +This wildcard plugin is for monitor the number of device with state pass/dnat/none on Coova Chilli instances. + =head1 CONFIGURATION This plugin does not normally require configuration. @@ -71,15 +75,13 @@ case "$1" in fi ;; suggest) - INSTANCES_LIST=$(ls /var/run/chilli_*.sock) - - for file in $INSTANCES_LIST; do + find "$CHILLI_PATH_SOCK/" -name "chilli_*.sock" | while read file; do basename "$file" .sock | cut -d _ -f 2 done echo "total" - exit 0 + exit 0 ;; config) echo "graph_title Chilli $INSTANCE sessions" @@ -107,9 +109,9 @@ if [ "$INSTANCE" = "total" ]; then STATE_DNAT=$("$CHILLI_PATH_BIN" list | grep -wc "dnat") STATE_NONE=$("$CHILLI_PATH_BIN" list | grep -wc "none") else - STATE_PASS=$("$CHILLI_PATH_BIN" -s $CHILLI_PATH_SOCK/chilli_"$INSTANCE".sock list | grep -wc "pass") - STATE_DNAT=$("$CHILLI_PATH_BIN" -s $CHILLI_PATH_SOCK/chilli_"$INSTANCE".sock list | grep -wc "dnat") - STATE_NONE=$("$CHILLI_PATH_BIN" -s $CHILLI_PATH_SOCK/chilli_"$INSTANCE".sock list | grep -wc "none") + STATE_PASS=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK/chilli_$INSTANCE.sock" list | grep -wc "pass") + STATE_DNAT=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK/chilli_$INSTANCE.sock" list | grep -wc "dnat") + STATE_NONE=$("$CHILLI_PATH_BIN" -s "$CHILLI_PATH_SOCK/chilli_$INSTANCE.sock" list | grep -wc "none") fi echo "pass.value $STATE_PASS" From 5ee71111869b77ca57c8145b03b6ff5bcdc055d3 Mon Sep 17 00:00:00 2001 From: Guillaume Marsay Date: Tue, 10 Jan 2017 08:50:08 +0100 Subject: [PATCH 5/5] Fix typo --- plugins/chilli/chilli_sessions_ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/chilli/chilli_sessions_ b/plugins/chilli/chilli_sessions_ index 5fdac965..75dbe3fd 100755 --- a/plugins/chilli/chilli_sessions_ +++ b/plugins/chilli/chilli_sessions_ @@ -7,7 +7,7 @@ chilli_sessions_ - Wildcard-plugin to monitor sessions state on Coova Chilli. -=head DESCRIPTION +=head1 DESCRIPTION This wildcard plugin is for monitor the number of device with state pass/dnat/none on Coova Chilli instances.