REST-API-Beispiele
Der folgende Abschnitt enthält Beispiele für Bash-Skripte, die zeigen, wie Sie mit dem Dienstprogramm curl Aktionen über die SKOOR-REST-API ausführen können. Die meisten Ein- und Ausgaben sind im JSON-Format. Aus Gründen der 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 müssen (USER und PASSWORD müssen an einen echten SKOOR-Benutzer angepasst werden):
#!/bin/bash HOST=reltest USER=admin PASSWORD=admin
Beispielanfragen
Die Anfragen und Anfrage-Body in den folgenden Beispielen können unverändert kopiert und eingefügt werden, mit Ausnahme der Objekt-IDs, die durch die im System, in dem die Anfragen ausgeführt werden, vorhandenen IDs ersetzt werden müssen. Teile der Anfrage-Body müssen angegeben werden, auch wenn sie keine aussagekräftigen Werte für die Objekterstellung oder -aktualisierung enthalten.
Die meisten Datums- und Zeitangaben in den Anfragen müssen im ISO 8601-Format und im Dauerformat angegeben werden.
SKOOR-Sitzung
Anmeldung bei SKOOR:
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 bleiben die Sitzungen 24 Stunden lang geöffnet.
Abmelden:
curl -k "https://$HOST/skoor-webservice/session/logout?sessionId=$SESSION_ID"
Benutzer
Alle SKOOR-Benutzer abfragen und Namen und Rollen mit jq analysieren:
curl --silent -k "https://$HOST/skoor-webservice/users?sessionId=$SESSION_ID" | jq -r '.[] | "\(.name) \(.role)"'
Gruppen
Eine bestimmte Gruppe mit der ID 495 abfragen:
curl -k -X GET "https://$HOST/skoor-webservice/groups/495?sessionId=$SESSION_ID"
Abfrage einer Gruppe mithilfe eines URL-kodierten Suchfilters. 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 (die Kodierung/Dekodierung kann mit einem SKOOR-HTTP-Job oder einem von mehreren Diensten im Internet durchgeführt werden):
%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"
Erstellen Sie ein Gerät unterhalb der Gruppe mit der ID 308:
Anfragetext für ein Gerät des Subtyps Server mit dem Namen SKOOR Server. Setzen Sie den Standard-Kollektor auf Id 2, den lokalen Kollektor:
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. Dazu 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"
Aufträge
Abfrage des Auftrags mit der ID 1675 mit Schwellenwerten und Werten:
curl -ks -X GET "https://$HOST/skoor-webservice/jobs/1675?thresholds=true&values=true&sessionId=$SESSION_ID"
Suchen Sie einen Job mithilfe eines Suchfilters.
URL-kodierter Suchfilter zum Suchen nach Jobs unterhalb der Gruppe mit der ID 216, die eine benutzerdefinierte Eigenschaft mit dem Schlüssel test_property haben, der 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"
Einfacher 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 unterhalb der Geräte-ID 555:
Anfragetext für einen Job des Subtyps „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 (PT0S: kein Intervall) festgelegt:
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:
Anfragetext 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 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"
Werteverlauf von Job-ID 1326 abfragen:
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 des SLC-Statusverlaufs 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 SLO mit ID 116:
curl -k -X GET "https://$HOST/skoor-webservice/slos/116?sessionId=$SESSION_ID"
Abfrage des Statusverlaufs 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"
Abfrage der untergeordneten Objekte von SLO-ID 176:
curl -k -X GET "https://$HOST/skoor-webservice/slos/176/children?sessionId=$SESSION_ID"
Erstellen Sie SLO unterhalb der Gruppen-ID 296:
Anfragetext für ein SLO des Subtyps „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 lautet „rest-test-slo“ und das übergeordnete Objekt ist die 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
Abfrage von Ausfällen zwischen 2019-02-21T09:00+01:00 und 2019-03-21T23:59+01:00 (URL-kodiert). Standardmäßig ist eine Mindestdauer von 10 Minuten (PT10M) und nur der Major-Status festgelegt:
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 der Neubewertungen 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"
Fügen Sie eine Neubewertung zur Gruppen-ID 207 hinzu:
Die Parameter „begin“ und „end“ 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 Parameter „timezone“ wirkt sich nur auf das Array „times“ aus.
Wenn die Zeit des Startparameters nicht mit der Startzeit des Zeit-Arrays übereinstimmt, wird die Wartung nur im Bearbeitungsmodus angezeigt (Neubewertung bearbeiten). Bitte beachten Sie, dass MET automatisch zwischen Sommer- und Winterzeit unterscheidet. Stellen Sie in diesem Fall die Startzeit auf die Ortszeit ein
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"