Nextcloud mit Hilfe von PRTG überwachen

Letzte Aktualisierung am 12.10.2024, 09:10:37 Uhr

Einleitung

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 (10.02.2023) 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.

Konfiguration von Nextcloud

In einem Browser der Wahl die UI von Nextcloud aufrufen. An der UI mit einem Benutzerkonto anmelden, welches Mitglied der Gruppe „admin“ ist. Grund dafür ist, dass wir für das Abrufen der Informationen einen separaten Benutzer anlegen.

Rechts oben auf das runde Symbol klicken, damit das Menü auf geht.
Auf der linken Seite über die Schaltfläche „Neuer Benutzer“ 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).

Konfiguration von Paessler PRTG

Die ToDo’s teilt sich in verschiedene Aufgaben auf. Dieser werden in den nachstehenden Bereiche erklärt.

PowerShell Skript als Sensor bereitstellen

Die aktuelle Fassung meines Sensors ist jederzeit im Git Repository verfügbar.

Das PowerShell Skript mit dem vorgegebenen oder einem anderen Dateinamen auf der PRTG Probe im Programmverzeichnis abgelegen (z.B. D:\Program Files (x86)\PRTG Network Monitor\Custom Sensors).

Falls mehrere PRTG Probes zum Einsatz kommen, natürlich auf allen Servern ablegen, welche später einen Nextcloud Sensor bereitstellen.

Gerät und Sensor in der PRTG UI anlegen

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.
Nach der Eingabe des FQDN müssen noch die Zugangsdaten zur Nextcloud hinterlegt werden. Hierzu greife ich auf die CREDENTIALS FOR SCRIPT SENSORS zurück.
Mit „OK“ wird das neue Gerät angelegt.

Neuen Sensor in PRTG im Gerät anlegen

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.
Als erster Parameter muss „%device“ oder „%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.

Als zweiter Parameter muss „%scriptplaceholder1“ eingegeben werden. Damit wird der Benutzername, den wir vorher im übergeordneten Gerät konfiguriert haben, an den Sensor bzw. das PowerShell Skript übergeben.

Als dritter Parameter muss „%scriptplaceholder2“ eingegeben werden. Damit wird das Passwort, dass wir vorher im übergeordneten Gerät konfiguriert haben, an den Sensor bzw. das PowerShell Skript übergeben.

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

Funktionstest

So sieht das Ergebnis des Sensors aus:

Viel Spaß beim Ausprobieren. 🙂

Abonnieren
Benachrichtige mich bei
26 Comments
neueste
älteste
Inline Feedbacks
View all comments
Alex
17.01.2023 14:37

Guten Tag, können Sie mir sagen, was das Problem sein könnte, ich habe alles nach dem Handbuch gemacht, aber es funktioniert nicht, der PRTG gibt eine Fehlermeldung aus:XML: Das zurückgelieferte XML entspricht nicht dem erwarteten Schema. (Code: PE233) — JSON: Das zurückgelieferte JSON entspricht nicht der erwarteten Struktur (#O2). (Code: PE231)PRTG Network Monitor 22.4.81.1532 x64
nextcloud version 24.0.1.1
wenn ich Externes Überwachungsprogramm in den Browser eingebe
/nextcloud/ocs/v2.php/apps/serverinfo/api/v1/info?format=json es kommt gut an, Ich wäre für jede Hilfe dankbar.

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