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