Individuelle Netzwerküberwachung mit dem Solarwinds SDK

Das Software Development Kit für Solarwinds Orion ist eine Werkzeugsammlung, die es dem Benutzer ermöglicht die Funktionalität der Monitoring Software vielfältig zu erweitern.

Kai Bosch, 01.09.2017

Primär unterstützt das SDK die Entwicklung individueller Softwarelösungen für das Netzwerk Monitoring auf Basis von Solarwinds in PowerShell und Python. Aber auch unabhängig davon kann es ganz universell via SOAP und REST genutzt werden.

Das SDK wird seitens Solarwinds auf Github unter freier Lizenz bereitgestellt: Github SDK

Einfache Datenmanipulation mit SWIS

Als einer der Hauptbestandteile des SDK ist der Solarwinds Information Service (SWIS) eine Schnittstelle, um Daten aus Solarwinds abzufragen und zu manipulieren.

SWIS bringt seine eigene SQL ähnliche Sprache mit, die Solarwinds Query Language (SWQL). Über eine der Datenbank nachempfundenen Struktur lassen sich hier Daten aus Solarwinds Orion abfragen.

Die dem SWIS zugrundeliegende Datenstruktur lässt sich ebenfalls auf Github nachschlagen: Github Datenstruktur

Beispiel einer SWQL Abfrage mit dem Solarwinds SDK Powershell Snapin:

Add-PSSnapin SwisSnapin;

$swis = Connect-Swis;

#name of the application monitor

$ComponentName = "get mountpoints";

####

#get application ids for applications containing the component monitor

[string]$sAppIDs = Get-SwisData $swis "SELECT ApplicationID FROM Orion.APM.Component WHERE Name = @name" @{name = $ComponentName};

$aAppIDs = $sAppIDs.Split(" ");

Write-Output "Found $($aAppIDs.Length) Application(s) with Component";

ForEach ( $sAppID in $aAppIDs) {

    #get it's node id and name

    $nodeID = Get-SwisData $swis "SELECT NodeID FROM Orion.APM.Application WHERE ApplicationID = @AppID" @{AppID = $sAppID};

    $NodeName = Get-SwisData $swis "SELECT NodeName FROM Orion.Nodes WHERE NodeID = @node;" @{node = $nodeID};

    Write-Output "Node ID: $($nodeID) Name: $($NodeName)";

}

Der oben gezeigte Code lässt sich als PowerShell Script speichern und ausführen. Vorher muss das PowerShell SnapIn installiert werden. Wie das geht, erfahren Sie hier

Das Script fragt Applikationen ab, welche einen Component-Monitor namens „get mountpoints“ haben. Über die Applikations-IDs werden dann die Knoten, die diese Applikation zugeordnet haben abgefragt. Anschließend wird deren Name sowie ihre ID ausgegeben.

Statt sich extra um die Datenbankauthentifizierung kümmern zu müssen, kann SWIS mit den Solarwinds Anmeldedaten verwendet werden. Natürlich werden hier die Berechtigungseinstellungen des jeweiligen Users berücksichtigt.

Ein weiterer Vorteil ist die Isolation der SWIS Komponenten vor Änderungen am Datenbankschema, so dass auch im Zuge der zukünftigen Weiterentwicklung von Solarwinds über das SWIS Interface ein konsistentes, rückwärtskompatibles Datenmodell bereitgestellt werden kann.

Für das Bauen von SWQL Abfragen ist das „SWQL Studio“ in der Solarwinds SDK Installation enthalten.

Neben der auf lesenden Zugriff beschränkten SWQL gibt es auch noch eine Reihe von SWIS-Funktionen, die vollständige CRUD (Create Read Update Delete) Operationen unterstützen. Diese lassen sich mittels PowerShell Snapin, Python Client, SOAP oder REST nutzen. Allerdings sind sie nicht für alle Arten von Solarwinds-Daten implementiert.

SWIS Funktionen nutzen sie sogenannte SWIS-URI zur Datenselektion, wie hier in einem PowerShell Beispiel demonstriert:

$swisUri = 'swis://localhost/Orion/Orion.Nodes/NodeID=$nodeID/Volumes/VolumeID=$volumeId';

Neben dem SWIS Snapin für PowerShell gibt es noch „PowerOrion“, ein PowerShell Modul welches einige der Beispielscripte aus dem Github Repository des SDKs als SWIS Funktionen bereitstellt.

Durch SWIS-Verbs Solarwinds-Management automatisieren

Mit sogenannten SWIS-Verbs, lassen sich viele gängige Arbeitsschritte aus Solarwinds Orion auch direkt per Scriptbefehl ausführen.

Im Folgenden wird anhand eines Beispiels ein Solarwinds Knoten unter Verwendung eines SWIS-Verbs aus der Überwachung durch Solarwinds temporär ausgeschlossen.
Zuerst wird die Node ID (Knoten ID) eines beliebigen Servers benötigt, auf den wir das SWIS-Verb anwenden wollen.


Die Node ID lässt sich mittels einer simplen SWQL Query ausfindig machen:

SELECT NodeID, Caption, Status, StatusDescription

FROM Orion.Nodes WHERE Caption like '%Test%';

Das Ergebnis:

NodeID Caption       Status        StatusDescription

78     Testserver    1             Node status is Up.

Die ermittelte Node ID wird nun in einem kleinen Powershell-Demonstrations-Script als Parameter an den Invoke-SwisVerb Funktionsaufruf übergeben:

Add-PSSnapin SwisSnapin;


$swis = Connect-Swis;
[datetime]$timestampNow = "01.09.2017"
[datetime]$timestampLater = "12.09.2017"
 
Invoke-SwisVerb $swis Orion.Nodes Unmanage @("N:78", $timestampNow, $timestampLater, "false")

In diesem Beispiel, welches ebenfalls in unserer zuvor besprochenen PowerShell-Umgebung zum Einsatz kommt, wird der Knoten mit sofortiger Wirkung „$timestampNow“ aus der Überwachung durch Solarwinds ausgeschlossen und zu einem späteren Zeitpunkt „$timestampLater“ wieder aufgenommen.

Mit dem oben bereits genannten SWQL-Query lässt sich der Effekt prüfen, der Knoten ist nun aus der Solarwinds Überwachung ausgeschlossen:

SELECT NodeID, Caption, Status, StatusDescription

FROM Orion.Nodes WHERE Caption like '%Test%';

Das Ergebnis:

NodeID Caption       Status        StatusDescription

78     Testserver    9             Node status is Unmanaged.

Die konkreten Parameter eines SWIS-Verbs lassen sich ebenfalls über eine Query im SWQL Studio abfragen:

SELECT EntityName, VerbName, Position, Name, Type, IsOptional

FROM Metadata.VerbArgument

WHERE VerbName='Unmanage'

AND EntityName='Orion.Nodes'

Welche SWIS-Verbs jeweils unterstützt werden ist vom Umfang der Solarwinds Installation abhängig und lässt sich ebenfalls mit einer einfachen SWQL Query in Erfahrung bringen:

SELECT Name, EntityName FROM Metadata.Verb

Wissen ist Macht – Das Wiki zum Solarwinds Orion SDK

All die oben genannten Funktionalitäten wären nichts ohne eine anständige Dokumentation.

Diese findet sich im Wiki auf dem eigenen Github Repository, was auch gleichzeitig der Startpunkt auf dem Weg zur produktiven Nutzung der SDK Werkzeuge ist.

Übersichtlich aufgebaut und klar strukturiert findet man hier praktische Hilfe und Anleitungen zur Verwendung der mitgelieferten Funktionalitäten.

Hilfe und Anleitungen

Das SWIS-Datenschema auf einen Blick gibt es hier:

SWIS-Datenschema

Eine hilfsbereite Community rund um die Nutzung des SDKs gibt es ebenfalls in der Solarwinds Thwack Community


Autor


Kai Bosch
Kai Bosch


Kontakt

 

 

Kontakt