Hauptmenü

Fhem als Service Monitor

Begonnen von mrbreil, 31 März 2015, 11:06:25

Vorheriges Thema - Nächstes Thema

mrbreil

FHEM kann per email und pushbullet kommunizieren, es kann die Erreichbarkeit per presence prüfen, es kann mich zu Hause akustisch darauf hinweisen das etwas im argen ist! Deshalb kam mir der Gedanke damit meinen Webserver und email server zu überwachen. Nur leider finde ich keine Möglichkeit mit presence auf einen bestimmten Port zu prüfen. Damit kann 9000, so haben wir unsere neue Mitbewohnerin getauft ;), zwar darauf achten das der Server erreichbar ist, ist aber nicht im Stande zu erkennen ob ein gewisser Dienst läuft.

Habe ich forum etwas übersehen oder in der commandref überlesen? Hat vielleicht jemand ne Idee wie man das umsetzten könnte?

Grüße Christian

Icinger

Webserver könntest zB mit HTTPMOD überwachen......

Regelmäßig eine Seite pollen, wenn die nicht erreichbar ist --> Meldung.

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

marvin78

Oder den Modus function oder shellscript verwenden.

mrbreil

Danke, gute Idee. Diese kam mir auch schonmal. Mit mailcheck könnte ich den email server überwachen. Aber ich denke es muss doch einen allgemeinere Lösung geben.

Zephyr

wenn Du schon soweit bist, dass Du einen Webserver betreibst, bekommst Du bestimmt auch ein "echtes" Monitoringtool wie Munin oder Nagios eingerichtet. Die prüfen noch ein paar Sachen mehr und können ebenfalls über Pushbullet, Pushover etc. informieren.

Viele grüße
Zephyr
FHEM 5.5 auf Fritz!Box 7390 und Beagle Bone black mit RFXtrx433

mrbreil

Ziel ist es ja aber das fhem weiß, was online ist und was nicht.

Habe mir jetzt etwas in "COPY & Paste" programiert, kann leider kein Perl.
Bei mir scheint es bis jetzt zu funktionieren. Vielleicht hilft es jemand anderen auf die Sprünge, wenn er vor dem selben Problem steht.

Noch ein nötiges Packet installieren
apt-get install libnet-ping-external-perl

In die 99_myUtils.pm muss folgendes rein.
use Net::Ping::External qw(ping);

sub
ServiceMonitor($$)
{
    my ($host, $port)    = @_;
    my $status;
   
    # Create a new ping object
    my $p = Net::Ping->new("syn");
    $p->port_number($port);
    $p->ping($host,10);
   
    # perform the ping
    if ( $p->ack ) {
$status = 1;
    }
    else{
    $status = 0;
    }
   
    # close our ping handle
    $p->close();
    return $status;
   
}


Dann ein PRESENCE Device erstellen.

define Pre_KSL_Email PRESENCE function {ServiceMonitor("IP","PORT")}

mrbreil

Jetzt muss ich für meine eigene Lösung eine Frage stellen. Möchte jetzt meine Lösung auf einen Raspberry einsetzten, vorher normaler PC. Erhalte aber immer folgende Fehlermeldung und kann damit auch nach vielen Google Versuchen nix anfangen:

Zitaterror while processing check: unexpected function output (expected 0 or 1): Can't locate object method "new" via package "Net::Ping" at

Hängt das mit der Architektur zusammen?
Wie kann ich das beheben?

Vielen Dank für eure Hilfe

gent

Hi,

Net::Ping scheint ein perl Modul zu sein. Eventuell mal mit

sudo cpan install Net::Ping

nachinstallieren.

Viele Grüße
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

mrbreil

Danke, hatte ich vorher schon probiert.
Habe es jetzt nochmal getan

Net::Ping is up to date (2.59).

Aber gleicher Fehler

gent

Hi,

aber

sudo apt-get install libnet-ping-external-perl

hast Du auch auf dem RPi ausgeführt?

Habe ich vorher gar nicht gesehen gehabt, aber Du brauchst natürlich nur die Packages entweder über apt-get oder über cpan installieren. Vielleicht überschneidet sich da jetzt auch was.

Ich hatte das auch mal und musste cpanminus (heißt glaube ich so) zuerst installieren, um ein vermeintlich neueres cpan package wieder weg zu bekommen.

Viele Grüße
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

mrbreil

#10
Zitat von: gent am 04 Mai 2017, 20:22:47
Hi,

aber

sudo apt-get install libnet-ping-external-perl

hast Du auch auf dem RPi ausgeführt?

Habe ich vorher gar nicht gesehen gehabt, aber Du brauchst natürlich nur die Packages entweder über apt-get oder über cpan installieren. Vielleicht überschneidet sich da jetzt auch was.

Ich hatte das auch mal und musste cpanminus (heißt glaube ich so) zuerst installieren, um ein vermeintlich neueres cpan package wieder weg zu bekommen.

Viele Grüße

Ja habe ich ausgefüht. Keine Änderung

gent

Hi,

schade, ich habe gedacht, ich könnte hier helfen. Da ich die gleiche Umgebung habe, habe ich das auch bei mir mal so umgesetzt und erhalte denselben Fehler.

Sorry und viele Grüße
fhem auf rPi3 mit USB boot und M2, cul866 (hm), homebridge, FlowerSens, Shelly, Harmony, WemosD1, Sonoff/Tasmota, grafana, mqtt/mosquitto

mrbreil

Danke gent,

das ist doch schonmal etwas. Wenn es bei mir auf einer x86 Architektur funktioniert, aber bei uns beiden nicht auf arm, könnte es ja vielleicht daran liegen. Wenn sich jetzt noch einer einklinkt, könnten wir das Problem vielleicht lösen.

Danke
 

kadettilac89

Du machst in deiner Sub "use Net::Ping::External qw(ping);" greifst aber mit "my $p = Net::Ping->new("syn");" auf den Constructor von Net::Ping zu. ..External ist ein Subset und ich denke damit ist nicth alles bekannt.

Teste mal use Net::Ping mit einzubinden. Bin zu wenig Perl-Experte aber der Fehler sieht so aus.

mrbreil

Vielen Dank kadettilac89, hat funktioniert.