Mit diesem BASH Script kann man SSL Zertifikate im PEM Format mit Hilfe von Check_MK Monitoring überprüfen. Dazu erstellen Sie das Script im Verzeichnis /usr/lib/check_mk_agent/local/. Der Check prüft die Laufzeit der Letsencrypt Zertifikate.
vim /usr/lib/check_mk_agent/local/check_certificates.sh
#!/bin/bash
# Plugin Return Codes
# = 0 OK
# = 1 Warning
# = 2 Critical
# = 3 Unknown
#
DIR=/etc/letsencrypt/live/*/
FILTER=$DIR/cert.pem
function output {
NAME=$(basename $1)
DATE=$(date --date="$2" --iso-8601)
SUBJECT=$3
TODAY=$(date +%s)
DATE_I=$(date -d ${DATE} +%s)
EXPIRATION=$((15 * 24 * 60 * 60)) # 15 days
if [[ -z $SUBJECT ]] ; then
STATUS=3
STATUS_TEXT="UNKNOWN"
TEXT="Empty subject value"
elif [ ${TODAY} -gt ${DATE_I} ] ; then
STATUS=2
STATUS_TEXT="CRITICAL"
TEXT="Certificate has expired since ${DATE}"
elif [[ $(expr $TODAY + $EXPIRATION) -gt ${DATE_I} ]] ; then
STATUS=1
STATUS_TEXT="WARNING"
TEXT="Certificate will expire on ${DATE}"
else
STATUS=0
STATUS_TEXT="OK"
TEXT="Certificate will expire on ${DATE}"
fi
echo "${STATUS:-1} Certificate_${SUBJECT} Date=${DATE}; Check(${STATUS_TEXT}) - ${TEXT} - ${SUBJECT}"
}
function check {
FILE=$1
DATE=$(cat ${FILE} |openssl x509 -noout -enddate|cut -d= -f2-)
SUBJECT=$(cat ${FILE} |openssl x509 -noout -subject|cut -d= -f3-)
output "$FILE" "$DATE" "$SUBJECT"
}
for FILE in $FILTER;
do
# take action on each certificate file.
check "$FILE"
done
2. März 2021 — 16:20
Hallo,
danke für das Script. Auf der CLI funktioniert das soweit problemlos nur im aktuellen check_mk gibt es das Problem:
UNKN – Invalid performance data
Hast Du vielleicht eine Idee wie man das beheben könnte?
Grüße Mike