Letzte Aktualisierung am 11.03.2023, 00:03:54 Uhr
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.
Die aktuelle Fassung meines Sensors ist jederzeit im Git Repository verfügbar.
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. 🙂 Aktuell darf das Passwort keine Kommas enthalten.
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.
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