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&timestamp_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&timestamp_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&timestamp_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"