diff --git a/plugins/healthcheck/healthcheck_log b/plugins/healthcheck/healthcheck_log index 1cd79779..9e86dbe9 100755 --- a/plugins/healthcheck/healthcheck_log +++ b/plugins/healthcheck/healthcheck_log @@ -1,161 +1,161 @@ -#!/bin/bash -# -#healthcheck on munin -#egrep system log and alert. -# -#programed by rti (hiroyuki fujie) super.rti@gmail.com @super_rti -#LICENSE: NYSL (public domain) -# -# -#config file -# /etc/munin/plugin-conf.d/munin-node -# -#example minimum config -#--------------------------------------------------- -#[healthcheck_log] -#user root -#env.log_1 /var/log/messages -#--------------------------------------------------- -# -#check two log -#--------------------------------------------------- -#[healthcheck_log] -#user root -#env.log_1 /var/log/messages -#env.log_2 /var/log/syslog -#--------------------------------------------------- -# -#check two three -#--------------------------------------------------- -#[healthcheck_log] -#user root -#env.log_1 /var/log/messages -#env.log_2 /var/log/syslog -#env.log_3 /var/log/dmesg -#--------------------------------------------------- -# -#set name -#--------------------------------------------------- -#[healthcheck_log] -#user root -#env.log_1 /var/log/messages -#env.name_1 my_server_messages -#--------------------------------------------------- -# -#set egrep string -#--------------------------------------------------- -#[healthcheck_log] -#user root -#env.log_1 /var/log/messages -#env.grep_1 alert|warning -#--------------------------------------------------- -# -#set egrep string -#--------------------------------------------------- -#[healthcheck_log] -#user root -#env.log_1 /var/log/messages -#env.grep_1 alert|warning -#--------------------------------------------------- -# -#full option -#/etc/munin/plugin-conf.d/munin-node -#--------------------------------------------------- -#[healthcheck_log] -#user root #log file is read only root user. -#env.log_1 /var/log/messages #target log filename -#env.grep_1 critical|error #egrep string. - #defualt by critical|error|warning|crash|fatal|kernel -#--------------------------------------------------- -# - - -#edakari speed up. -CHECKMAX=`env | grep log_ | wc -l` -let CHECKMAX="$CHECKMAX + 1" -MINUTE_BY_GREP_RANGE=10 - -if [ "$1" = "autoconf" ]; then - if [ $CHECKMAX -le 1 ]; then - echo no - exit 1 - fi - echo yes - exit 0 -fi - -if [ "$1" = "config" ]; then - echo 'graph_title log grep (match count)' - echo "graph_args --base 1000 -l 0 --vertical-label match_count" - echo 'graph_scale no' - echo 'graph_vlabel match_count' - echo 'graph_category healthcheck' - echo 'graph_info This graph shows the bad event count on log' - - for(( I = 1; I < $CHECKMAX; ++I )) - do - eval log=\$log_${I} - eval name=\$name_${I} - eval grep=\$grep_${I} - if [ "x${log}" = "x" ]; then - continue - fi - if [ "x${name}" = "x" ]; then - name=`echo $log | sed 's#[/|\.]#_#g'` - fi - if [ "x${name}" = "x" ]; then - grep="critical|error|crash|fatal|kernel" - fi - - echo "$name.label $name" - echo "$name.info egrep $grep $log | wc -l" - echo "$name.draw LINE2" - echo "$name.min 0" - echo "$name.max 20" - echo "$name.critical 0:0" - done - - exit 0 -fi - -NOWTIME=`date --date "$MINUTE_BY_GREP_RANGE minute ago" +%s` - -for(( I = 1; I < $CHECKMAX; ++I )) -do - eval log=\$log_${I} - eval name=\$name_${I} - eval grep=\$grep_${I} - if [ "x${log}" = "x" ]; then - continue - fi - if [ "x${name}" = "x" ]; then - name=`echo $log | sed 's#[/|\.]#_#g'` - fi - if [ "x${grep}" = "x" ]; then - grep="critical|error|crash|fatal|kernel" - fi - - COUNT=0 - MESSAGE= - IFS=$'\n' - MATCHLINES=(`egrep -i "$grep" "$log"`) - for(( N = ${#MATCHLINES[@]} - 1; N >= 0 ; --N )) - do - LINE=${MATCHLINES[$N]} - DATESTRING=`echo $LINE | awk '{ printf("%s %s %s",$1,$2,$3)}'` - LOGTIME=`date --date "$DATESTRING" +%s` - if [ $LOGTIME -lt $NOWTIME ]; then - break - fi - let COUNT="$COUNT + 1" - MESSAGE="$MESSAGE$LINE //@LINE@// " - done - - - if [ $COUNT -eq 0 ]; then - echo "${name}.value 0" - else - echo "${name}.value ${COUNT}" - echo "${name}.extinfo ${MESSAGE}" - fi -done +#!/bin/bash +# +#healthcheck on munin +#egrep system log and alert. +# +#programed by rti (hiroyuki fujie) super.rti@gmail.com @super_rti +#LICENSE: NYSL (public domain) +# +# +#config file +# /etc/munin/plugin-conf.d/munin-node +# +#example minimum config +#--------------------------------------------------- +#[healthcheck_log] +#user root +#env.log_1 /var/log/messages +#--------------------------------------------------- +# +#check two log +#--------------------------------------------------- +#[healthcheck_log] +#user root +#env.log_1 /var/log/messages +#env.log_2 /var/log/syslog +#--------------------------------------------------- +# +#check two three +#--------------------------------------------------- +#[healthcheck_log] +#user root +#env.log_1 /var/log/messages +#env.log_2 /var/log/syslog +#env.log_3 /var/log/dmesg +#--------------------------------------------------- +# +#set name +#--------------------------------------------------- +#[healthcheck_log] +#user root +#env.log_1 /var/log/messages +#env.name_1 my_server_messages +#--------------------------------------------------- +# +#set egrep string +#--------------------------------------------------- +#[healthcheck_log] +#user root +#env.log_1 /var/log/messages +#env.grep_1 alert|warning +#--------------------------------------------------- +# +#set egrep string +#--------------------------------------------------- +#[healthcheck_log] +#user root +#env.log_1 /var/log/messages +#env.grep_1 alert|warning +#--------------------------------------------------- +# +#full option +#/etc/munin/plugin-conf.d/munin-node +#--------------------------------------------------- +#[healthcheck_log] +#user root #log file is read only root user. +#env.log_1 /var/log/messages #target log filename +#env.grep_1 critical|error #egrep string. + #defualt by critical|error|warning|crash|fatal|kernel +#--------------------------------------------------- +# + + +#edakari speed up. +CHECKMAX=`env | grep log_ | wc -l` +let CHECKMAX="$CHECKMAX + 1" +MINUTE_BY_GREP_RANGE=10 + +if [ "$1" = "autoconf" ]; then + if [ $CHECKMAX -le 1 ]; then + echo no + exit 1 + fi + echo yes + exit 0 +fi + +if [ "$1" = "config" ]; then + echo 'graph_title log grep (match count)' + echo "graph_args --base 1000 -l 0 --vertical-label match_count" + echo 'graph_scale no' + echo 'graph_vlabel match_count' + echo 'graph_category healthcheck' + echo 'graph_info This graph shows the bad event count on log' + + for(( I = 1; I < $CHECKMAX; ++I )) + do + eval log=\$log_${I} + eval name=\$name_${I} + eval grep=\$grep_${I} + if [ "x${log}" = "x" ]; then + continue + fi + if [ "x${name}" = "x" ]; then + name=`echo $log | sed 's#[/|\.]#_#g'` + fi + if [ "x${name}" = "x" ]; then + grep="critical|error|crash|fatal|kernel" + fi + + echo "$name.label $name" + echo "$name.info egrep $grep $log | wc -l" + echo "$name.draw LINE2" + echo "$name.min 0" + echo "$name.max 20" + echo "$name.critical 0:0" + done + + exit 0 +fi + +NOWTIME=`date --date "$MINUTE_BY_GREP_RANGE minute ago" +%s` + +for(( I = 1; I < $CHECKMAX; ++I )) +do + eval log=\$log_${I} + eval name=\$name_${I} + eval grep=\$grep_${I} + if [ "x${log}" = "x" ]; then + continue + fi + if [ "x${name}" = "x" ]; then + name=`echo $log | sed 's#[/|\.]#_#g'` + fi + if [ "x${grep}" = "x" ]; then + grep="critical|error|crash|fatal|kernel" + fi + + COUNT=0 + MESSAGE= + IFS=$'\n' + MATCHLINES=(`egrep -i "$grep" "$log"`) + for(( N = ${#MATCHLINES[@]} - 1; N >= 0 ; --N )) + do + LINE=${MATCHLINES[$N]} + DATESTRING=`echo $LINE | awk '{ printf("%s %s %s",$1,$2,$3)}'` + LOGTIME=`date --date "$DATESTRING" +%s` + if [ $LOGTIME -lt $NOWTIME ]; then + break + fi + let COUNT="$COUNT + 1" + MESSAGE="$MESSAGE$LINE //@LINE@// " + done + + + if [ $COUNT -eq 0 ]; then + echo "${name}.value 0" + else + echo "${name}.value ${COUNT}" + echo "${name}.extinfo ${MESSAGE}" + fi +done diff --git a/plugins/mail/postfix-policyd b/plugins/mail/postfix-policyd index fee80923..fb094740 100755 --- a/plugins/mail/postfix-policyd +++ b/plugins/mail/postfix-policyd @@ -1,53 +1,53 @@ -#!/bin/bash -# -# Plugin to monitor incoming mails greylisted by postfix-policyd -# -# Parameters understood: -# -# config (required) -# autoconf (optional) -# - -MYSQL_USER="postfix-policyd" -MYSQL_PASS="" -MYSQL_DB="postfixpolicyd" - -if [ "$1" = "autoconf" ]; then - if [ -n "${MYSQL_PASS}" ] ; then - echo yes - exit 0 - else - echo "no (set mysql pass)" - exit 1 - fi -fi - -if [ "$1" = "config" ]; then - echo 'graph_title Postfix-Policyd daily filtering' - echo 'graph_order delayed passed whitelisted' - echo 'graph_category mail' - echo 'graph_vlabel Count' - echo 'graph_scale no' - -## echo 'graph_args --base 1000 -l 0' - echo 'delayed.label delayed' - echo 'delayed.type GAUGE' - echo 'passed.label passed' - echo 'passed.type GAUGE' - echo 'whitelisted.label whitelisted' - echo 'whitelisted.type GAUGE' - echo 'blacklisted.label blacklisted' - echo 'blacklisted.type GAUGE' - - exit 0 -fi - -DELAYED="`echo "SELECT COUNT(*) FROM triplet WHERE _count = 0" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" -PASSED="`echo "SELECT COUNT(*) FROM triplet WHERE _count != 0" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" -WHITELISTED="`echo "SELECT COUNT(*) FROM whitelist" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" -BLACKLISTED="`echo "SELECT COUNT(*) FROM blacklist" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" - -echo "delayed.value ${DELAYED}" -echo "passed.value ${PASSED}" -echo "whitelisted.value ${WHITELISTED}" -echo "blacklisted.value ${BLACKLISTED}" \ No newline at end of file +#!/bin/bash +# +# Plugin to monitor incoming mails greylisted by postfix-policyd +# +# Parameters understood: +# +# config (required) +# autoconf (optional) +# + +MYSQL_USER="postfix-policyd" +MYSQL_PASS="" +MYSQL_DB="postfixpolicyd" + +if [ "$1" = "autoconf" ]; then + if [ -n "${MYSQL_PASS}" ] ; then + echo yes + exit 0 + else + echo "no (set mysql pass)" + exit 1 + fi +fi + +if [ "$1" = "config" ]; then + echo 'graph_title Postfix-Policyd daily filtering' + echo 'graph_order delayed passed whitelisted' + echo 'graph_category mail' + echo 'graph_vlabel Count' + echo 'graph_scale no' + +## echo 'graph_args --base 1000 -l 0' + echo 'delayed.label delayed' + echo 'delayed.type GAUGE' + echo 'passed.label passed' + echo 'passed.type GAUGE' + echo 'whitelisted.label whitelisted' + echo 'whitelisted.type GAUGE' + echo 'blacklisted.label blacklisted' + echo 'blacklisted.type GAUGE' + + exit 0 +fi + +DELAYED="`echo "SELECT COUNT(*) FROM triplet WHERE _count = 0" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" +PASSED="`echo "SELECT COUNT(*) FROM triplet WHERE _count != 0" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" +WHITELISTED="`echo "SELECT COUNT(*) FROM whitelist" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" +BLACKLISTED="`echo "SELECT COUNT(*) FROM blacklist" | mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DB} | egrep [0-9]`" + +echo "delayed.value ${DELAYED}" +echo "passed.value ${PASSED}" +echo "whitelisted.value ${WHITELISTED}" +echo "blacklisted.value ${BLACKLISTED}"