REST-API-Beispiele
Der folgende Abschnitt enthält Bash-Skriptbeispiele zur Ausführung von Aktionen mithilfe der SKOOR-REST-API mit dem Curl -Dienstprogramm. Die meisten Eingaben 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-Repositories installiert werden kann.
Header des Bash-Skripts
Allgemeine Parameter, die als Bash-Skript-Header für die folgenden Skriptbeispiele festgelegt werden müssen (BENUTZER und PASSWORT müssen an einen echten SKOOR-Benutzer angepasst werden):
#!/bin/bash HOST=reltest USER=admin PASSWORD=admin
Beispiele anfordern
Die Anforderungen und Anforderungstexte 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 durchgeführt. Teile der Anforderungstexte müssen bereitgestellt werden, obwohl sie keine aussagekräftigen Werte für die Objekterstellung oder -aktualisierung enthalten.
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. Andernfalls werden die Sitzungen 24 Stunden lang offen gehalten
Ausloggen:
curl -k "https://$HOST/skoor-webservice/session/logout?sessionId=$SESSION_ID"
Benutzer
Fragen Sie alle SKOOR - Benutzer ab und parsen 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 mit einem URL-codierten Suchfilter 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-codierter Suchfilter (Codierung/Decodierung kann mit einem SKOOR-HTTP-Job oder einem 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
Anfrage:
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 ID 383 abfragen:
curl -k -X GET "https://$HOST/skoor-webservice/devices/383?sessionId=$SESSION_ID"
Erstellen Sie ein Gerät unterhalb der Gruppe mit der ID 308 :
Anforderungstext für ein Gerät des Untertyps 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 mit einer benutzerdefinierten Eigenschaft, deren 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 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 Job unter der Geräte-ID 555 :
Anforderungstext für einen Job vom Subtyp webcollector mit dem Namen TEST generiert 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 ID 1608 aktualisieren :
Anforderungstext für den Job mit der ID 1608 auf der Geräte-ID 555 . Schwellenwerte für diesen Job festlegen:
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 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 ID 116 abfragen:
curl -k -X GET "https://$HOST/skoor-webservice/slos/116?sessionId=$SESSION_ID"
Abfragestatusverlauf von SLO - 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"
Untergeordnete Objekte der SLO-ID 176 abfragen:
curl -k -X GET "https://$HOST/skoor-webservice/slos/176/children?sessionId=$SESSION_ID"
Erstellen Sie SLO unter der Gruppen-ID 296:
Anforderungstext für ein SLO vom Untertyp 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). Standard ist eine Mindestdauer von 10 Minuten (PT10M) und nur Hauptzustand:
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
Query Neubewertungen 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 Start- 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 Zeitarray aus
Wenn die Startzeit des Parameters nicht mit der Startzeit des Zeitarrays übereinstimmt, wird die Wartung nur im Bearbeitungsmodus (Umwertung bearbeiten) angezeigt.
Anfragetext für eine einmalige Neubewertung 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"