Page suivante Page précédente Table des matières

12. Surveillance du Gatekeeper

12.1 Port d'état

Le port d'état est l'interface externe pour surveiller et contrôler le gatekeeper. Via cette interface, le gatekeeper enverra des messages à propos des appels en cours de tous les clients connectés et recevra des commandes.

Les messages envoyés par le gatekeeper au port d'état sont regroupés en trois niveaux de trace de sortie:

Le client connecté au port d'état peut choisir le niveau de trace par lequel il est intéressé.

L'interface est un simple port TCP (par défaut: 7000), vous pouvez vous connecter avec telnet ou un autre client. Une exemple d'autre client est l'IHM Java, connue sous le nom de GnuGk ACD.

Domaines d'Application

Ce que vous faîtes avec les pouvoirs de l'Interface d'Etat dépend de vous, mais voici quelques idées:

Exemples

Supposons que vous êtes juste intéressés par les CDRs (enregistrement des détails des appels) et vous voulez les traiter en lot à intervalles réguliers.

Voici un script Perl simple (gnugk_cdr.pl) qui lance le gatekeeper et un client très simple pour l'Interface d'Etat et écrit juste les CDRs dans un fichier de log. Vous aurez besoin de le modifier un peu pour qu'il corresponde à vos besoins.

#!/usr/bin/perl
# sample program that demonstrates how to write the CDRs to a log file
use strict;
use IO::Socket;
use IO::Handle;

my $logfile = "/home/jan/cdr.log";      # CHANGE THIS
my $gk_host = "localhost";
my $gk_port = 7000;
my $gk_pid;

if ($gk_pid = fork()) {
        # parent will listen to gatekeeper status
        sleep(1);       # wait for gk to start
        my $sock = IO::Socket::INET->new(PeerAddr => $gk_host, PeerPort => $gk_port, Proto => 'tcp');
        if (!defined $sock) {
                die "Can't connect to gatekeeper at $gk_host:$gk_port";
        }
        $SIG{HUP} = sub { kill 1, $gk_pid; };   # pass HUP to gatekeeper
        $SIG{INT} = sub { close (CDRFILE); kill 2, $gk_pid; };  # close file when terminated

        open (CDRFILE, ">>$logfile");
        CDRFILE->autoflush(1);  # don't buffer output
        while (!$sock->eof()) {
                my $msg = $sock->getline();
                $msg = (split(/;/, $msg))[0];   # remove junk at end of line
                my $msgtype = (split(/\|/, $msg))[0];
                if ($msgtype eq "CDR") {
                        print CDRFILE "$msg\n";
                }
        }
        close (CDRFILE);
} else {
        # child starts gatekeeper
        exec("gnugk");
}

Rappelez-vous qu'il ne s'agit que d'un exemple pour montrer l'utilisation du port d'état. Vous pouvez utiliser le module FileAcct pour tracer les CDRs dans un système de production.

IHM pour le Gatekeeper

Il y a plusieurs Interfaces Home Machine (IHM - GUI) pour le gatekeeper.

12.2 Commandes (Référence)

Cette section liste toutes les commandes que vous pouvez émettre sur le port d'état (manuellement ou avec une application externe). Les commandes ne tiennent pas compte de la casse (majuscules / minuscules). Mais certains paramètres peuvent en tenir compte.

La commande help ou h affichera la liste de toutes les commandes disponibles.

12.3 Messages (Référence)

Cette section décrit la sortie des messages sur l'interface d'état.


Page suivante Page précédente Table des matières