Nextcloud mit Hilfe von PRTG überwachen

Für eine Arbeitsgruppe aus größtenteils ehrenamtlichen Teilnehmern, wurde eine Nextcloud auf einem dedizierten Server aufgesetzt und konfiguriert. Das System/Anwendung läuft bereits über die Testphase hinaus und wird weiterhin genutzt. Damit evtl. Last, Speicherplatz und Performance-Probleme nicht unentdeckt bleiben, soll die Nextcloud Instanz in das bestehende Monitoring System PRTG von Paessler eingepflegt werden.

Stand Freitagnachmittag (20.09.2019) gibt es seitens Paessler keinen Sensor für Nextcloud. Also habe ich diesbezüglich ein wenig im Internet recherchiert und im zweiten Link war die Nextcloud API beschrieben sowie welche Serverinfo(rmationen) abrufbar sind.  Über die GitHub Suche bin ich auf ein PowerShell Skript von freaky-media aufmerksam geworden. Dieses habe nach diversen Überlegungen auch als Grundlage für meine Version hergenommen.

Quellcode: Git Repository

Das PowerShell Skript mit demselben oder neuen Dateinamen im Programmverzeichnis „.\Custom Sensors \EXEXML“ der PRTG Probe ablegen. In meiner Testumgebung ist es der Standardpfad (C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML).  Falls mehrere PRTG Probes zum Einsatz kommen, natürlich auf dem Server abspeichern der später den Sensor auch ausführen wird.

Danach die Weboberfläche von der jeweiligen Nextcloud Instanz in einem Browser aufrufen. Bitte mit einem Benutzer anmelden, der Mitglied der Gruppe „admin“ ist. Grund dafür ist, dass wir zum Abrufen der Informationen einen separaten Benutzer in der Nextcloud anlegen. Rechts oben auf das runde Symbol klicken, damit das Menü auf geht.

Auf der linken Seite über die Schaltfäche „Benutzer hinzufügen“ wie der Name schon sagt ein neues Konto anlegen. Dabei darf das Passwort ruhig lang und komplex sein. Schließlich soll sich damit eigentlich nie jemand an der Nextcloud anmelden (können).

Bitte nicht vergessen über die Schalfläche auf der rechten Seite (weißer Haken) den Benutzer auch anzulegen. 🙂

Anschließend die Weboberfläche von PRTG in einem Browser (Tab) anrufen und ebenfalls anmelden. Zuerst auf der Probe bzw. in der entsprechenden Hierarchie ein neues Gerät anlegen. Dies ist erforderlich, da wir unter keinen Umständen später das Passwort des Nextcloud Benutzers, der die API anfragen soll, im Klartext in der Konfiguration von PRTG stehen haben möchten.

Wichtig bei dem Parameter „IPv4-Adresse/DNS-Name“ den DNS-Namen der Nextcloud Instanz eintragen. Denn die Abfrage der Daten erfolgt a) über HTTPs (SSL) und b) SSL-Fehler (z.B. Self Sigend Zertifikat) werden im Moment noch nicht vom PowerShell Skript abgefangen bzw. ignoriert.

Ist das Gerät angelegt dieses anklicken und in den Reiter „Einstellungen“ wechseln.

Auf dieser Seite ein Stück weit nach unten scrollen bis der Bereich „Zugangsdaten für Linux/…“ zu sehen ist. Die Zugangsdaten für Nextcloud werden hier sicher abgelegt und sind somit später über PRTG Variablen direkt nutzbar.

Mit einem Klick auf „Speichern“ werden die Zugangsdaten geschrieben. Danach einen neuen Sensor dem Gerät hinzufügen. Im Assistenten den Sensortyp „Programm/Skript (Erweitert)“ auswählen.

Nun erscheint der Dialog für die Allgemeinen- und Sensoreinstellungen für den neuen Sensor.

Parameter:

Als erster Parameter muss%device%host“ eingegeben werden. Grund dafür ist, dass ich den Computername im PowerShell Skript in eine Variable gepackt habe. Gerade wenn man unabhängige Nextcloud Instanzen in seiner Landschaft hat, ist das PowerShell Skript flexibel und muss nicht unnötig oft dupliziert werden. PRTG speichert den Computernamen des übergeordneten Geräts in der Variablen %device. Das ist auch in der Dokumentation von PRTG nachzulesen.

Als zweiter Parameter muss „%linuxuser“ eingegeben werden. Damit wird der Benutzername, den wir vorher im übergeordneten Gerät konfiguriert haben, an den Sensor bzw. das PowerShell Skript übergeben. Alternativ kann der Benutzer an dieser Stelle auch im Klartext und mit Anführungszeichen eingegeben werden.

Als zweiter Parameter muss „%linuxpassword“ eingegeben werden. Damit wird das Passwort, dass wir vorher im übergeordneten Gerät konfiguriert haben, an den Sensor bzw. das PowerShell Skript übergeben. Alternativ könnte man auch das Passwort an dieser Stelle im Klartext und mit Anführungszeichen eingeben. Allerdings ist das Passwort damit in der Konfiguration von PRTG ebenfalls im Klartext zu finden!

Sind alle Einstellungen und ein schöner Name für den Sensor vergeben, kann der Sensor erstellt werden.

So sieht das Ergebnis des Sensors aus:

Der Code bzw. Sensor ist sozusagen noch BETA. Ich habe diesen in zwei verschiedenen Umgebungen bisher im Einsatz. Somit würde ich mich natürlich freuen, wenn sich weitere Tester finden lassen. Viel Spaß beim Ausprobieren. 🙂

Abonnieren
Benachrichtige mich bei
23 Comments
neueste
älteste
Inline Feedbacks
View all comments
Tim
14.02.2021 02:43

Hallo,

mein Nextcloud-Server (v20.0.7) ist nur mit einem Unterverzeichnis zu erreichen (läuft unter dem Nethserver 7.9).
Deshalb habe ich hier im Script die URL erweitert.

[string] $strNcApiUrl = „https://$NCurl/nextcloud/ocs/v2.php/apps/serverinfo/api/v1/info“

Dann bekam ich einen „System.Uri“ Fehler.

Auch habe ich das Script mit den drei Zeilen aus dieser Beschreibung hinzugefügt, da ich genau diesen Fehler erhielt:
https://www.frankysweb.de/powershell-es-konnte-kein-geschuetzter-ssltls-kanal-erstellt-werden/

Tja, jetzt war auch die Fehlermeldung „unbekannter Fehler“ vom Script vorhanden, aber eine Verbindung konnte wohl aufgebaut werden.

Viele Grüße,
Tim

Tim
Reply to  Daniel Wydler
14.02.2021 22:10

Sorry, nein, hatte ich etwas unglücklich ausgedrückt, es funktioniert leider nicht. 🙂
Ich bin dann nicht mehr weiter gekommen.

Viele Grüße,
Tim

Tim
Reply to  Daniel Wydler
19.02.2021 01:51

Ok, thx – werde ich die Tage mal testen, melde mich zurück.

Flo
05.01.2021 14:06

Hallo Daniel,

tolle Anleitung, toller Blog, beides richtig gut, vielen Dank 🙂

LG,
Flo

Frank
27.11.2020 12:14

Hallo,

ich hatte Probleme mit der Anmeldung an der NextCloud. Ich bekam immer einen Fehler 401, nicht Autorisiert. Nachdem ich den Benutzer und das Passwort Händisch in das Script (LINE 234) eingetragen hatte funktionierte es einwandfrei. Auf der Fehlersuche stellet ich fest, dass die Variablen %linux<user/passwort> nicht in der offiziellen Variablenliste bei Paessler aufgeführt sind. Ein Austausch der Variablen %linuxuser und %linuxpassword auf die Windows Variablen %windowsuser und %windowspassword brachte schließlich den gewünschten Erfolg. Natürlich muss man auch noch die „Zugangsdaten für Windows-Systeme“ entsprechend befüllen.

Grüße

Lars
20.08.2020 11:04

Hallo Daniel, sorry noch ein Nachtrag, führe ich das Script direkt in der Powershell auf dem PRTG Server aus bekomme ich folgende Meldung in der Powershell. PS C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML> C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\Prtg_NextCloud.ps1 In C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\Prtg_NextCloud.ps1:68 Zeichen:10 + $headers[“OCS-APIRequest”] = “true” +         ~ Arrayindexausdruck fehlt oder ist ungültig. In C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\Prtg_NextCloud.ps1:68 Zeichen:10 + $headers[“OCS-APIRequest”] = “true” +         ~~~~~~~~~~~~~~~~~~~~~ Unerwartetes Token „“OCS-APIRequest”]“ in Ausdruck oder Anweisung. In C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\Prtg_NextCloud.ps1:69 Zeichen:10 + $headers[“Authorization”]=(“Basic {0}” -f $base64AuthInfo) +         ~ Arrayindexausdruck fehlt oder ist ungültig. In C:\Program Files (x86)\PRTG… Weiterlesen »

Lars
20.08.2020 11:01

Hallo Daniel, erst einmal vielen Dank für die Arbeit. Ich versuche auch gerade mit deiner Anleitung die Nextcloud mit unserem PRTG Server zu überwachen. Leider bekomme ich folgende Fehler “ XML: Das zurückgelieferte XML entspricht nicht dem erwarteten Schema. (Code: PE233) — JSON: Das zurückgelieferte JSON entspricht nicht der erwarteten Struktur (No mapping for the Unicode character exists in the target multi-byte code page). (Code: PE231)“ Ich vermute das hängt mit der Powershell und dem ausführen des Scipts zusammen .Auf dem PRTG Server ist die Execution Policy auf RemoteSigned gesetzt und PRTG läuft in der aktuellsten Version 20.3.60.1623. Hast du… Weiterlesen »

Thorsten
07.05.2020 12:32

Hallo an alle,

ich verzweifle gerade.

In PRTG erhalte ich die „Die Verbindung mit dem Remoteserver kann nicht hergestellt werden.“.

Habe deswegen bereits sämtliche Angaben Domain, Benutzer, Passwort zum Testen im Script eingetragen. Starte ich das Script von Hand in der Powershell-Konsole, erhalte ich die Daten zurück. In PRTG, auf der gleichen Maschine, kommt die obige Fehlermeldung.

Hat jemand eine Idee?

Gruß
Thorsten

Patrick
28.03.2020 14:42

Hallo alle
Danke erstmal für das Skript.
Ich hatte anfansgs folgende Fehlermeldung: The request was aborted: Could not create SSL/TLS secure channel.
Konnte dies lösen, indem ich unter Declarations die folgende Zeile hinzugefügt habe: [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Liebe Grüsse aus der Schweiz

Manfred Lang
05.01.2020 21:03

Hallo Damiel,

nachdem ich anstatt „%device“ den Parameter „%host“ genommen habe, läuft es jetzt.

Danke für Dein Script.

PS: Solltest Du in der Anleitung bitte ändern.

Manfred Lang
05.01.2020 20:35

Hallo Daniel,

schön, ein Schwabe, bin selbst Einer 🙂

Ich habe heute Dein PRTG Nextcloud Script ausprobiert. Leider meldet der Sensor bei mir:

XML: Das zurückgelieferte XML entspricht nicht dem erwarteten Schema. (Code: PE233) — JSON: Das zurückgelieferte JSON entspricht nicht der erwarteten Struktur (No mapping for the Unicode character exists in the target multi-byte code page). (Code: PE231)

Meine Nextcloud ist auf neuestem Stand (V 17.0.2). Wenn ich das Powershell Script so aufrufe, kommt die XML zurück.

Kannst Du mir hier helfen?

Michael Schuster
Reply to  Manfred Lang
05.03.2020 13:47

Hallo,

ich musste in den folgen Zeilen die Anführungszeichen anpassen, damit das Skript bei mir lief.

$obNcHeaders[„OCS-APIRequest“] = „true“
$obNcHeaders[„Authorization“]=“Basic $obBase64AuthInfo“

Ansonsten läuft es super, vielen Dank

Jean
Reply to  Daniel Wydler
16.11.2020 19:14

Hi,

ich habe die aktuellste BEschreibung für die Konfiguration genommen.
Leider bleibt es bei dem oben genannten Fehler
Ich nutze Nextcloud 19.0.4 und die aktuellste PRTG Version
Vielen Dank für eure Untrstützung