Compare commits

...

6 Commits
master ... fork

Author SHA1 Message Date
Jonny007-MKD 6948ee2b61 Format IPs as <code> 2020-10-19 21:42:33 +02:00
Jonny007-MKD b4bc721640 Improve output 2020-10-19 21:39:36 +02:00
Jonny007-MKD e974f45990 Added icon to host notifications 2020-10-19 21:21:39 +02:00
Jonny007-MKD 6d601ac73a Prettier timestamp 2020-10-19 21:16:10 +02:00
Jonny007-MKD ebb8194170 Prettier timestamp 2020-10-19 20:59:52 +02:00
Jonny007-MKD 5c6e1b560c Use Emoji to represent SERVICESTATE 2020-10-19 20:07:22 +02:00
2 changed files with 91 additions and 22 deletions

View File

@ -21,6 +21,7 @@
PROG="`basename $0`"
HOSTNAME="`hostname`"
TRANSPORT="curl"
LF=$'\n'
unset DEBUG
if [ -z "`which $TRANSPORT`" ] ; then
@ -87,23 +88,58 @@ do
esac
done
## Build the message's subject
SUBJECT="[$NOTIFICATIONTYPE] $SERVICEDISPLAYNAME on $HOSTDISPLAYNAME is $SERVICESTATE!"
# make icon out of service state
case "$HOSTSTATE" in
UP) HOSTSTATEICON=$'\xF0\x9F\x9F\xA9 ';;
DOWN) HOSTSTATEICON=$'\xF0\x9F\x9F\xA5 ';;
UNKNOWN) HOSTSTATEICON=$'\xE2\x9D\x93\x0A ';;
*) HOSTSTATEICON="";;
esac
# convert date
dateInSec=$(date -d "$LONGDATETIME" +%s)
nowInSec=$(date +%s)
ageInSec=$(($nowInSec - $dateInSec))
ageInMin=$(($ageInSec/60))
ageInHours=$(($ageInMin/60))
ageInDays=$(($ageInHours/24))
if [ "${LONGDATETIME:0:10}" == "$(date +"%Y-%m-%d")" ]; then
LONGDATETIME="${LONGDATETIME:11}"
fi
date=${LONGDATETIME#}
if [ $ageInDays -gt 0 ]; then
age="Since ${ageInDays}d $(($ageInHours-$ageInDays*24))h ($LONGDATETIME)$LF"
elif [ $ageInHours -gt 0 ]; then
age="Since ${ageInHours}h $(($ageInMin-$ageInHours*60))m ($LONGDATETIME)$LF"
elif [ $ageInMin -gt 0 ]; then
age="Since ${ageInMin}m $(($ageInSec-$ageInMin*60))s$LF"
elif [ $ageInSec -gt 5 ]; then
age="Since ${ageInSec}s$LF"
elif [ $ageInSec -lt 0 ]; then
age="Since $LONGDATETIME$LF"
fi
if [ "$HOSTALIAS" == "$HOSTDISPLAYNAME" ]; then
HOSTALIAS2=""
else
HOSTALIAS2=" ($HOSTALIAS)"
fi
## Build the message itself
NOTIFICATION_MESSAGE=$(cat << EOF
$HOSTDISPLAYNAME ($HOSTALIAS) is $HOSTSTATE!
When? $LONGDATETIME
Info? $HOSTOUTPUT
Host? $HOSTALIAS
IPv4? $HOSTADDRESS
$HOSTSTATEICON<b>$HOSTDISPLAYNAME</b>$HOSTALIAS2 is $HOSTSTATE!
${age}Info $HOSTOUTPUT
IPv4 <code>$HOSTADDRESS</code>
EOF
)
## Is this host IPv6 capable?
if [ -n "$HOSTADDRESS6" ] ; then
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
IPv6? $HOSTADDRESS6"
IPv6 <code>$HOSTADDRESS6</code>"
fi
## Are there any comments? Put them into the message!
if [ -n "$NOTIFICATIONCOMMENT" ] ; then
@ -114,14 +150,13 @@ fi
## Are we using Icinga Web 2? Put the URL into the message!
if [ -n "$HAS_ICINGAWEB2" ] ; then
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
Get live status:
$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS"
<a href='$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS'>$HAS_ICINGAWEB2</a>"
fi
## Build the message's subject
SUBJECT="[$NOTIFICATIONTYPE] Host $HOSTDISPLAYNAME is $HOSTSTATE!"
## Are we verbose? Then put a message to syslog...
if [ "$VERBOSE" == "true" ] ; then
## Build the message's subject
SUBJECT="[$NOTIFICATIONTYPE] Host $HOSTDISPLAYNAME is $HOSTSTATE!"
logger "$PROG sends $SUBJECT => Telegram Channel $TELEGRAM_BOT"
fi

View File

@ -90,27 +90,61 @@ do
esac
done
## Build the message's subject
SUBJECT="[$NOTIFICATIONTYPE] $SERVICEDISPLAYNAME on $HOSTDISPLAYNAME is $SERVICESTATE!"
# make icon out of service state
case "$SERVICESTATE" in
CRITICAL) SERVICESTATEICON=$'\xF0\x9F\x9F\xA5';;
WARNING) SERVICESTATEICON=$'\xF0\x9F\x9F\xA7';;
OK) SERVICESTATEICON=$'\xF0\x9F\x9F\xA9';;
UNKNOWN) SERVICESTATEICON=$'\xE2\x9D\x93\x0A';;
*) SERVICESTATEICON="[$SERVICESTATE]";;
esac
# convert date
dateInSec=$(date -d "$LONGDATETIME" +%s)
nowInSec=$(date +%s)
ageInSec=$(($nowInSec - $dateInSec))
ageInMin=$(($ageInSec/60))
ageInHours=$(($ageInMin/60))
ageInDays=$(($ageInHours/24))
if [ "${LONGDATETIME:0:10}" == "$(date +"%Y-%m-%d")" ]; then
LONGDATETIME="${LONGDATETIME:11}"
fi
date=${LONGDATETIME#}
if [ $ageInDays -gt 0 ]; then
age=" since ${ageInDays}d $(($ageInHours-$ageInDays*24))h ($LONGDATETIME)"
elif [ $ageInHours -gt 0 ]; then
age=" since ${ageInHours}h $(($ageInMin-$ageInHours*60))m ($LONGDATETIME)"
elif [ $ageInMin -gt 0 ]; then
age=" since ${ageInMin}m $(($ageInSec-$ageInMin*60))s"
elif [ $ageInSec -gt 5 ]; then
age=" since ${ageInSec}s"
elif [ $ageInSec -lt 0 ]; then
age=" since $LONGDATETIME"
fi
## Build the message itself
NOTIFICATION_MESSAGE=$(cat << EOF
[$SERVICESTATE] $SERVICEDISPLAYNAME is $SERVICESTATE since $LONGDATETIME
Host: $HOSTALIAS (IPv4 $HOSTADDRESS)
More info: $SERVICEOUTPUT
$SERVICESTATEICON <b>$SERVICEDISPLAYNAME</b> is ${SERVICESTATE}$age
Host: <b>$HOSTALIAS</b> (IPv4 <code>$HOSTADDRESS</code>
EOF
)
## Is this host IPv6 capable?
if [ -n "$HOSTADDRESS6" ] ; then
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
IPv6? $HOSTADDRESS6"
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE, IPv6 <code>$HOSTADDRESS6</code>"
fi
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE)"
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
More info: $SERVICEOUTPUT"
## Are there any comments? Put them into the message!
if [ -n "$NOTIFICATIONCOMMENT" ] ; then
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
Comment by $NOTIFICATIONAUTHORNAME:
$NOTIFICATIONCOMMENT"
fi
@ -118,12 +152,12 @@ fi
## Are we using Icinga Web 2? Put the URL into the message!
if [ -n "$HAS_ICINGAWEB2" ] ; then
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
Get live status:
$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS"
<a href='$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS'>$HAS_ICINGAWEB2</a>"
fi
## Are we verbose? Then put a message to syslog...
if [ "$VERBOSE" == "true" ] ; then
SUBJECT="[$NOTIFICATIONTYPE] $SERVICEDISPLAYNAME on $HOSTDISPLAYNAME is $SERVICESTATE!"
logger "$PROG sends $SUBJECT => Telegram Channel $TELEGRAM_BOT"
fi