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. 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

Anforderungsbeispiele

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 Anfragetexte müssen bereitgestellt werden, enthalten jedoch keine sinnvollen Werte für die Objekterstellung oder -aktualisierung.

Die meisten Datums- und Zeitangaben in den Anfragen müssen im ISO 8601-Format und im Zeitdauerformat angegeben 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. Die Sitzungen bleiben andernfalls 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

Abfrage einer bestimmten Gruppe mit der ID 495:

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 mithilfe eines SKOOR-HTTP-Jobs oder eines 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 ID 383 abfragen:

curl -k -X GET "https://$HOST/skoor-webservice/devices/383?sessionId=$SESSION_ID"

Erstellen Sie unterhalb der Gruppe mit der ID 308 ein Gerät :

Anforderungstext für ein Gerät vom Untertyp Server mit dem Namen SKOOR Server . Setzen Sie den Standard- Kollektor auf die 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"

Erstellt 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 einem Konfigurations-Backup wiederhergestellt werden!

curl -k -X DELETE "https://localhost/skoor-webservice/devices/558?recursive=true&sessionId=$SESSION_ID"

Arbeitsplätze

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"

Suchen Sie mithilfe eines Suchfilters nach einem Job .

URL-codierter 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"

Suchfilter im Klartext für Jobs des Untertyps „ Webcollector“ unterhalb der Gruppe 310 mit mithilfe von jq analysiertem Ergebnis:

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"

Update-Auftrag mit der ID 1608 :

Anforderungstext für den Job mit der ID 1608 auf der Geräte-ID 555. 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"

Werteverlauf der Job-ID 1326 abfragen:

Datums- und Zeitangaben müssen im ISO 8601-Format und im Zeitdauerformat 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

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

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&timestamp_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 lautet „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 ist eine Mindestdauer von 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

Abfrage der Neubewertungen der Gruppe 207 vom 01.04.2019, 00:00:00 UhrZ:

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 Parameter begin und end müssen in UTC angegeben werden, gefolgt von der Zeitzone Z oder +00:00 oder der Ortszeit gefolgt von der Zeitzone (z. B. +02:00 ). Der Parameter timezone betrifft nur das times- Array.

Wenn die Startzeit des Parameters nicht mit der Startzeit des Zeitarrays ü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.

Anforderungstext für eine einmalige Neubewertung von 2019-04-13T07:20:00Z auf 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"