REST-API-Beispiele
Der folgende Abschnitt enthält Bash-Skript-Beispiele für die Durchführung von Aktionen mit der SKOOR REST API mit dem Dienstprogramm curl. Die meisten Eingaben und Ausgaben sind in JSON formatiert. Zur besseren Lesbarkeit wurde in einigen der Beispiele der JSON-Parser jq verwendet, der aus den üblichen Redhat- oder CentOS-Repositories installiert werden kann.
Bash-Skript-Header
Allgemeine Parameter, die als Bash-Skript-Header für die folgenden Skript-Beispiele gesetzt werden müssen (USER und PASSWORD müssen an einen echten SKOOR-Benutzer angepasst werden):
#!/bin/bash HOST=reltest USER=admin PASSWORD=admin
Beispiele für Anfragen
Die Anfragen und Anfragerümpfe in den unten stehenden Beispielen können so kopiert und eingefügt werden, wie sie sind, mit Ausnahme der Objekt-IDs , die durch vorhandene ersetzt werden müssen auf dem System, auf dem die Anfragen ausgeführt werden. Teile der Anfragekörper müssen angegeben werden, auch wenn sie keine sinnvollen Werte für die Erstellung oder Aktualisierung von Objekten enthalten.
Die meisten Datums- und Zeitangaben in den Anfragen müssen im ISO 8601-Format und im Dauerformat angegeben werden
SKOOR-Sitzung
Melden Sie sich bei SKOORan:
SESSION_ID=$(curl --silent -k "https://$HOST/skoor-webservice/session/login?username=$USER&password=$PASSWORD" | jq -r '.sessionId') >/dev/null
Bitte melden Sie sich immer ab, wenn alle Anfragen erledigt sind. Die Sitzungen bleiben sonst 24 Stunden lang offen.
Abmelden:
curl -k "https://$HOST/skoor-webservice/session/logout?sessionId=$SESSION_ID"
Benutzer
Abfrage aller SKOOR-Benutzer und Parsen von Namen und Rollen mit jq:
curl --silent -k "https://$HOST/skoor-webservice/users?&sessionId=$SESSION_ID" | jq -r '.[] | "\(.name) \(.role)"'
Gruppen
Abfrage einer bestimmten Gruppe mit der ID 495:
curl -k -X GET "https://$HOST/skoor-webservice/groups/495?sessionId=$SESSION_ID"
Abfrage einer Gruppe mit einem URL-kodierten Suchfilter. Das Ergebnis sollte alle Gruppen unterhalb der übergeordneten Gruppennummer 207 enthalten .
Ursprünglicher Suchfilter: Gruppen mit einer id ungleich 207:
{"type":"group","mode": "and","conditions": [{"item":"id","operator": "ne","expression":"207"}]}
URL-kodierter Suchfilter (die Kodierung/Dekodierung kann über einen SKOOR-HTTP-Auftrag oder einen der zahlreichen Dienste im Internet erfolgen):
%7B%22type%22%3A%22group%22%2C%22mode%22%3A%20%22and%22%2C%22conditions%22%3A%20%5B%7B%22item%22%3A%22id%22%2C%22operator%22%3A%20%22ne%22%2C%22expression%22%3A%22207%22%7D%5D%7D
Abfrage:
curl -k -X GET "https://$HOST/skoor-webservice/groups/207/search?filterDefinition=%7B%22type%22%3A%22group%22%2C%22mode%22%3A%20%22and%22%2C%22conditions%22%3A%20%5B%7B%22item%22%3A%22id%22%2C%22operator%22%3A%20%22ne%22%2C%22expression%22%3A%22207%22%7D%5D%7D&sessionId=$SESSION_ID"
Geräte
Abfrage des Geräts mit der ID 383:
curl -k -X GET "https://$HOST/skoor-webservice/devices/383?sessionId=$SESSION_ID"
Anlegen eines Gerätes unterhalb der Gruppe mit der ID 308:
Abfragekörper für ein Gerät vom Subtyp Server mit dem Namen SKOOR Server. Setzen Sie den Standardkollektor auf Id 2, der der lokale Kollektor ist:
DEVICE_BODY='{ "type": "device", "subType": "server", "name": "SKOOR Server", "address": "", "netmask": "", "deviceName": "localhost", "properties": [], "parameter": {}, "permissions": { "read": true, "write": true, "execute": true }, "isTemplate": false, "instanceType": "sub", "collectorId": 2, "hasChildren": false }'
Anfrage:
echo $DEVICE_BODY | curl -s -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/devices?parentType="group"&parentId="308"&sessionId=$SESSION_ID"
Erstellen Sie eine Geräteinstanz aus einer Vorlage unterhalb der Gruppe mit der ID 332. Zu diesem Zweck wird die Kopiermethode der REST-API verwendet. Die Geräte-ID (180 im Beispiel) muss auf die ID der Gerätevorlage gesetzt werden :
curl -k -X POST "https://$HOST/skoor-webservice/devices/180/copy?destinationName="rest-test"&destinationAddress="localhost"&parentType="group"&parentId=332&destinationType="instance"&collectorId=2&jobsStopped=false&sessionId=$SESSION_ID"
Löschen Sie das Gerät mit der ID 558:
Gelöschte Objekte können nur aus einem Konfigurations-Backup wiederhergestellt werden!
curl -k -X DELETE "https://localhost/skoor-webservice/devices/558?recursive=true&sessionId=$SESSION_ID"
Aufträge
Abfrage der Job-ID 1675 mit Schwellenwerten und Werten:
curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1675?thresholds=true&values=true&sessionId=$SESSION_ID"
Suche nach einem Auftrag mit einem Suchfilter.
URL-kodierter Suchfilter für die Suche nach Aufträgen unterhalb der Gruppe mit der ID 216, die eine benutzerdefinierte Eigenschaft mit dem Schlüssel test_property auf den Wert abc gesetzt haben :
curl -ks -X GET "https://$HOST/skoor-webservice/groups/216/search?filterDefinition=%7B%22type%22%3A%22job%22%2C%22mode%22%3A%22and%22%2C%22conditions%22%3A%5B%7B%22item%22%3A%22property_key%22%2C%22operator%22%3A%22eq%22%2C%22expression%22%3A%22abc%22%2C%22propertyKey%22%3A%22test_property%22%7D%5D%7D&sessionId=$SESSION_ID"
Klartext-Suchfilter für Aufträge des Subtyps webcollector unterhalb der Gruppe 310, wobei das Ergebnis mit jq geparst wird:
curl -ks -X GET -G "https://$HOST/skoor-webservice/groups/310/search?sessionId=$SESSION_ID" --data-urlencode "filterDefinition={\"type\":\"job\",\"mode\":\"and\",\"conditions\":[{\"item\":\"subType\",\"operator\":\"eq\",\"expression\":\"webcollector\"}]}" | jq -r '.items[] | "\(.deviceName) \(.name) \(.id)"'
Erstellen Sie einen Auftrag unter der Geräte-ID 555:
Anfragekörper für einen Job des Subtyps webcollector mit dem Namen TEST erzeugt und drei Rückgabewerte. Erstellen Sie den Job unter dem Gerät mit der Id 555. Das Ausführungsintervall wird auf 0 Sekunden gesetzt (PT0S: kein Intervall):
JOB_BODY='{ "type": "job", "name": "TEST generated", "deviceId": 555, "subType": "webcollector", "interval": "PT0S", "stopped": false, "parameters": { "intervalMode": 0, "filename": "", "returnValue": [ { "valueName": "Return value 1" }, { "valueName": "Return value 2" }, { "valueName": "Return value 3" } ] }, "isTemplate": false, "properties": [], "permissions": { "read": true, "write": true, "execute": true }, "instanceType": "none", "stateForced": false, "thresholds": null, "values": null, "message": null }'
Anfrage:
echo $JOB_BODY | curl -s -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/jobs?parentType="device"&parentId="555"&sessionId=$SESSION_ID"
Aktualisiere Job mit Id 1608:
Request body für den Job mit der Id 1608 auf dem Gerät mit der Id 555. Setzen Sie Schwellenwerte für diesen Job:
JOB_BODY_UPDATE='{ "type": "job", "id": 1608, "name": "Richmond", "deviceId": 555, "deviceName": "TEST generated device", "subType": "webcollector", "interval": "PT0S", "stopped": false, "parameters": { "intervalMode": 0, "filename": "", "returnValue": [ { "valuePrecision": 3, "valueName": "myValue" } ] }, "isTemplate": false, "properties": [], "permissions": { "read": true, "write": true, "execute": true }, "instanceType": "none", "currentState": "ok", "stateForced": false, "thresholds": { "major": { "mode": "or", "conditions": [ { "key": "returnValue1", "operator": ">", "value": 60.0, "repetition": 1, "inFuture": null, "adaptiveValues": null } ] } }, "values": {}, "message": null, "collectorId": 2 }'
Abfrage:
echo $JOB_BODY_UPDATE | curl -s -k -X PUT -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/jobs/1608?sessionId=$SESSION_ID"
Job mit der ID 1605stoppen/starten :
curl -ks -X GET -G "https://$HOST/skoor-webservice/jobs/1605?sessionId=$SESSION_ID" | jq -r '.stopped = false' | curl -s -k -X PUT -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/jobs/1605?sessionId=$SESSION_ID"
Abfrage der Werte Historie von Job id 1326:
Datums- und Zeitangaben müssen im ISO 8601-Format und im Dauerformat angegeben werden
curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1326/value-history?timestamp_begin=2018-04-16T08%3A00%3A00Z×tamp_end=2018-04-16T10%3A00%3A00Z&scale=PT10M&key=returnValue1&mode=avg&values=true&sessionId=$SESSION_ID"
SLC
Abfrage der SLC Status Historie mit id 6:
curl -k -X GET "https://$HOST/skoor-webservice/slcs/6/state-history?timestamp_begin=2017-10-01T00:00%2B01:00×tamp_end=2017-12-12T23:59%2B01:00&recalc=true&sessionId=$SESSION_ID"
SLO
Abfrage von SLO mit id 116:
curl -k -X GET "https://$HOST/skoor-webservice/slos/116?sessionId=$SESSION_ID"
Abfrage der Status-Historie von SLO mit id 116:
curl -k -X GET "https://$HOST/skoor-webservice/slos/116/state-history?timestamp_begin=2018-01-01T00:00%2B01:00×tamp_end=2018-12-12T23:59%2B01:00&recalc=true&sessionId=$SESSION_ID"
Abfrage der untergeordneten Objekte von SLO mit id 176:
curl -k -X GET "https://$HOST/skoor-webservice/slos/176/children?sessionId=$SESSION_ID"
SLO unterhalb der Gruppe id 296erstellen :
Request body für ein SLO vom Subtyp top mit dem Namen TEST SLO:
SLO_BODY='{ "type": "slo", "subType": "top", "name": "TEST SLO", "deviceId": 0, "deviceName": "", "stateOperation": "and", "pushState": "any", "sortMode": "link", "warning": 0, "minor": 0, "major": 0, "minorWarning": 0, "minorMinor": 0, "warningWarning": 0, "isTemplate": false, "ignoreMaintenance": true, "isReason": true, "properties": [], "parameters": { "children": 0, "costsPerMin": 0, "currency": "", "riskFactor": 0 }, "permissions": { "read": true, "write": true, "execute": true }, "instanceType": "none" }'
Anfrage:
echo $SLO_BODY | curl -s -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/slos?parentType=group&parentId=296&sessionId=$SESSION_ID"
SLO-Instanz aus SLO-Vorlage mit id 179erstellen. SLO-Name wird rest-test-slo sein und übergeordnetes Objekt wird das slo mit id 177 sein :
curl -k -X POST "https://$HOST/skoor-webservice/slos/179/copy?destinationName=rest-test-slo_1&parentType=slo&parentId=177&destinationType=instance&sessionId=$SESSION_ID"
Ausfälle
Abfrage der Ausfälle zwischen 2019-02-21T09:00+01:00 und 2019-03-21T23:59+01:00 (URL kodiert). Standard ist eine Mindestdauer von 10 Minuten (PT10M) und nur Major-Status:
curl -k -X GET "https://$HOST/skoor-webservice/devices/383/outages?begin=2019-02-21T09:00%2B01:00&end=2019-03-21T23:59%2B01:00&recalc=false&sessionId=$SESSION_ID"
Neubewertungen
Abfrage von Aufwertungen der Gruppe 207 ab 2019-04-01T00:00:00Z:
curl -k -X GET "https://$HOST/skoor-webservice/groups/207/revaluations?begin=2019-04-01T00:00:00Z&sessionId=$SESSION_ID"
Hinzufügen einer Neubewertung zur Gruppe 207:
Die Parameter Beginn und Ende müssen in UTC gefolgt von der Zeitzone Z oder +00:00 oder der Ortszeit gefolgt von der Zeitzone (z.B. +02:00) angegeben werden. Der Zeitzonenparameter wirkt sich nur auf das Zeitfeld aus
Wenn die Anfangszeit des Parameters nicht mit der Anfangszeit des Zeitfeldes übereinstimmt, wird die Wartung nur im Bearbeitungsmodus angezeigt (Aufwertung bearbeiten). Bitte beachten Sie, dass MET automatisch zwischen Sommer- und Winterzeit unterscheidet. Setzen Sie in diesem Fall die Anfangszeit auf die Ortszeit
Anfragekörper für eine einmalige Umwertung von 2019-04-13T07:20:00Z bis 2019-04-13T08:20:00Z:
REVALUATION_BODY='{ "begin": "2019-04-13T07:20:00Z", "end": "2019-04-13T08:20:00Z", "created": null, "type": "maintenance", "adjustTo": "undefined", "inPast": null, "incident": null, "name": "Test-Maintenance", "active": [ { "type": "one_time", "name": null, "timezone": "UTC", "times": [ { "begin": "07:20", "duration": "PT1H", "date": "2019-04-13" } ], "exception": false } ] }'
Anfrage:
echo $REVALUATION_BODY | curl -k -X POST -H "Content-Type: application/json" -d @- "https://$HOST/skoor-webservice/groups/207/revaluations?sessionId=$SESSION_ID"