Inhaltsverzeichnis
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
Funktionstest
So sieht das Ergebnis des Sensors aus:
Viel Spaß beim Ausprobieren. 🙂
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.
Hallo Alex,
in solchen Fällen das PowerShell Skript manuell auf dem PRTG Probe Server mit dem notwendigen Parameter aufrufen. Danach solltest du in der Konsole weitere/mehr Informationen sehen. Wenn du keine Rückschlüsse auf den vermeidlichen Fehler findest, darfst du mir die Meldungen gerne per E-Mail (siehe Impressum) zu kommen lassen.
Gruß,
Daniel
Hallo Alex,
ich habe mir den Sensor in meiner Demo Umgebung angeschaut. Nach meinen Tests darf das Passwort kein Komma enthalten. Das Komma scheint seitens PRTG für einen Zeilenumbruch im Komma zu sorgen.
Gruß,
Daniel
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
Hallo Tim,
freut mich das es bei dir funktioniert.
Danke für die beiden Hinweis. Ich habe die Anpassungen bzw. Erweiterungen in meine aktuelle Version des Skripts übernommen.
Gruß,
Daniel
Sorry, nein, hatte ich etwas unglücklich ausgedrückt, es funktioniert leider nicht. 🙂
Ich bin dann nicht mehr weiter gekommen.
Viele Grüße,
Tim
Guten Abend Tim,
wenn du den Pfad in einem Browser aufrufst, deine Zugangsdaten eingibst, bekommst du dann die Aushabe im XML/JSON Format?
Um Eingrenzen des Fehlers starte ich gerne auf dem PRTG Server eine PowerShell, rufe das Skript auf und übergebe die notwendigen Parameter. Welche Fehlermeldung wird dir angezeigt?
Gruß,
Daniel
Ok, thx – werde ich die Tage mal testen, melde mich zurück.
Hallo Daniel,
tolle Anleitung, toller Blog, beides richtig gut, vielen Dank 🙂
LG,
Flo
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
Hallo Frank,
die beiden Variablen &linuxuser und &linuxpassword sind in der offziellen Übersicht vom Hersteller aufgeführt (https://www.paessler.com/manuals/prtg/custom_sensors). Benutzername und das dazugehörige Passwort muss natürlich auch im entsprechenden Bereich eingetragen werden. Sonst funktioniert es nicht.
Ich habe auch gerade bei uns nochmals nachgeschaut. Wir nutzen die aktuelle Version von PRTG und nutzen nach wie vor die beiden Variablen %linuxuser und %password.
Gruß,
Daniel
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 »
Hallo Lars,
sieht mir nach einem Problem mit dem Zeichensatz aus. Geh am Besten hin und lass dir den Quellcode des Sensors in einem neuen Fenster unformatiert anzeigen. Anschließend kopiere nochmals den gesamten Inhalt in deine PowerShell Datei. Dann sollte es klappen…
Gruß,
Daniel
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 »
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
Guten Abend Thorsten,
aber doch nicht wegen einem Sensors. 😉
Kann es sein, dass es am Sicherheitskontext des Sensors liegt? Sprich die PRTG Probe, auf dem der Sensor läuft, nicht ins Internet kommt?!
Gruß,
Daniel
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
Hallo Patrick,
vielen Dank für deine Rückmeldung.
Ich nehme die Zeile auf jeden Fall in den Code auf.
Kann es sein, dass die verwendete PowerShell Version etwas eingestaubt ist? Ich habe das Skript unter Version 5.1.x entwickelt und auch im Betrieb. Ältere Versionen von PowerShell nutzen standardmäßig TLS 1.0. Ich vermute mal der Webserver, auf dem deine Nextcloud Instanz läuft, unterstützt nur noch TLS 1.2 und ggf. TLS 1.3?
Liebe Grüße,
Daniel
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.
Hallo Manfred,
vielen Dank für den Hinweis. Es hängt davon ab, wie das übergeordnete Objekt angelegt wurde. Ich nutze z.B. in diesem Fall den DNS-Namen als Objektname. Daher funktionierte in meinem Test %device.
Nachstehend die Dokumentation
%device: Name of the device in which the event was triggered
%host: IP or DNS name of the device that triggered the event
Quelle: https://kb.paessler.com/en/topic/373-what-placeholders-can-i-use-with-prtg
Gruß,
Daniel
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?
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
Hallo Michael, vielen Dank für den Hinweis. Ich habe den Fehler im Quellcode behoben. Daniel
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
Hallo Jean,
das Skript funktioniert auch mit der von dir genannten Version.
Um dir helfen zu können, sag mir bitte welche Fehlermeldung du bei dir erhältst.
Daniel
Hallo Manfred, in diesem Fall stimmt wohl die Übergabe der Parameter an den Sensor nicht. Hast du die Werte unter Einstellungen des Sensors nochmals überprüft? Dani