RAWSQL Monitoring mit ConnectWise Automate

Die RMM-Lösung ConnectWise Automate bietet die Möglichkeit, RAWSQL Monitors anzulegen. RAWSQL Monitors sind Internal Monitors und verwenden SQL-Statements, um Daten aus der Datenbank abzufragen. Diese sind besonders hilfreich, um einzelne Felder in der Datenbank zu überprüfen, beispielsweise den Heartbeat eines Systems. RAWSQL Monitors können dafür genutzt werden, mehrere Tabellen in der Datenbank miteinander zu verknüpfen und mehrere Felder zu prüfen und sind dabei nicht auf eine einzelne Tabelle in der Datenbank beschränkt. 

Um einen RAWSQL Monitor zu erstellen, öffnen Sie das Windows Control Center und navigieren zu Automation → Monitors → Internal Monitors.
Dort klicken Sie mit einem Rechtsklick in die Monitorübersicht und wählen "New Monitor". Es öffnet sich das nachfolgende Fenster: 


Hier wählen Sie "<Start Fresh>" und bestätigen mit "Next". Im Feld "Configuration" werden der Monitorname sowie die weiteren Check Conditions konfiguriert. 


Im Bereich "Table To Check" und "Field to Check" geben Sie einfach "RAWSQL" ein. Diese Felder geben an, dass ein RAWSQL Monitor erstellt werden soll. Als "Check Condition" wird "Anything" aus dem Drop-Down-Menü selektiert.

Unter "Additional Condition" wird nun das gewünschte SQL-Statement eingefügt. In diesem Beispiel verwenden wir das nachfolgende Statement. Sie können dies gerne für Ihren eigenen Monitor verwenden: 

SELECT 
    TIMESTAMPDIFF(MINUTE, c.LastContact, NOW()) AS TestValue, 
    c.name AS IdentityField, GREATEST(c.LastContact, IFNULL(LastHeartbeatTime, "0000-00-00 00:00:00")) AS ContactTime, 
    c.ComputerID AS ComputerID, c.LastContact, 
    h.LastHeartbeatTime, 
    acd.NoAlerts, acd.UpTimeStart, acd.UpTimeEnd, 
    CONVERT(CONCAT(clients.name,' ',locations.name) USING utf8) AS Location
FROM Computers AS c
LEFT JOIN HeartBeatComputers AS h ON h.ComputerID = c.ComputerID
LEFT JOIN AgentComputerData AS acd ON c.ComputerID = acd.ComputerID
LEFT JOIN Clients ON Clients.ClientID = c.clientid
LEFT JOIN Locations ON Locations.ClientID = Clients.ClientID
WHERE 
    (c.LastContact < NOW() - INTERVAL 11 MINUTE) 
AND 
    (h.LastHeartbeatTime IS NULL OR h.LastHeartbeatTime < NOW() - INTERVAL 3 MINUTE) AND (c.os LIKE '%server%')
 
Das Statement überprüft die Felder "LastHeartbeatTime" und "LastContact" auf allen Agents, die ein Server-Betriebssystem installiert haben. Damit wird ermittelt, ob ein Agent offline ist. 

Sie können das Statement auch nach Ihren Wünschen anpassen. Zum Beispiel überprüfen Sie nur eine bestimmte Gruppe an Agents. Hierfür tauschen Sie 

(c.os LIKE '%server%') 

einfach mit folgendem Zusatz aus:

c.ComputerID IN (Select ComputerID from TestGruppe)

Es gibt noch einige Hinweise bezüglich des Aufbaus von einem RAWSQL Monitor, die für die volle Funktionalität elementar sind. 

  1.  In der ersten Zeile ist es besonders wichtig, dass "TestValue" der erste Rückgabewert Ihres Statements ist. Darin wird das Ergebnis des Tests abgespeichert. Dies kann beispielsweise ein Integer, ein String oder wie in diesem Fall, die Differenz zwischen der aktuellen Uhrzeit und dem "LastHeartbeat" sein. Essentiell ist, dass Sie die Spalte "TestValue" nennen, sowie immer in Zeile eins des Statements untergebracht wird.
  2.  Die zweite Zeile enthält das "identityfiled". Diese Spalte muss immer als zweites zurückgegeben werden, sonst verwendet der Monitor hier die ComputerID. Dies ist die Spalte, die hilft zu unterscheiden, ob zusätzliche Alarme für einen Monitor basierend auf der ComputerID ausgelöst werden sollen. Dies kann alles sein, solange es für Ihre Bedingung, auf die der RAWSQL-Monitor prüft, eindeutig ist.
  3.  Mithilfe der ComputerID in Zeile vier wird der Agent eindeutig identifiziert und ist somit elementar für die Funktionalität des RAWSQL Monitors.
  4. Die Zeilen sieben, acht und neun bestimmen ob ein Alert ausgelöst werden sollte. Dabei wird auf die Tabelle "AgentComputerData" zurückgegriffen. 
  5. Abschließend werden in den Zeilen darunter drei LEFT JOIN's durchgeführt. Es ist notwendig zwischen der Tabelle der "Clients", sowie der "AgentComputerData" einen JOIN einzufügen.

Mit einem Klick auf "Build and View Query" lässt sich das Ergebnis des Internal Monitors anzeigen:


Wenn Sie mit der Ausgabe zufrieden sind, können Sie noch unter "Alerting" ein passendes Alert Template auswählen und die Einrichtung mit "Add" abschließen. 

Weitere Informationen zu der Thematik "RAWSQL Monitoring" finden Sie in der offiziellen Hilfe von ConnectWise Automate, sowie im Forum "MSP GEEK".