Pausieren und Fortsetzen der Überwachung über die Frontends, Aktionen und PHP-Scripten.
Quittieren von Alarmmeldungen über die Frontends, Aktionen und PHP-Scripten.
2. Voraussetzungen
IP-Symcon ab Version 6.2
PRTG
3. Software-Installation
Über den ‚Module-Store‘ in IPS das Modul ‚PRTG‘ hinzufügen. Bei kommerzieller Nutzung (z.B. als Errichter oder Integrator) wenden Sie sich bitte an den Autor.
Die Abfrage ob ein Konfigurator Modul angelegt werden soll, ist zu bestätigen. Es wird automatisch die Konfiguration für den benötigten IO abgefragt.
4. Einrichten der Instanzen in IP-Symcon
Details sind in der Dokumentation der jeweiligen Module beschrieben.
In der Dokumentation des PRTG IO wird im Anhang erläutert wie eine Überwachung von IPS aus PRTG erfolgen kann.
Ebenso wird dort das Empfangen von Statusänderungen eines Sensors in IPS erläutert, damit IPS den Zustand zeitnah darstellen kann.
Es wird dingend empfohlen somit zuerst den PRTG IO zu erstellen und fertig zu konfigurieren, sowie in PRTG alle gewünschten Einstellungen vorzunehmen, bevor weitere Instanzen in IPS über den PRTG Konfigurator angelegt werden.
5. Anhang
1. GUID der Module
Modul
Typ
Prefix
GUID
PRTG IO
I/O
PRTG
{67470842-FB5E-485B-92A2-4401E371E6FC}
PRTG Configurator
Configurator
PRTG
{32B8B831-91B2-44B5-9B66-9F1685647216}
PRTG Device
Device
PRTG
{95C47F84-8DF2-4370-90BD-3ED34C65ED7B}
PRTG Sensor
Device
PRTG
{A37FD212-2E5B-4B65-83F2-956CB5BBB2FA}
2. Hinweise
Der im PRTG IO verwendete Benutzer sollte in PRTG Administrative Rechte bekommen, um die Überwachung zu steuern und Alarme quittieren zu können.
Die Kommunikation zwischen IPS und PRTG kann sowohl per HTTP als auch per HTTPS (SSL/TLS) erfolgen.
Hierzu ist PRTG und die URL im PRTG IO entsprechend zu anzupassen. Unverschlüsselte Übertragung sollte niemals zur Kommunikation mit einem externen PRTG-Server genutzt werden, da die Login-Informationen dann nicht verschlüsselt übertragen werden!
3. Changelog
siehe nächster Beitrag
4. Spenden
Die Library ist für die nicht kommerzielle Nutzung kostenlos, Schenkungen als Unterstützung für den Autor werden hier akzeptiert:
Sollten Profile bei den Sensoren fehlen, so bitte eine kurze Info mit Auszug aus dem Reiter Debug wo man die gelieferten Daten des Sensors erkennen kann.
Ich kann diese Profile dann ergänzen.
Michael
Hallo
Danke fuer das Super Modul. Hab bis jetzt PRTG ueber Syslog in IPS.
Die ersten Test laufen einwandfrei. Hab einen Sensor und ein Device einzeln
erstellt.
Hier meine Problem bisher:
Konnte keine Verbindung zum PRTG-Server aufbauen weil ich ueber HTTPS ging.
Hab dann umgestellt auf HTTP , damit ist OK.
Im Konfigurator funktioniert das einzelne Erstellen aber „Alle Erstellen“ funktioniert
bei mir nur mit Fehler.
Error: Error: Uncaught TypeError: Argument 1 passed to PRTGSensor::ConvertRuntime() must be of the type integer, float given, called in C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\libs\VariableHelper.php on line 66 and defined in C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\libs\VariableHelper.php:6
Einfach zu viele Sensoren. Knapp 100 ?
Und alle werden direkt im Tree angelegt. Das krieg ich nie sortiert
Sollten man die Sensoren unter die Devices erstellen ?
Https setzt ein gültiges Zertifikat vorraus und somit auch den Host-Namen aus dem Zertifikat.
Eventuell werden selbst-signierte per default abgelehnt. Dies kann ich aber noch ergänzen bzw. als Option mit in den IO einbauen.
Bei mir steht im Zertifikat nur der Name, darum funktioniert z.B. https://<ip> nicht, aber https://<hostname>
An zu viel wird es nicht liegen, eher weil ein Sensor einen komischen Wert als Typ ‚Laufzeit‘ liefert.
Den Fehler hatte ich einmal gesehen, aber nie nachstellen können.
Wenn du den betreffenden Sensor gefunden hast, hätte ich gerne einen Auszug vom Debug der Instanz
Geht nicht. Der Konfigurator ist IPS intern und erstellt immer alles im root (wie alle IPS Konfiguratoren).
Aber anhand der Info-Spalte solltest du es zuordnen können.
Dort steht bei einem Sensor das dazugehörige Device.
Bei einem Device die Gruppe in welcher das Device in PRTG einsortiert wurde.
Edit:
Ich habe bei ConvertRuntime erstmal den Typ rausgenommen. Damit sollte der Fehler weg sein.
Aber ob die Werte stimmen, kann ich nicht prüfen von unterwegs.
Eigentlich sollen Werte in Tagen als ganzzahlige Sekunden übertragen werden
Michael
So hab jetzt muehselig von unterwegs mit dem iPad den Boesewicht gefunden.
Die Variable ins Log geschrieben und den ganzen $Valuewert.
Es kommt ein 3,63071e+06 in der Variablen an ( lastvalue_raw ).
Hier das Log :
22.05.2018 16:15:29 | 00000 | CUSTOM | VariableHelper.php | 3,63071e+06
22.05.2018 16:15:29 | 00000 | CUSTOM | PHP | Error: Error: Uncaught TypeError: Argument 1 passed to PRTGSensor::ConvertRuntime() must be of the type integer, float given, called in C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\libs\VariableHelper.php on line 68 and defined in C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\libs\VariableHelper.php:6
Stack trace:
#0 C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\libs\VariableHelper.php(68): PRTGSensor->ConvertRuntime(3630712)
#1 C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\PRTGSensor\module.php(250): PRTGSensor->ConvertValue(Array)
#2 C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\PRTGSensor\module.php(230): PRTGSensor->DecodeChannelData(Array)
#3 C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\PRTGSensor\module.php(168): PRTGSensor->RequestChannelState()
#4 C:\Program Files (x86)\IP-SYMCON\scripts\__generated.inc.php(551): PRTGSensor->RequestState()
#5 C:\Windows\System32\-(1): PRTG_RequestState(46363)
#6 {main}
thrown
Error in Script C:\Program Files (x86)\IP-SYMCON\modules\IPSPRTG\libs\VariableHelper.php on Line 6
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
33 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
121 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_PhpErrorHandler)
in IPSLogger_PhpFatalErrorHandler
22.05.2018 16:15:29 | 46363 | ERROR | TimerPool | Serverzustand (RequestState): array(5) {
["objid"]=>
int(10)
["objid_raw"]=>
int(10)
["lastvalue"]=>
string(6) "42 Tg."
["lastvalue_raw"]=>
float(3630712)
["name"]=>
string(17) "Alter der Version"
}
Hab einfach mal ein intval() in das Modul eingebaut und
Jetzt ist Ruhe im Meldungsfenster und in der Instanz steht
Auch der richtige Wert fuer „Alter der Version“.
Ich hatte letzten noch einen Fehler, das gelegentliche Float Werte als integer erkannt wurden.
Immer wenn sie zufällig keine Nachkommastellen enthalten haben, trat dabei ein Fehler auf.
Daraufhin hatte ich float als default genommen und dann überall, außer natürlich bei der ConverTime-Methode, in den richtigen Typ konvertiert.
Fix für SSL habe ich auch fertig. Übersetzung fehlt noch und dann ist das ca in einer Stunde online
Hallo
Hab noch einen Boesewicht gefunden.
Hab einen Sensor (SSL-Zertifikatssensor (Port 443) ) . Der liefert einen Integerwert
anstatt eines Strings. Tage bis Ablauf Zertifikat .
Dadurch gibt es in VariableHelper.php einen Fehler Zeile 32
Danke für den Fund.
Den Sensor hatte ich noch gar nicht eingerichtet
Toll dass hier jetzt die Einheit Tage (Tg.) in dem Datensatz fehlt
Ich hatte mich früher in meinen Scripten schon immer mit den konvertieren der Werte und erkennen der Profile ausgetobt und gedacht ich habe es jetzt ‚einigermaßen‘ elegant gelöst. Da haut ein neuer Sensor keine Einheit raus, und es paßt schon wieder nicht. Tolle API
Zumal dieser Sensor bei Ja/Nein Werten immer lastvalue_raw 0 ausgibt. :rolleyes:
Das überfordert mich leider. Die $InstanzID ist wohl eine aus IPS, vermutlich die des Devices? Die $SensorId ist dann welche? Hab bissl probiert (PRTG und IPS), aber laufe immer in eine Fehlermeldung.
Dieser Befehl steht in der Doku vom PRTG-IO.
Somit ist die InstanceID die vom PRTG-IO.
Die SensorID ist die aus PRTG.
Entweder in der Konsole von PRTG selbst zu finden, oder im PRTG-Konfigurator in IPS oder auch in den Sensor-Instanzen in IPS.
Ich habe das Mediaobjekt vorher manuell mit einem PNG-Bild angelegt. Das Skript oben führt dann zu diesem Ergebnis (wenn ich das Mediaobjekt in der Konsole öffnen will):
Im Webfront wird verständlicherweise auch nichts angezeigt.