CDR-Stats

De Asterisk Wiki
Ir a la navegación Ir a la búsqueda
Alert.png To Do
Esta página necesita ser completada.
Puedes revisar todas las páginas por completar en este enlace.


CDR-Stats es una interfaz web, que sirve para mostrar todo tipo de estadísticas, basada en el sencillo Registro de llamadas que ofrece Asterisk y en la actualidad, es el más completo al menos, con una licencia Open Source (Mozilla Public License V2).

Logo de CDR-Stats

Descripción General

CDR-Stats es una aplicación web creada por Areski Belaid en 2010, y ofrecida a la comunidad desde entonces. En la actualidad pertenece a Star2Billing Inc, misma compañia creadora del sistema A2Billing

Esta aplicación esta basada en Python, concretamente, en su framework Django [1] y utiliza una base de datos especifica para la gestión del sistema llamada MongoDB (No esta basada en consultas SQL)

Básicamente sirve de interfaz visual, muy atractiva y llamativa, para poder filtrar, y controlar todos los registros CDR que vayan almacenandose en una base de datos SQL (no valido para instalaciones del sistema CDR basados en ficheros CSV).

Instalación

Existen dos partes relacionadas a la instalación del sistema CDR-Stats.

Por un lado la implícita de Asterisk, relacionada a conseguir que el [Registro Llamadas y Eventos|registro de llamadas]] pase a la Base de Datos de forma autónoma.

Por otro lado, sería la instalación de la plataforma Django en la que esta basada CDR-Stats. Para ello el creador provee un script generico en su página web oficial [2]

Hay que decir, que la instalación se ha complicado tanto con las últimas versiones que por eso surgio la idea de utilizar un Script, pero aún así es importante entender el proceso de la instalación al menos en términos generales, porque el script en sí tiene una tendencia demasiado alta a fallar, ya que esta condicionado al entorno Linux que estemos utilizando y cualquier cambio en la versión de un solo componente o forma de realizar algo pararía la ejecución del script y nos dejaría la instalación a medias. Además la instalación por script entiende que estamos trabajando con un usuario root, lo que puede ser no ser el caso, si realizamos la instalación Segura basándonos en las políticas de control de acceso de Asterisk.

En este caso, ofrecemos una versión "manual" de la instalación y menos perecedera dado que hecha la primera parte, la parte de configuración especifica no resulta tan compleja.

En primer lugar descargamos el paquete correspondiente a la última versión de CDR-Stats del siguiente enlace.

A continuación lo descomprimimos en un directorio, por ejemplo:

# unzip cdr-stats-version-x.y.z.zip


Y accedemos al directorio de descompresión, para comenzar a aplicar los cambios. Vamos a preparar la interfaz web primero. Para ello creamos un directorio dentro de nuestra raíz WWW por ejemplo

# mkdir /var/www/cdrstats


# chown -R asterisk:asterisk /var/www/cdrstats/


Ahora en siguiente lugar hay que instalar todo el software necesario para que el sistema CDR-Stats funcione:

# sudo aptitude install python-setuptools python-dev build-essential
libevent-dev libapache2-mod-python libapache2-mod-wsgi git-core mercurial gawk


# sudo easy_install pip


# sudo pip install -e
hg+http://bitbucket.org/andrewgodwin/south/@ecaafda23e600e510e252734d67bf8f9f2362dc9#egg=South-dev


Creamos el directorio para logs:

# sudo mkdir /var/log/cdr-stats


Instalamos CDR-Stats en su directorio de instalación por defecto, en este caso: /usr/share/cdr_stats.

# sudo mkdir /usr/share/cdr_stats/


# sudo chown -R asterisk:asterisk /usr/share/cdr_stats/


# cp -r ./cdr_stats/* /usr/share/cdr_stats



Instalando MongoDB

Es necesario lanzar los siguientes comandos en orden.

Necesitamos instalar el paquete debian para la base de datos Mongo, para ello necesitamos añadir un repositorio y una clave a nuestro sistema Ubuntu:

# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10


# sudo sh -c 'echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart
dist 10gen" >> /etc/apt/sources.list'


# sudo aptitude update


# sudo aptitude install mongodb-10gen


Por otro lado, necesitamos aplicar algunas configuraciones específicas para su funcionamiento:

# cd /etc/init.d/


# sudo update-rc.d -f mongodb defaults


# sudo sed -i "s/#port = 27017/port = 27017/g" /etc/mongodb.conf


# sudo service mongodb restart


Instalando Python Virtual Environment

Instalamos la característica de entornos virtuales.

# sudo easy_install virtualenv


# sudo easy_install virtualenvwrapper


Preparando el entorno Virtual {{Comando|sudo sh -c 'echo "export WORKON_HOME=/usr/share/virtualenvs"
>> ~/.bashrc'}

# sudo sh -c 'echo "source $SCRIPT_VIRTUALENVWRAPPER"
>> ~/.bashrc'


# sudo chown -R asterisk:asterisk /usr/share/virtualenvs/


# source /usr/local/bin/virtualenvwrapper.sh


# mkvirtualenv cdr-stats


# workon cdr-stats


Instalando dependencias Python

# sudo easy_install -U distribute


Ahora creamos un pequeño script para instalar todas las dependencias de Django Python de un golpe gracias a los ficheros de instalación que provee CDR-Stats:

Archivo: ./dependencias_cdrstats.sh
for line in $(cat /usr/src/cdr-stats/install/requirements/basic-requirements.txt)
do
pip install $line
done
echo "Install Django requirements..."
for line in $(cat /usr/src/cdr-stats/install/requirements/django-requirements.txt)
do
pip install $line
done


# sudo chmod +x dependencias_cdrstats.sh


# ./dependencias_cdrstats.sh


Volvemos a instalar la dependencia South ahora en el entorno virtual:

# sudo pip install -e
hg+http://bitbucket.org/andrewgodwin/south/@ecaafda23e600e510e252734d67bf8f9f2362dc9#egg=South-dev


# sudo cp /usr/src/cdr-stats/install/conf/settings_local.py /usr/share/cdr_stats


Vamos a establecer una clave aleatoria para la seguridad del sistema:

# RANDPASSW=`</dev/urandom tr -dc A-Za-z0-9


# sed -i "s/^SECRET_KEY.*/SECRET_KEY = \'$RANDPASSW\'/g" /usr/share/cdr_stats/settings.py


Deshabilitamos el entorno de depuración:

# sed -i "s/DEBUG = True/DEBUG = False/g" /usr/share/cdr_stats/settings_local.py


# sed -i "s/TEMPLATE_DEBUG = DEBUG/TEMPLATE_DEBUG = False/g" /usr/share/cdr_stats/settings_local.py


Y ahora tenemos que acceder al fichero settings_local.py dentro del directorio de instalación settings_local.py para establecer los parametros de configuración de nuestra base de datos MySQL:

Archivo: /usr/share/cdr_stats/settings_local.py
DATABASES = {'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'cdrstats',
'USER': 'asterisk',
'PASSWORD': 'asterisk',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET storage_engine=INNODB',}}}


Creamos la base de datos y le damos privilegios al usuario asterisk:

# mysqladmin -u root -p create cdrstats


Y condecedemos privilegios

# mysql -u root -p -e "GRANT ALL PRIVILEGES ON `cdrstats` . * TO 'asterisk'@'localhost';"


Configuración General

Ahora vamos a realizar algunos ajustes en el sistema dentro del directorio de instalacion:

# cd /usr/share/cdr_stats/


# mkdir .python-eggs


# chown www-data:www-data .python-eggs


# mkdir database


Creamos algunos ficheros para el sistema de logging:

# sudo chown -R asterisk:asterisk /var/log/cdr-stats/


# sudo touch /var/log/cdr-stats/cdr-stats.log


# sudo touch /var/log/cdr-stats/cdr-stats-db.log


# sudo touch /var/log/cdr-stats/err-apache-cdr-stats.log


Ahora creamos la estructura de tablas dentro de la base de datos:

# python manage.py syncdb --noinput


# python manage.py migrate


Y creamos el usuario administrador de CDR-Stats:

# python manage.py createsuperuser


# python manage.py collectstatic -l --noinput


# sudo chown -R $www-data:www-data /usr/share/cdr_stats/database/


# sudo chown -R www-data:www-data /var/log/cdr-stats/


Ahora vamos a configurar la base de datos de CDR de Asterisk:

# mysql -u root -p asterisk -e "ALTER TABLE cdr ADD acctid BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;"


Ahora dentro del fichero settings_local.py modificamos para adaptarlo a nuestra base de datos:

Archivo: /usr/share/cdr_stats/settings_local.py
ASTERISK_CDR_MYSQL_IMPORT = {
'127.0.0.1': {
'db_name': 'asterisk',
'table_name': 'cdr',
'host': 'localhost',
'user': 'asterisk',
'password': 'asterisk',
},}



Instalando la Interfaz Web

Copiamos dentro todos los ficheros relativos a la interfaz web, dentro del directorio que descomprimimos el paquete CDR-Stats:

# sudo cp -r install/landing-page/* /var/www/cdrstats/


Ahora creamos un fichero dentro del directorio Apache:

Archivo: /etc/apache2/sites-enabled/welcome-cdr-stats.conf
<VirtualHost *:80>
DocumentRoot '/var/www/cdrstats'/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory '/var/www/cdrstats'>
Options Indexes IncludesNOEXEC FollowSymLinks
allow from all
AllowOverride All
allow from all
</Directory>
</VirtualHost>


Y eliminamos el script por defecto:

# sudo rm /etc/apache2/sites-enabled/000-default




Referencias

  1. Django Project, Django Software Foundation (2005)
  2. Script de Instalación de CDR-Stats, en Inglés, Areski Belaid

Véase también

Enlaces Externos

  • Mongo DB, página oficial de esta Base de Datos no Relacional.
  • A2Billing, pagina oficial del sistema de facturación A2Billing