Asterisk + Solution de monitoring Monast

monast_logo

Monast est positionné par ces développeurs comme la solution de monitoring avec le panneau d’administration pour gérer des plusieurs fonctionnalités d’Asterisk. License – BSD. Project créé sur les bases de Python (daemon de connexion via AMI avec Asterisk), PHP, JS (AJAX).

monast_demo

Possibilités de la surveillance :

– monitoring de plusieurs serveurs d’Asterisk ;
– le mode multi utilisateurs avec de restriction des droits ;
– possibilité de voir toutes les utilisateurs et peers (SIP, IAX, DAHDI, Khomp, etc…) ;
– affichage des channels et des appels actives ;
– affichage des salles de conférence en marche ;
– affichage des appels parqués ;
– affichage des files d’attentes (Queues)

Fonctionnalités :

– initiation des appelles (originate) ;
– redirection des appelles (transfer) ;
– raccrochage des appelles ;
– mise en parc de l’appel en cours ;
– écoute discrète (ChanSpy) ;
– invitation en conférence ;
– permet de gérer la file d’attente de l’appel en cours ;
– gestion de la conférence ;
– exécution des commandes dans CLI d’Asterisk ;

Installation :

J’ai testé Monast sur Ubuntu 12.04 LTS et Asterisk 1.8

1. On va vérifier la présence de Python dans le système :

# python –version


Si on ne voit pas que Python est installé, on le fait :

# sudo apt-get update && sudo apt-get install python

2.Pour gérer Monast on va utiliser l’interface WEB. Il faut installer serveur WEB avec support PHP et PHP-Pear. S’il n’a pas été fait avant, on l’installe :

# sudo apt-get install apache2 php5 php-pear

3. On installe toutes les dépendances nécessaires :

– Twisted Python 10.1+
– zope.interface 3.6+
– Starpy SVN-Trunk
– PHP PEAR Packages: (HTTP_Client)

Le paquet zope.interface a déjà été dans le système.
On installe le paquet HTTP_Client :

# sudo pear install HTTP_Client

Si vous avez Ubuntu 12.04 l’erreur suivante sera apparaitre :

Le paquet php-pear en Ubuntu 12.04 marche correctement uniquement avec PHP <= 5.2.

Pour PHP => 5.3 il faut faire :

# service fail2ban stop
# wget http://pear.php.net/go-pear.phar
# php go-pear.phar

Et encore :

# sudo pear install HTTP_Client

Comme nous voyons il nous propose d’installer un nouveau paquet HTTP_Request2 :

# sudo pear install HTTP_Request2

4. Maintenant on va installer Twisted et StarPy depuis des sources :

# apt-get install build-essential gcc-4.5 libssl-dev python-dev
# cd /usr/src/# wget http://twistedmatrix.com/Releases/Twisted/13.2/Twisted-13.2.0.tar.bz2# tar jxvf Twisted-13.2.0.tar.bz2# cd Twisted-13.2.0# python setup.py install
# cd /usr/src

# wget http://downloads.sourceforge.net/project/starpy/starpy/1.0.0a13/starpy-1.0.0a13.tar.gz

# tar zvxf starpy-1.0.0a13.tar.gz

# cd starpy-1.0.0a13

# python setup.py install

5. On installe Monast :

# cd /usr/src/
# wget http://downloads.sourceforge.net/project/monast/Monast%20for%20Asterisk%201.4%2C%201.6%20and%201.8/3.0b4/monast-3.0b4.tar.gz# tar zvxf monast-3.0b4.tar.gz

# cd monast-3.0b4/

# ./install.sh

Le scripte de démarrage Monast s’installe pour SuSE, RedHat, Debian, Gentoo, Slackware, FreeBSD mais n’est pas pour Ubuntu. On peut utiliser le scripte de Debian :

# cp contrib/init.d/rc.debian.monast /etc/init.d/monast
# chmod 755 /etc/init.d/monast
# update-rc.d monast defaults 91 60

L’Installation de Monast est terminé mais le service monast sera lancé âpres la configuration.

Configuration :

1. On va configurer l’ Asterisk pour qu’il puisse interconnecter avec Monast. Il faut préparer le fichier manager.conf d’Asterisk :

; Asterisk Call Management support

[general]

; activation du service Manager

enabled = yes

; port TCP par défaut

port = 5038

; interface réseau à l’écoute

bindaddr = 0.0.0.0

displayconnects = yes ; affichage des connexions dans le console d’Asterisk

webenabled = no ; On désactive Asterisk static_http

allowmultiplelogin = yes ; On donne l’accès pour l’utilisateur depuis plusieurs lieus de travail simultanément

timestampevents = yes

[monast_user]
; mot de pass

secret=azerty123

; blocage de toutes les adresses pouvant accéder au manager
deny=0.0.0.0/0.0.0.0

; autorisation des adresses pouvant accéder au manager

permit=127.0.0.1/255.255.255.0

permit=192.168.0.20/255.255.255.0

permit=192.168.2.0/255.255.255.0
writetimeout=100 ; timeout pour envoyer les commandes

; attribution des permissions à l’utilisateur

read=system,call,log,verbose,command,agent,user,config,originate,reporting

write=system,call,log,verbose,command,agent,user,config,originate,reporting

On relit le fichier manager.conf

# asterisk -rx « manager reload »

2. On configure le fichier monast.conf

# nano /etc/monast.conf

# Copyright (c) 2008-2011, Diego Aguirre

# All rights reserved.#

### Global Section##

[global]

# Bind client connetions on host:port

bind_host = 127.0.0.1        ; On permit la connexion localhost

bind_port = 5039        ; numéro de port pour la connexion

# Use client autentication on browser

auth_required = true        ; authentification est obligatoire

## ===================================

##

## Servers Definitions

##

[server: Server1]        ; Les paramètres pour le premier serveur

hostname = 192.168.0.20

hostport = 5038

username = monast_user

password = azerty123

# Default user context

default_context = default

# Context to use in transfer calls

transfer_context = default

# Context and prefix for meetme

meetme_context = default

meetme_prefix =

[server: Server2]        ; Les paramètres pour le deuxième serveur

hostname = 192.168.0.25

hostport = 5038

username = monast_user

password = azerty123

# Default user context

default_context = default

# Context to use in transfer calls

transfer_context = default

# Context and prefix for meetme

meetme_context = default

meetme_prefix =

## ===================================

##

## Peers Definitions

##

[peers]

# sort peers (options: channel, callerid)

sortby = callerid

# default show/hide

default = show

# hide peer when default = show

;<Server Name>/SIP/user-1 = hide

# show peer when default = hide

;<Server Name>/SIP/user-2 = show

# always show peer.

;<Server Name>/SIP/user-3 = force

# force CallerID (only in forced mode)

;<Server Name>/SIP/user-4 = force,Diego Aguirre <5555>

# Create peer groups

;<Server Name>/@group/Group 1 = SIP/user-1,SIP/user-2

;<Server Name>/@group/Group 2 = SIP/user-3,SIP/user-4

## ===================================

##

## Meetmes / Conferences Definitions

##

[meetmes]

# default show/hide

default = hide

# hide meetme when default = show

;<Server Name>/1234 = hide

# show meetme when default = hide

;<Server Name>/1234 = show

# always show meetme

;<Server Name>/1234 = force

## ===================================

##

## Queues Definitions

##

[queues]

# defualt show/hide

default = hide

# show queue queue01

;<Server Name>/queue01 = show

# show queue queue02 with display name Support

;<Server Name>/queue02 = show,Support

# hide queue queue03

;<Server Name>/queue03 = hide

# Map Member name

;<Server Name>/@member/SIP/user-1 = Diego Aguirre <5555>

## ===================================

## Define users and roles to use on auth_required is set to true

## roles must be:

## originate : user can originate, transfer, park and drop calls

## agent : user cans add, remove, pause and unpause members on queues

## command : user can execute asterisk cli commands

## spy : user can start a spy

[user: admin]        ; super utilisateur

secret = SuperPassword

roles = originate,queue,command,spy

servers = ALL

[user: manager]    ; utilisateur-observateur

secret = password

roles = originate

servers = ALL

[user: server1]

secret = 12345

roles = originate

servers = Server1

[user: server2]

secret = 54321

roles = originate,command

servers = Server2

# /etc/init.d/monast restart

A la fin nous entrons dans interface WEB:

monast2

user: admin
Secret: SuperPassword

monast3

Laisser un commentaire