Compare commits
6 commits
Author | SHA1 | Date | |
---|---|---|---|
Jonny007-MKD | 6948ee2b61 | ||
Jonny007-MKD | b4bc721640 | ||
Jonny007-MKD | e974f45990 | ||
Jonny007-MKD | 6d601ac73a | ||
Jonny007-MKD | ebb8194170 | ||
Jonny007-MKD | 5c6e1b560c |
|
@ -21,6 +21,7 @@
|
||||||
PROG="`basename $0`"
|
PROG="`basename $0`"
|
||||||
HOSTNAME="`hostname`"
|
HOSTNAME="`hostname`"
|
||||||
TRANSPORT="curl"
|
TRANSPORT="curl"
|
||||||
|
LF=$'\n'
|
||||||
unset DEBUG
|
unset DEBUG
|
||||||
|
|
||||||
if [ -z "`which $TRANSPORT`" ] ; then
|
if [ -z "`which $TRANSPORT`" ] ; then
|
||||||
|
@ -87,23 +88,58 @@ do
|
||||||
esac
|
esac
|
||||||
done
|
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
|
## Build the message itself
|
||||||
NOTIFICATION_MESSAGE=$(cat << EOF
|
NOTIFICATION_MESSAGE=$(cat << EOF
|
||||||
$HOSTDISPLAYNAME ($HOSTALIAS) is $HOSTSTATE!
|
$HOSTSTATEICON<b>$HOSTDISPLAYNAME</b>$HOSTALIAS2 is $HOSTSTATE!
|
||||||
When? $LONGDATETIME
|
${age}Info $HOSTOUTPUT
|
||||||
Info? $HOSTOUTPUT
|
IPv4 <code>$HOSTADDRESS</code>
|
||||||
Host? $HOSTALIAS
|
|
||||||
IPv4? $HOSTADDRESS
|
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
||||||
## Is this host IPv6 capable?
|
## Is this host IPv6 capable?
|
||||||
if [ -n "$HOSTADDRESS6" ] ; then
|
if [ -n "$HOSTADDRESS6" ] ; then
|
||||||
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
||||||
IPv6? $HOSTADDRESS6"
|
IPv6 <code>$HOSTADDRESS6</code>"
|
||||||
fi
|
fi
|
||||||
## Are there any comments? Put them into the message!
|
## Are there any comments? Put them into the message!
|
||||||
if [ -n "$NOTIFICATIONCOMMENT" ] ; then
|
if [ -n "$NOTIFICATIONCOMMENT" ] ; then
|
||||||
|
@ -114,14 +150,13 @@ fi
|
||||||
## Are we using Icinga Web 2? Put the URL into the message!
|
## Are we using Icinga Web 2? Put the URL into the message!
|
||||||
if [ -n "$HAS_ICINGAWEB2" ] ; then
|
if [ -n "$HAS_ICINGAWEB2" ] ; then
|
||||||
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
||||||
Get live status:
|
<a href='$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS'>$HAS_ICINGAWEB2</a>"
|
||||||
$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS"
|
|
||||||
fi
|
fi
|
||||||
## Build the message's subject
|
|
||||||
SUBJECT="[$NOTIFICATIONTYPE] Host $HOSTDISPLAYNAME is $HOSTSTATE!"
|
|
||||||
|
|
||||||
## Are we verbose? Then put a message to syslog...
|
## Are we verbose? Then put a message to syslog...
|
||||||
if [ "$VERBOSE" == "true" ] ; then
|
if [ "$VERBOSE" == "true" ] ; then
|
||||||
|
## Build the message's subject
|
||||||
|
SUBJECT="[$NOTIFICATIONTYPE] Host $HOSTDISPLAYNAME is $HOSTSTATE!"
|
||||||
logger "$PROG sends $SUBJECT => Telegram Channel $TELEGRAM_BOT"
|
logger "$PROG sends $SUBJECT => Telegram Channel $TELEGRAM_BOT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -90,27 +90,61 @@ do
|
||||||
esac
|
esac
|
||||||
done
|
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
|
## Build the message itself
|
||||||
NOTIFICATION_MESSAGE=$(cat << EOF
|
NOTIFICATION_MESSAGE=$(cat << EOF
|
||||||
[$SERVICESTATE] $SERVICEDISPLAYNAME is $SERVICESTATE since $LONGDATETIME
|
$SERVICESTATEICON <b>$SERVICEDISPLAYNAME</b> is ${SERVICESTATE}$age
|
||||||
Host: $HOSTALIAS (IPv4 $HOSTADDRESS)
|
Host: <b>$HOSTALIAS</b> (IPv4 <code>$HOSTADDRESS</code>
|
||||||
More info: $SERVICEOUTPUT
|
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
||||||
## Is this host IPv6 capable?
|
## Is this host IPv6 capable?
|
||||||
if [ -n "$HOSTADDRESS6" ] ; then
|
if [ -n "$HOSTADDRESS6" ] ; then
|
||||||
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE, IPv6 <code>$HOSTADDRESS6</code>"
|
||||||
IPv6? $HOSTADDRESS6"
|
|
||||||
fi
|
fi
|
||||||
|
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE)"
|
||||||
|
|
||||||
|
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
||||||
|
More info: $SERVICEOUTPUT"
|
||||||
|
|
||||||
## Are there any comments? Put them into the message!
|
## Are there any comments? Put them into the message!
|
||||||
if [ -n "$NOTIFICATIONCOMMENT" ] ; then
|
if [ -n "$NOTIFICATIONCOMMENT" ] ; then
|
||||||
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
||||||
|
|
||||||
Comment by $NOTIFICATIONAUTHORNAME:
|
Comment by $NOTIFICATIONAUTHORNAME:
|
||||||
$NOTIFICATIONCOMMENT"
|
$NOTIFICATIONCOMMENT"
|
||||||
fi
|
fi
|
||||||
|
@ -118,12 +152,12 @@ fi
|
||||||
## Are we using Icinga Web 2? Put the URL into the message!
|
## Are we using Icinga Web 2? Put the URL into the message!
|
||||||
if [ -n "$HAS_ICINGAWEB2" ] ; then
|
if [ -n "$HAS_ICINGAWEB2" ] ; then
|
||||||
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
NOTIFICATION_MESSAGE="$NOTIFICATION_MESSAGE
|
||||||
Get live status:
|
<a href='$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS'>$HAS_ICINGAWEB2</a>"
|
||||||
$HAS_ICINGAWEB2/monitoring/host/show?host=$HOSTALIAS"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Are we verbose? Then put a message to syslog...
|
## Are we verbose? Then put a message to syslog...
|
||||||
if [ "$VERBOSE" == "true" ] ; then
|
if [ "$VERBOSE" == "true" ] ; then
|
||||||
|
SUBJECT="[$NOTIFICATIONTYPE] $SERVICEDISPLAYNAME on $HOSTDISPLAYNAME is $SERVICESTATE!"
|
||||||
logger "$PROG sends $SUBJECT => Telegram Channel $TELEGRAM_BOT"
|
logger "$PROG sends $SUBJECT => Telegram Channel $TELEGRAM_BOT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue