.titleBar { margin-bottom: 5px!important; }

Überwachen ob Asterisk läuft ?

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von Fux, 18 Nov. 2004.

  1. Fux

    Fux Mitglied

    Registriert seit:
    3 Juni 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo zusammen,

    es ist zwar seltener geworden aber ab und zu stürzt Asterisk ja doch mal ab.

    Da wäre doch ein kleines Shellscript ganz nützlich, welches regelmäßig prüft, ob * läuft und falls nicht * wieder neu startet.

    Leider sind meine Linux-Kenntnisse sehr begrenzt - daher bekomme ich das alleine nicht hin.

    Mein Ansatz wäre: ps aux | grep asterisk -> * enthalten ? -> nein -> asterisk starten.
    Der schwierigste (und für mich im Moment unlösbare Teil) ist "* enthalten".

    Jemand einen Tip parat ?
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    schau Dir mal das Verzeichnis /var/run/ an. Solange der Asterisk läuft, gibt es dort eine Datei asterisk.pid und eine asterisk.ctl

    Das sollte als erster Anhaltspunkt genügen und 99% Deiner Ausfälle abdecken.
     
  3. Fux

    Fux Mitglied

    Registriert seit:
    3 Juni 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    So sieht meine momentane Lösung aus:

    Code:
    #!/bin/sh
    checkproc /usr/sbin/asterisk
    if [ $? != 0 ] ; then /usr/sbin/asterisk; echo "Asterisk restarted"; exit; fi
    
    EDIT:

    Das Script lasse ich per cron alle 5 Minuten ausführen.
    Der sinn des "Echo"-Befehls ist der, daß ich so sehen kann, wann * neu gestartet werden mußte, da mir die Ausgabe des Scriptes (so denn eine vorhanden) per Mail zugestellt wird.

    @Beta: Danke für den Tip. Sicher auch ein gangbarer Weg. Leider habe ich diesmal keine Mail bekommen, daß du geantwortet hast. (Obwohl " Benachrichtigt mich, wenn eine Antwort geschrieben wurde" aktiviert war)
     
  4. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
  5. Fux

    Fux Mitglied

    Registriert seit:
    3 Juni 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hm, dann hätte ich mir das ja wohl auch sparen können.
    Oder ?

    So ein Script hätte doch nur Vorteile, wenn es nicht einfach nur prüfen würde, ob der Prozess noch existiert, sondern ob * auch noch tut was es soll.
    Es müßte also irgendiwe checken, ob die Funktionen noch da sind.
     
  6. TomS

    TomS Neuer User

    Registriert seit:
    13 Nov. 2004
    Beiträge:
    199
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    @fux:
    vieleicht kann man über agi oder die management-schnittstelle (vieleicht sogar remote?) prüfen ob sich der * noch rührt? Wenn * einfriert ist ja nicht mal mehr ein "reload" der Konfig möglich - dann muß der Prozess mit killproc entfernt werden. Für einen "einfachen Absturz" (der vermutlich öffter als ein Einfrieren des Prozesses vorkommt) ist Dein Script praktisch.

    @betateilchen:
    die Lösung mit respawn läuft so aber nur, wenn zum Start von Asterisk keine weiteren Treiber benötigt werden. Bei einer Bristuffed-Version (hfc) müssen zum ersten Start auch noch die zaphfc-Treiber mit "make loadNT" geladen werden...