Ankündigung

Einklappen
Keine Ankündigung bisher.

Logikbaustein 12749_ServiceCheck

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Logikbaustein 12749_ServiceCheck

    Der Baustein überprüft eine Anzahl von Diensten auf Response Zeit und Rückgabewert
    Zertifikat werden auf ihre Restgültigkeit überprüft.

    2020-01-28_18h20_18.png

    Mindestzykluszeit an Eingang 1 ist 5 Sekunden, es werden bis zu 12 Serviceworker gestartet die im Hintergrund die Abfragen, entkoppelt von der Homeserver Logik, auswerten.
    Limit ist derzeit auf 100 Bausteine gesetzt.

    Bausteine werden im Fehlerfall deaktiviert (also bei Python Exceptions nicht bei negativen Tests)

    Unterstüzte URLs an Eingang 2
    * HTTP und HTTPS Webseitenabfragen
    http://host_oder_ip/pfad
    http://host_oder_ip:8080/pfad?query=abc
    https://host/
    Bei HTTP Anfragen kann über die Eingänge 5 und 6 Benutzer und Passwort im Basic Auth gesendet werden
    Wenn bei HTTP an Eingang 4 Daten anliegen werden diese als POST gesendet
    die Daten können als String oder aber als JSON Dict übergeben werden
    * DNS Abfragen
    dns://dns_server/google.com
    dns://ipdesdns/PTR/8.8.8.8
    dns://ipdesdns/AAAA/www.google.de
    weiter Querytypen sind SRV/NS/CNAME/MX/SOA/TXT
    * NTP Abfragen
    ntp://servername
    * SSH Secure Shell
    ssh://servername
    * RDP Remote Desktop Protokoll
    rdp://servername
    * ESX / vSphere (derzeit begrenzt auf 20 VMs)
    esx://servername
    * NRPE Nagios (https://www.thomas-krenn.com/de/wiki...ieren_und_konf igurieren * WICHTIG dhparams MUSS mind. 2048b sein)
    nrpe://servername/[proto]/command

    mit tcp://ip: port oder udp://ip: port können auch Abfragen an beliebige Dienste gemacht werden

    Erfolgsprüfung
    Es sind bereits Standardüberprüfungen für manche Protokolle enthalten
    So wird z.B. bei HTTP Abfragen eine HTTP Status 200 erwartet
    bei DNS Abfragen Return Code 0
    Bei NTP wird erwartet das die gesendete Zeit mit dem Empfangenen TX_TIMESTAMP des NTP Packets übereinstimmt (nicht etwa die Zeit)

    Bei allen Tests wird außerdem die Antwortzeit als Voraussetzung für Erfolg erwartet, bei einem Timeout wird -1 zurück gegeben

    Sollte ein Zertifikat noch nicht gültig sein oder abgelaufen wird dies ebenfalls zu einem negativen Erfolg führen

    Über die Eingänge 7 und 8 kann die Überprüfung aber auch verändert werden.
    Um z.B. bei einem HTTPS Server den Zertifikats Fingerprint zu überprüfen
    EN[7] "sha256hashdesZertikats"
    EN[8] "{fingerprint}"
    so wird die Erfolgsprüfung nur bei übereinstimmen erfolgreich

    weitere Beispiele sind
    HTTP "{status}" "401" um zu überprüfen ob eine Benutzerüberprüfung aktiv ist
    DNS "{result}" "dns.google" bei Überprüfung von 8.8.8.8 um die Auflösung zu einem bestimmten Namen vorauszusetzen
    Das Format für das Template ist das normale Python String Format - so können auch z.B. nur Teile der Antwort überprüft werden
    "{result:5.5}" nur die ersten 5 Zeichen

    * calc() Funktion - mit der Funktion calc(Zahl Operator Zahl) kann das Ergebnis berechnet werden. Folgende Operatoren sind verfügbar
    + Addition, - Subtraktion, * Multiplikation, / Division, % Modulus, > größer, >= größer gleich, = gleich, != ungleich, < kleiner, <= kleiner gleich
    die Funktion kann auch verschachtelt werden - calc(calc(100/Wert)/Wert)

    Variablen:
    Code:
    Verbindung:
    {responsetime} Zeit bis zur Verbindung
    {result}
    Zertifikate (alle Protokolle):
    {ssl_cipher_rating} Bewertung des Ciphers
    {ssl_cipher} verwendeter Cipher
    {certdata[validtodays]} Zeit in Tagen bis Zertifikat abläuft
    {certdata[validfromdays]} Zeit in Tagen seit Zertifikat gültig
    {certdata[subjectAltName][0]} SANs mit [1....2] usw
    {certdata[serialNumber]} Seriennummer
    {certdata[fingerprint]} SHA Fingerprint
    {certdata[subject]} / {certdata[issuer]} CN/DN
    DNS:
    {rcode}
    {auth}
    {recursion}
    {isopen}
    {records}
    {ttl}
    {rtype}
    {soa_master}
    {soa_mail}
    {soa_serial}
    {soa_refresh}
    {soa_retry}
    {soa_expire}
    {soa_min}
    {srv_prio}
    {srv_weight}
    {srv_port}
    HTTP:
    {status}
    {header}
    SSH:
    {sshversion}
    {sshproto}
    NTP:
    {version}
    {mode}
    {stratum}
    {poll}
    {precision}
    {rootdelay}
    {root_precision}
    {refid}
    {ref_ts}
    {orig_ts}
    {recv_ts}
    {tx_ts}
    {match}
    NRPE:
    {code}
    {result}
    ESX:
    {esx[fullName]} ESX Version
    {hoststatus[hardware.systemInfo.vendor]}
    {hoststatus[hardware.biosInfo.biosVersion]}
    {hoststatus[runtime.inMaintenanceMode]}
    {hoststatus[runtime.powerState]}
    {hoststatus[hardware.systemInfo.model]}
    {hoststatus[overallStatus]}
    {datastore[dsname][freepercent]}
    {datastore[dsname][summary.capacity]}
    {datastore[dsname][summary.freeSpace]}
    {datastore[dsname][summary.uncommitted]}
    {vmstatus[vmname][guest.ipAddress]}
    {vmstatus[vmname][guestHeartbeatStatus]}
    {vmstatus[vmname][guest.guestFullName]}
    {vmstatus[vmname][guest.hostName]}
    {vmstatus[vmname][runtime.powerState]}
    {vmstatus[vmname][guest.toolsVersionStatus"]}
    {vmstatus[vmname][summary.quickStats.guestMemoryUsage]}
    .....



    Welche Variablen in den Templates genutzt werden können ist über den JSON Ausgang zu testen, dort werden alle relevanten Daten übergeben.



    Über eine Spende über Paypal würde ich mich freuen

    Zuletzt geändert von NilsS; 25.02.2020, 20:12.
    Nils

    aktuelle Bausteine:
    BusAufsicht - ServiceCheck - Pushover - HS-Insight

    #2
    Hallo Nils

    Werde das gleich mal testen. Hab grad nen aktuellen Fall bei dem das helfen könnte.

    Danke und Gruss, Holger
    ECMACOM GmbH
    Konzeption, Planung, Implementation, Unterhalt
    www.ecmacom.ch
    www.knxshop4u.ch

    Kommentar


      #3
      Baustein aktualisiert in Post #1
      DNS wird jetzt das eigene genutzt - läuft ab Firmware 4.5 und aufwärts
      Nils

      aktuelle Bausteine:
      BusAufsicht - ServiceCheck - Pushover - HS-Insight

      Kommentar


        #4
        Wow, was ein Interesse .. aber der Thread ließ sich auch nicht finden mit der Suche... naja ..
        Version 0.42 ist im Download sobald vento66 so nett war.
        Nils

        aktuelle Bausteine:
        BusAufsicht - ServiceCheck - Pushover - HS-Insight

        Kommentar


          #5
          Was genau überprüft ihr denn mit dem Baustein und was macht ihr dann mit den Erkenntnissen?

          Kommentar


            #6
            Ich überprüfe damit z.B.
            * das Ablaufdatum von Zertifikaten (Let's Encrypt)
            * den SOA Record meiner Domain auf den richtigen SOA-Master (https://de.wikipedia.org/wiki/SOA_Resource_Record)
            * die Erreichbarkeit meines DNS Servers für Dynamisches DNS
            * die lokalen Dienste auf der Firewall (wie DNS ereichbar und löst den lokalen DynDNS Namen dabei gleich mit auf und gibt mir die IP zurück.)
            * lokaler NTP Server auf der Firewall
            * SSH Server auf VServern und lokal Erreichbar
            * HS Debugseite

            geplant ist noch
            * ESX (generelle Funktion aber auch VM und DataStore Infos)
            * Websocket

            Nils

            aktuelle Bausteine:
            BusAufsicht - ServiceCheck - Pushover - HS-Insight

            Kommentar


              #7
              Hi NilS.
              Das Prüfen ob ein bestimmtes Gerät sich im lokalen W-LAN befindet ist damit auch möglich?
              Besten Gruß
              norman

              Kommentar


                #8
                Wenn du eine Art Ping meinst, dann ja bedingt. Du brauchst halt einen Service der auf dem Gerät auch erreichbar ist.

                Bei Telefonen etc. ist das wohl eigentlich nicht wirklich der Fall.

                Ich hatte beim iPhone was von Port 62078 gelesen für UPNP und ITunes Sync. Das scheint zu funktionieren aber wohl hauptsächlich wenn das Gerät auch an (Display an) ist.

                EDIT:
                Code:
                tcp://ipdesiphone:62078
                Nils

                aktuelle Bausteine:
                BusAufsicht - ServiceCheck - Pushover - HS-Insight

                Kommentar


                  #9
                  NilsS
                  Erstmal vielen Dank für diesen Baustein,
                  aber könntest du ihn evtl. so abändern, dass man auch einen "Host Check" ohne Service machen könnte??
                  Der alte Baustein funktioniert ja leider nicht unter dem Experten 4.9 und mein gekaufter Baustein "Logik Ping" leider ebenfalls nicht

                  Kommentar


                    #10
                    Es liegt nicht an 4.9 oder sonstigem sondern ist der Nebeneffekt das ab 4.9 das hs_main (Das Homeserverprogramm) nicht mehr als root läuft.
                    Das lässt sich aus dem Programm heraus natürlich nicht ändern (wäre ja witzlos wenn man kein Admin mehr ist das man sich selbst wieder dazu machen könnte)
                    Um das von HostCheck, LogikPing?, oder auch dem Programm Ping verwendete ICMP Protokoll nutzen zu können, muss man einen so genannten RAW Socket aufmachen (das erfordert root Rechte).

                    Es gibt eine Möglichkeit dem Programm hs_main diese Rechte wieder zu geben ohne das das Programm wieder mit Root Rechten läuft (http://man7.org/linux/man-pages/man7...ilities.7.html)

                    Ich habe bereits Gira/Dacom darüber informiert und darum gebeten das die Capabilities CAP_NET_BIND_SERVICE und CAP_NET_RAW dem hs_main über setprivs beim Starten zurück gegeben werden. Wir werden sehen wie sie sich dazu entscheiden. DU könntest das natürlich auch selber machen, indem du die Firmware manipulierst.

                    Alle nötigen Programme dafür sind auf dem HS vorhanden. Nur die veränderte Firmware darf natürlich keiner zur Verfügung stellen.
                    Nils

                    aktuelle Bausteine:
                    BusAufsicht - ServiceCheck - Pushover - HS-Insight

                    Kommentar


                      #11
                      Abwarten bis die 4.10 kommt .
                      greetz Benni

                      Kommentar


                        #12
                        Vielen Dank für deine ausführliche Antwort.
                        Dann muss ich wohl wirklich auf die Version 4.10 warten irgendwann im Jahre 2021...

                        Kommentar


                          #13
                          Nein. In 4.10 ist das nicht behoben
                          Nils

                          aktuelle Bausteine:
                          BusAufsicht - ServiceCheck - Pushover - HS-Insight

                          Kommentar


                            #14
                            Zitat von NilsS Beitrag anzeigen
                            Nein. In 4.10 ist das nicht behoben
                            was ich gelesen hatte ist das möglich unter

                            /usr/bin/ping

                            und dafür ist kein root notwendigt.
                            Zuletzt geändert von MrDuFF; 24.02.2020, 10:24.
                            greetz Benni

                            Kommentar


                              #15
                              Ja gelesen hab ich das auch. Aber du kannst es ja mal ausführen.
                              HS-Insight und dann
                              Code:
                              !/usr/bin/ping 1.1.1.1
                              Da kommt trotzdem Keine Berechtigung, wer auch immer das getestet hat. Da liegt auch ein ping6 xD .. für wen das auch immer da liegt
                              Nils

                              aktuelle Bausteine:
                              BusAufsicht - ServiceCheck - Pushover - HS-Insight

                              Kommentar

                              Lädt...
                              X