What is this?

This knowledgebase contains questions and answers about PRTG Network Monitor and network monitoring in general.

Learn more

PRTG Network Monitor

Intuitive to Use. Easy to manage.
More than 500,000 users rely on Paessler PRTG every day. Find out how you can reduce cost, increase QoS and ease planning, as well.

Free Download

Top Tags


View all Tags

PRTGScheduler - Custom Sensor error

Votes:

0

Ich bekomme beim PRTGScheduler (https://github.com/PRTG/PRTGScheduler) Custom Sensor den Fehler "XML: The returned XML does not match the expected schema. (code: PE233) -- JSON: The returned JSON does not match the expected structure (#O2). (code: PE231)"

Ich habe die Anleitung auf Github (https://github.com/PRTG/PRTGScheduler/wiki/1.-Installation) befolgt. Bei einigen Sachen bin ich mir noch nicht so sicher. Ich habe die neuste PHP 7.2.3 (x64) Thread Safe heruntergeladen und auf dem Server auf welchem die Probe ist unter "C:\PHP" entpackt. Die "php.ini-production" Datei habe ich zu "php-ini" umbennant und "extension=intl" und "extension=openssl" auskommentiert. Danach habe ich den inhalt des PRTGScheduler Archives unter "C:\PHP\app" entpackt. Im "C:\PHP\app" Ordner gibt es keinen unterordner. Der Inhalt des PRTScheduler Archives ist direkt im "C:\PHP\app" Ordner. Danach habe ich im PRTG Web-Interface wie in der Anleitung den neuen Benutzer erstellt und unter "C:\PHP\app\application\config\application.php" die einzelnen Parameter angepasst. Danach habe ich das "PRTG-Scheduler.ps1" skript in "\PRTG Network Monitor\Custom Sensors\EXEML" Verzeichnis kopiert. Schlussendlich habe ich noch im PRTG Web-Interface auf der Local Probe noch einen neuen "Custom Sensor" "EXE/Script Advanced" mit dem erstellt und habe dort das "PRTG-Scheduler.ps1" Skript ausgewählt.

custom-exe custom-script-exe custom-sensor error exexml maintenance schedule sensor

Created on Mar 12, 2018 10:04:08 AM



8 Replies

Votes:

0

Hallo,

Bitte aktivieren Sie die Option "EXE-Ergebnis auf Festplatte schreiben" in den Einstellungen des Sensors und posten Sie die Protokolldateien (Result of Sensor XXX.Data.txt and Result of Sensor XXX.txt) die auf der entsprechenden Probe unter "C:\ProgramData\Paessler\PRTG Network Monitor\Logs (Sensors)" zu finden sind.

Best regards.

Created on Mar 13, 2018 9:00:49 AM by  Dariusz Gorka [Paessler Support]



Votes:

0

Die Datei Result of Sensor 14373.txt ist leer. Der inhalt der andere ist:

Data['blockedsens'].asString := '';
Data['canlinux'].asString := '0';
Data['channelinfos'].asString := '{}';
Data['channelnames'].asString := '';
Data['environment'].asString := '';
Data['exefile'].asString := 'PRTG-Scheduler.ps1';
Data['exeparams'].asString := '';
Data['fastcount'].asString := '0';
Data['host'].asString := '127.0.0.1';
Data['hostv6'].asString := '::1';
Data['inerror'].asString := '1';
Data['ipversion'].asString := '0';
Data['isexesensor'].asString := '1';
Data['lastmsg'].asString := '#Y2 @#O233 @#O231[#O2]';
Data['lastuptime'].asString := '0';
Data['linuxlogindomain'].asString := '';
Data['linuxloginpassword'].asString := '***';
Data['monitorchange'].asString := '';
Data['mutexname'].asString := '';
Data['notonpod'].asString := '0';
Data['reboot'].asString := '43171.3129002894';
Data['reqmsginterval'].asString := '60';
Data['resultfile'].asString := 'Result of Sensor 14373.txt';
Data['sensorid'].asString := '14373';
Data['simulate'].asString := '0';
Data['timeout'].asString := '60';
Data['tlsexplicit_default'].asString := '';
Data['tlsexplicit_ftp'].asString := '';
Data['tlsexplicit_imap'].asString := '';
Data['tlsexplicit_pop3'].asString := '';
Data['tlsexplicit_port'].asString := '';
Data['tlsexplicit_smtp'].asString := '';
Data['uptimecount'].asString := '0';
Data['usednstime'].asString := '0';
Data['usewindowsauthentication'].asString := '0';
Data['windowslogindomain'].asString := 'censored';
Data['windowsloginpassword'].asString := '***';
Data['windowsloginusername'].asString := 'censored';
Data['writeresult'].asString := '2';

Created on Mar 13, 2018 9:21:07 AM

Last change on Mar 13, 2018 8:35:56 PM by  Dariusz Gorka [Paessler Support]



Votes:

0

Hi there,

Please activate the "Use Windows Credentials of Parent Device" in the sensor settings and check if the sensor works properly now.

Best regards.

Created on Mar 13, 2018 8:36:35 PM by  Dariusz Gorka [Paessler Support]



Votes:

0

Es funktioniert immer noch nicht. Zum Testen habe ich nochmals einen neuen Sensor mit den richtigen Einstellungen von anfang an erstellt und nochmals die SensorID unter /PHP/app/application/config/application.php angepasst. Zudem habe ich noch einen Testversuch gestartet in dem ich unter /PHP/app/application/config/application.php als Protokoll http anstelle von https und den Port 80 anstelle von 443 verwendet. Dies hat leider auch nicht funktioniert.

Created on Mar 14, 2018 8:18:30 AM



Votes:

0

Hallo,

Was passiert oder welchen Output erhalten Sie wenn Sie den Sensor manuell via PowerShell ausführen?

Best regards.

Created on Mar 14, 2018 1:05:53 PM by  Dariusz Gorka [Paessler Support]



Votes:

0

Sobald ich den Sensor im PowerShell ISE ausführe bekomme ich keinen Fehler oder eine sonstige ausgabe. Das Skript wird ausgeführt und danach wieder gestoppt. Zum Testen habe ich noch den PHP Pfad geändert und das Skript hat sofort ausgerufen das der PHP Pfad falsch ist.

Created on Mar 14, 2018 1:20:28 PM



Votes:

0

Hallo,

Benennen Sie bitte einmal den "app"-Ordner unter "C:\PHP\" um und starten Sie das Script erneut manuell? Wird diesmal wieder ein Fehler gezeigt?

Bitte prüfen Sie auch dass unter "C:\PHP\app\" im Ordner die "index.php" zu finden ist.

Best regards

Created on Mar 14, 2018 2:20:23 PM by  Dariusz Gorka [Paessler Support]



Votes:

0

Hallo,

Sobald ich den "app" Ordner umbennant und das Skript manuell laufen gelassen habe, hat die Konsole keine Fehler angezeigt. Zum Testen habe ich noch eine zusätzliche "Test-Path" funktion hinzugefügt. Jetzt zeigt es mir nach dem umbennenen dein gleichen Fehler an wie als ich den "PHP" Ordner umbenannt habe. Des weiteren habe ich ich Skript unter "$pinfo.Arguments" den "app" Pfad und unter "$pinfo.FileName" den "php.exe" Pfad ebenfalls manuell eingegeben.

Die "index.php" Datei ist im "C:\PHP\app\" Ordner. Dies wird ebenfalls mit der neuen "Test-Path" funktion getestet.

Des weiteren habe ich gesehen, dass im Skript unter der Funktion "This-AddMenuEntry" ein Pfad zur "\scripts_custom.js" Datei ist. Diese Datei ist allerdings leer. Der Pfad zur Datei stimmt.

Muss das Skript (PRTG-Scheduler.ps1) auch im "app" Ordner sein?

Das ganze habe ich noch mit verschiedenen Versionen von PHP 7.2.3 und 7.1.15 getestet.

  • PHP VC15 ThreadSafe
  • PHP VC15 NonThreadSafe
  • PHP VC15 ThreadSafe x86
  • PHP VC15 NonThreadSafe x86
  • PHP VC14 ThreadSafe
  • PHP VC14 NonThreadSafe
  • PHP VC14 ThreadSafe x86
  • PHP VC14 NonThreadSafe x86

Nach dem welchseln der PHP Version habe ich immer folgenden Sensor OutPut im PRTG Network Monitor bekommen.

XML: The returned XML does not match the expected schema. (code: PE233) -- JSON: The returned JSON does not match the expected structure (Invalid JSON.). (code: PE231)

Dazu habe ich noch die "application.php" Datei unter "C:\PHP\app\application\config" beigefügt, falls dort fehler bei der Konfiguration passiert sind. Was mir allerdings an dieser Datei noch aufgefallen ist, ist das die Datei nicht mit "?>" geschlossen worden ist.

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['app_version']        = "1.0";

$config['prtg_protocol']      = "https";
$config['prtg_server']        = "10.20.1.9";
$config['prtg_port']          = 443;
$config['prtg_sensorid']      = 14374;

# /!\ IMPORTANT /!\ #
# make sure that this user account has its timezone set to UTC!
$config['prtg_username']      = "prtgscheduler";
$config['prtg_passhash']      = <removed>;
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

$config['default_timezone']   = "Europe/Zurich";
$config['weekstart']          = "MO";
$config['preferred_language'] = "en";
$config['debug']              = False;

# This decides if the maintenance windows should only be set at least within 5 minutes before they actually start.
# If set to false, the scheduler will set the upcoming maintenances right away, rendering PRTGs internal option to
# set maintenance windows practically useless - setting maintenances via PRTG will result in overwriting the automatic one.
$config['set_on_demand']        = True;
$config['on_demand_threshold']  = 5;

?>

Created on Mar 19, 2018 9:36:48 AM

Last change on Mar 19, 2018 11:34:35 AM by  Stephan Linke [Paessler Support]




Disclaimer: The information in the Paessler Knowledge Base comes without warranty of any kind. Use at your own risk. Before applying any instructions please exercise proper system administrator housekeeping. You must make sure that a proper backup of all your data is available.