From 6c13e1d9cf0855d287f600e47c079c62ed3fa235 Mon Sep 17 00:00:00 2001 From: Kael Shipman Date: Sun, 18 Nov 2018 12:26:29 -0600 Subject: [PATCH] Added extinfo to list affected logs and improved documentation --- .../example-graphs/service_events-day.png | Bin 0 -> 26147 bytes .../example-graphs/service_events-week.png | Bin 0 -> 27980 bytes plugins/logs/loggrepx_ | 14 +-- plugins/logs/service_events | 87 ++++++++++++++---- 4 files changed, 75 insertions(+), 26 deletions(-) create mode 100644 plugins/logs/example-graphs/service_events-day.png create mode 100644 plugins/logs/example-graphs/service_events-week.png diff --git a/plugins/logs/example-graphs/service_events-day.png b/plugins/logs/example-graphs/service_events-day.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ee90662ff32e40bd52dd14ca925b7856faac47 GIT binary patch literal 26147 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 h2!4 + =head1 LICENSE MIT LICENSE @@ -138,6 +179,7 @@ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + =head1 MAGIC MARKERS #%# family=manual @@ -245,7 +287,7 @@ function config() { echo "graph_args --base 1000 -l 0" echo "graph_vlabel ${vlabel}" echo "graph_category other" - echo "graph_info Lists number of matching lines found in various logfiles associated with each service" + echo "graph_info Lists number of matching lines found in various logfiles associated with each service. Extinfo displays currently affected logs." local var_prefix while read -u 3 -r svc; do @@ -266,7 +308,7 @@ function fetch() { local curstate="$(cat "$MUNIN_STATEFILE")" local nextstate=() - local n svcnm varnm service svc svc_counter logbinding logfile lognm logmatch prvlines curlines matches + local n svcnm varnm service svc svc_counter logbinding logfile lognm logmatch prvlines curlines matches extinfo_var # Set service counters to 0 and set any logbindings that aren't yet set while read -u 3 -r svc; do @@ -306,17 +348,13 @@ function fetch() { svcnm="$(echo "$service" | sed -r 's/^[^a-zA-Z]+//g' | sed -r 's/[^a-zA-Z0-9]+/_/g')" lognm="$(echo "$logfile" | sed -r 's/^[^a-zA-Z]+//g' | sed -r 's/[^a-zA-Z0-9]+/_/g')" - # Get previous line count to determine whether or not the file may have been rotated + # Get previous line count to determine whether or not the file may have been rotated (defaulting to 0) prvlines="$(echo "$curstate" | grep "^${lognm}_lines=" | cut -f 2 -d "=")" - if [ -z "$prvlines" ]; then - prvlines=0 - fi + prvlines="${prvlines:-0}" - # Get the current number of lines in the file + # Get the current number of lines in the file (defaulting to 0 on error) curlines="$(wc -l < "$logfile")" - if ! [ "$curlines" -eq "$curlines" ] &>/dev/null; then - curlines=0 - fi + curlines="${curlines:-0}" # If the current line count is less than the previous line count, we've probably rotated. # Reset to 0. @@ -330,10 +368,17 @@ function fetch() { logmatch="${LOGFILEMAP[$n]}_regex" matches="$(tail -n +"$prvlines" "$logfile" | grep -Ec "${!logmatch}" || true)" - # Aggregate and add to the correct service counter - svc_counter="${svcnm}_total" - !((matches+=${!svc_counter})) - typeset "$svc_counter=$matches" + # If there were matches, aggregate them and add this log to the extinfo for the service + if [ "$matches" -gt 0 ]; then + # Aggregate and add to the correct service counter + svc_counter="${svcnm}_total" + !((matches+=${!svc_counter})) + typeset "$svc_counter=$matches" + + # Add this log to extinfo for service + extinfo_var="${svcnm}_extinfo" + typeset "$extinfo_var=${!extinfo_var}$logfile, " + fi # Push onto next state nextstate+=("${lognm}_lines=$curlines") @@ -348,7 +393,9 @@ function fetch() { while read -u 3 -r svc; do svcnm="$(echo "$svc" | sed -r 's/^[^a-zA-Z]+//g' | sed -r 's/[^a-zA-Z0-9]+/_/g')" svc_counter="${svcnm}_total" + extinfo_var="${svcnm}_extinfo" echo "${svcnm}.value ${!svc_counter}" + echo "${svcnm}.extinfo ${!extinfo_var}" done 3< <(IFS=$'\n'; echo "${services[*]}") return 0