[Frage] Ausfall von SIP-Leitungen signalisieren?

sunnyman

Aktives Mitglied
Mitglied seit
13 Jan 2006
Beiträge
1,124
Punkte für Reaktionen
145
Punkte
63
Hallo Forum,

man kennt das. Nicht immer klappt das Zusammenspiel von Asterisk und SIP-Providern 100%ig, aber auch bei professionellen SIP-Providern kann es ja durchaus passieren, dass die Verbindung mal ausfällt. Am Telefon sehe ich das aber nicht, da die SIP-Registrierung zum Asterisk ja immer schön stabil ist.

Gibts in Asterisk eine integrierte Mechanik, die man nutzen kann beim Ausfall einer Leitung (also wenn bsp. ein Peer in den Status UNREACHABLE rutscht) Aktionen auszulösen? Bei mir ist aktuell Asterisk 11 im Einsatz.
 
Vorausgesetzt qualify ist an, feuert Asterisk das AMI Event PeerStatus. Um das zu überwachen, brauchst Du einen AMI Listener Daemon, ich benutze PAMI.

Ob es für die Änderung des Registrierungsstatus direkt ein AMI Event gibt weiß ich nicht auswendig.

Alternativ jede Minute ein Skript laufen lassen, das `asterisk -rx sip show registry` oder per AMI SIPpeerstatus auswertet.
 
Zuletzt bearbeitet:
(Wie) kriegt man damit den Status "Provider nicht erreichbar"? Ich dachte da kommt zB. INUSE und dergleichen, also würde die LED am BLF leuchten, sobald jemand extern telefoniert?
 
Weiss nicht. Twinkle hat bei den Buddies mit 0xxxxxxx nen smiley, bei 0-Lineausfall ein rotes Kreuz angezeigt.
 
Danke für eure Tipps. Bei dem Rechner für den ich es konkret brauche handelt es sich um meine Heiminstallation von einem Rapberry Pi (Model B, also Version 1 wohlgemerkt :) ). Daher sind die Ressourcenmonster wie die großen Monitoring-Klötze nix.
PAMI habe ich mir angeschaut, aber das scheint mir für diesen Zweck auch etwas mit Kanonen auf Spatzen geschossen zu sein. Zumindest eine recht hohe Lernkurve, sich erstmal in das Framework und auch in die Handhabung mit dem Paketmanager einzuarbeiten.

Ich werde es wohl ähnlich der zweiten von rentier vorgeschlagenen Lösung umsetzen und mir ein Skript basteln das ich per cron aufrufen lasse.Hier http://the-asterisk-book.com/1.6/asterisk-manager-api.html gibt es eine schöne Lösung mittels expect, so werde ich das dann auch umsetzen.

Ich warte also mal bis zum nächsten Ausfall um dann genau nachzuschauen wie sich die Fehlersituation darstellt. Ich werde berichten und das Skript hier dann ggf. posten.
 
als kleine Einstiegshilfe mein eigenes Trivial-Script mit dem ich per cronjob einen SIP Server (auf Raspberry 3) ueberwache. Das Script rufe ich direkt per cronjob auf. Wenn es keine Vorfaelle gibt wird nichts ausgegeben. Ansonsten gibt es eine Email mit Status so wie halt bei cronjobs ueblich.
Wenn man DEBUG=1 setzt, dann wird immer der Status ausgegeben.
Code:
#!/bin/sh

cat > $0_$$.awk << !

BEGIN {
    system("rm $0_$$.awk")

    DEBUG = 0              # set this for some debug output
    MACH = "sip-server-ip" # remote machine name
    OKS_CHECK =  5         # how many 'status=ok' peers are required
    REGS_CHECK = 7         # how many 'Registered hosts' are required
    
    CMD = "ssh -o ConnectTimeout=5 " MACH " /usr/sbin/asterisk -nrx \\\\\"sip show peers\\\\\"\\\; /usr/sbin/asterisk -nrx \\\\\"sip show registry\\\\\" 2>&1"
    while (CMD | getline line > 0) {
        SAVE[CNT++] = line
        if (match(line, " OK ")) ++OKS_FOUND
        if (match(line, " Registered ")) ++REGS_FOUND
    }
    if (DEBUG \
     || OKS_FOUND < OKS_CHECK \
     || REGS_FOUND < REGS_CHECK) {
        for (i = 0; i < CNT; ++i) print SAVE[i]
        print "----------------------------"
        print "OKS_FOUND: "  OKS_FOUND  + 0 "/" OKS_CHECK
        print "REGS_FOUND: " REGS_FOUND + 0 "/" REGS_CHECK
        print "----------------------------"
    }
}
!
exec awk -f $0_$$.awk
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.