… aber hat von euch mal einere, eine ping Funktion in einem SNMP check eingebaut?
Hintergrund … ich frage einen WLC controller ab der gibt mir die APs mit allen möglichen Informationen zurück nun würde ich die APs gerne automatisch anpingen sprich automatisch die IP des AP`s und das ganz als perfometer ausgeben.
Gerne auch als Extra Services dann könnte ich die Abfrage Zeiten variieren.
manuelle Pings kannst du bei den Aktiven Checks einstellen, das ist kein Problem. Schwerer aber, dass du dies automatisch für alle Services machst, die ein Host liefert.
Der einzige Weg, der mir hier einfällt, ist über die API. Erst die Services abfragen, die Hostnamen aus den Servicenamen extrahieren, und dann ein paar Calls welche die Servicekonfiguration anlegt bzw. Überflüssige löscht. Das kann auch der CMDB Syncer, ist aber bissel mit Kanonen auf Spatzen. Eventuell bietet sich ein kleines Script da an. Oder jemand hat sogar eine bessere Idee.
#!/bin/bash
# NOTE: We recommend all shell users to use the "httpie" examples instead.
# `curl` should not be used for writing large scripts.
# This code is provided for debugging purposes only.
HOST_NAME="localhost"
SITE_NAME="test"
PROTO="http" #[http|https]
API_URL="$PROTO://$HOST_NAME/$SITE_NAME/check_mk/api/1.0"
USERNAME="api-user"
PASSWORD="geheim"
curl \
--get \
--write-out "\nxxx-status_code=%{http_code}\n" \
--header "Authorization: Bearer $USERNAME $PASSWORD" \
--header "Accept: application/json" \
--data-urlencode 'service_description=AP APX-XXXXXX' \
"$API_URL/objects/host/wlc-extreme-master/actions/show_service/invoke"
könnte man den SNMP check nicht auch so schreiben, dass er piggyback Daten für die WLCs erzeugt, deren Hosts du dann über den Dynamic Configuration Deamon automatisch anlegen lässt ?
SNMP kann wohl leider keine piggback Daten direkt erzeugen, d.h. man müsste einen special agent schreiben, der die Daten der APs per SNMP am WLC abholt und diese dann für jeden AP einzeln ausgibt.
Daraus kannst du dann die Hosts automatisch erstellen lassen.
Ich denke es braucht nicht mal einen Special agent, ein simples script
per Individual program call instead of agent access welches piggyback sectionen pro AP erzeugt und eine DCD connection, die die dann in einem Folder anlegt auf dem ein active ping check configuriert ist reicht.
Ich nehme da gelegentlich einfach ein bash script mit einem curl mit --netrc für die credentials eines read-only accounts, und timeout und connect timeout von ca 5 Sekunden um Daten zu beschaffen.
Das dann per Poperties of host > Monitoring agents > Checkmk agent / API integrations zusätzlich zum SNMP am WLC aktivieren, oder an einen extra piggyback source dummy host hängen.
Das Individual program call instead of agent access script muss dann eine AP liste
per API, snmp oder was auch immer besorgen und darüber iterieren.
Ich habe aber festgestellt, das eine leere piggyback host section nicht
ausreicht, daher gebe ich einfach eine label section mit aus hier dcd:true
OMD[mysite]:~$ cat local/bin/piggyback-producer.sh
#!/usr/bin/env bash
# first parameter $1 is $HOSTNAME$ passed by checkmk
# $1 is the hostname of the API that gives us a list of piggyback hosts
apihost=$1
# one always OK service for myself
cat <<EOT
<<<local:sep(0)>>>
0 "health" - healthy
EOT
# get the data of the piggyback hosts
# login credentials are in ~/.netrc
curl \
--silent \
--netrc \
--connect-timeout 5 \
--max-time 10 \
"https://${apihost}:443/rest/api/v1/getalldevices?filter=prod&another=param" |
jq -r '.results[].hostname' |
while read host; do
cat <<EOT
<<<<${host}>>>>
<<<labels:sep(0)>>>
{"dcd":"true"}
<<<<>>>>
EOT
done