REST-API-Beispiele
Der folgende Abschnitt enthält Bash-Skriptbeispiele zum Ausführen von Aktionen mithilfe der SKOOR REST-API mit dem Curl- Dienstprogramm. Die meisten Ein- und Ausgaben sind in JSON formatiert. Zur besseren Lesbarkeit wurde in einigen Beispielen der JSON-Parser jq verwendet, der aus den gängigen Redhat- oder CentOS-Repositorys installiert werden kann.
Bash-Skript-Header
Allgemeine Parameter, die als Bash-Skript-Header für die folgenden Skriptbeispiele festgelegt werden sollen (BENUTZER und PASSWORT müssen an einen echten SKOOR-Benutzer angepasst werden):
#!/bin/bash HOST=reltest USER=admin PASSWORD=admin
Fordern Sie Beispiele an
Die Anfragen und Anfragetexte in den folgenden Beispielen können unverändert kopiert und eingefügt werden, mit Ausnahme der Objekt-IDs , die durch vorhandene ersetzt werden müssen Auf dem System werden die Anfragen ausgeführt. Teile der Anforderungstexte müssen bereitgestellt werden, enthalten jedoch keine aussagekräftigen Werte für die Objekterstellung oder -aktualisierung.
Die meisten Datums- und Uhrzeitinformationen in den Anfragen müssen im ISO 8601-Format und im Dauerformat bereitgestellt werden
SKOOR-Sitzung
Melden Sie sich bei SKOOR an :
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, nachdem alle Anfragen erledigt sind. Ansonsten bleiben die Sitzungen 24 Stunden lang geöffnet
Ausloggen:
curl -k "https://$HOST/skoor-webservice/session/logout?sessionId=$SESSION_ID"
Benutzer
Fragen Sie alle SKOOR- Benutzer ab und analysieren Sie Namen und Rollen mit jq:
curl --silent -k "https://$HOST/skoor-webservice/users?&sessionId=$SESSION_ID" | jq -r '.[] | "\(.name) \(.role)"'
Gruppen
Fragen Sie eine bestimmte Gruppe mit der ID 495 ab:
curl -k -X GET "https://$HOST/skoor-webservice/groups/495?sessionId=$SESSION_ID"
Fragen Sie eine Gruppe mithilfe eines URL-codierten Suchfilters ab. Das Ergebnis sollte alle Gruppen unterhalb der übergeordneten Gruppen-ID 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 (Kodierung/Dekodierung kann über einen SKOOR-HTTP-Job oder einen von mehreren Diensten 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
Gerät mit der ID 383 abfragen:
curl -k -X GET "https://$HOST/skoor-webservice/devices/383?sessionId=$SESSION_ID"
Erstellen Sie unterhalb der Gruppe ein Gerät mit der ID 308 :
Anforderungstext für ein Gerät vom Subtyp Server mit dem Namen SKOOR Server . Setzen Sie den Standard- Kollektor auf die ID 2 , die 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 . Um dies zu erreichen, wird die Kopiermethode der REST-API verwendet. Die Geräte-ID (im Beispiel 180 ) 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 der Konfigurationssicherung wiederhergestellt werden!
curl -k -X DELETE "https://localhost/skoor-webservice/devices/558?recursive=true&sessionId=$SESSION_ID"
Arbeitsplätze
Job-ID 1675 mit Schwellenwerten und Werten abfragen :
curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1675?thresholds=true&values=true&sessionId=$SESSION_ID"
Suchen Sie mithilfe eines Suchfilters nach einem Job .
URL-codierter Suchfilter zum Suchen nach Jobs unterhalb der Gruppe mit der ID 216 , die über eine benutzerdefinierte Eigenschaft verfügen, wobei der Schlüssel test_property auf den Wert abc gesetzt ist:
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"
Nur-Text-Suchfilter für Jobs des Untertyps Webcollector unter Gruppe 310 mit mit jq analysierten Ergebnissen:
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 Job unter der Geräte-ID 555 :
Anforderungstext für einen Job vom Subtyp „ Webcollector“ mit dem Namen „TEST“ und drei Rückgabewerten. 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"
Job mit der ID 1608 aktualisieren :
Fordern Sie den Text für den Job mit der ID 1608 auf der Geräte-ID 555 an. Legen Sie Schwellenwerte für diesen Job fest:
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 }'
Anfrage:
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 1605 stoppen/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"
Abfragewertverlauf der Job-ID 1326:
Datums- und Uhrzeitinformationen müssen im ISO 8601-Format und im Dauerformat bereitgestellt 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
SLC-Statusverlauf mit ID 6 abfragen:
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
SLO mit der ID 116 abfragen :
curl -k -X GET "https://$HOST/skoor-webservice/slos/116?sessionId=$SESSION_ID"
Statusverlauf der SLO-ID 116 abfragen:
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"
Untergeordnete Objekte der SLO-ID 176 abfragen :
curl -k -X GET "https://$HOST/skoor-webservice/slos/176/children?sessionId=$SESSION_ID"
Erstellen Sie ein SLO unter der Gruppen-ID 296:
Anforderungstext 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"
Erstellen Sie eine SLO- Instanz aus der SLO- Vorlage mit der ID 179 . Der SLO-Name ist rest-test-slo und das übergeordnete Objekt ist das SLO mit der ID 177 :
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
Abfrageausfälle zwischen 2019-02-21T09:00+01:00 und 2019-03-21T23:59+01:00 (URL-codiert). Standardmäßig beträgt die Mindestdauer 10 Minuten (PT10M) und nur der Hauptstatus:
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
Abfrageumwertungen der Gruppe 207 vom 01.04.2019T00:00:00Z:
curl -k -X GET "https://$HOST/skoor-webservice/groups/207/revaluations?begin=2019-04-01T00:00:00Z&sessionId=$SESSION_ID"
Fügen Sie der Gruppen-ID 207 eine Neubewertung hinzu:
Die Anfangs- und Endparameter müssen in UTC gefolgt von der Zeitzone Z oder +00:00 oder der Ortszeit gefolgt von der Zeitzone (z. B. +02:00 ) eingestellt werden. Der Zeitzonenparameter wirkt sich nur auf das Times- Array aus
Wenn die Startzeit des Parameters time nicht mit der Startzeit des Times- Arrays übereinstimmt, wird die Wartung nur im Bearbeitungsmodus (Umwertung bearbeiten) angezeigt. Bitte beachten Sie, dass MET automatisch zwischen Sommer- und Winterzeit unterscheidet. Stellen Sie in diesem Fall die Startzeit auf die Ortszeit ein
Anforderungshauptteil für eine einmalige Neubewertung vom 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"