Asterisk - A2Billing - OpenSIPs - Redis : Contar canales en un sistema con balanceo de carga

En otro articulo he mostrado como contar los canales de dos servidores OpenSIPs que trabajan con balanceo de carga compartido apoyándose en un servidor NoSQL, en ese caso Redis. En este articulo, bastante extenso, veremos como contar los canales asignados a cada cliente presente en A2Billing. Si el servidor Asterisk fuera solamente uno, no habría ningún tipo de problema ya que podríamos utilizar las funciones GROUP y GROUP_COUNT. Como los servidores son 2 o más, este tipo de solución no funciona. Tampoco funciona la cuenta de canales utilizando una tabla MySQL donde estén presentes los números de canales asignados a cada cliente. Esto porque si el sistema tiene muchas llamadas, los distintos servidores Asterisk acceden a la tabla al mismo tiempo y el resultado es que los canales no se cuentan correctamente.

La ultima opción que había utilizado era contar los canales directamente en OpenSIPs basándome en la IP de origen de las llamadas, pero se presentaban distintos problemas:

  • clientes que utilizaban la misma cuenta en A2Billing pero enviaban las llamadas desde distintas IP
  • clientes que por una mala configuración de la PBX, llegaban a OpenSIPs con su IP privada en lugar de la publica
  • clientes que no trabajaban con una IP fija

Por fin encontré este articulo que ha resuelto definitivamente mis problemas.

La solución se basa en un servidor Redis 2.4.10, la librería Perl Redis y una conexión ODBC a la base de datos A2Billing para la consulta de la tabla cc_card que contiene los datos de los clientes. La versión de CentOS es la 6.4 32bit

En la primera parte vamos a configurar la conexión ODBC a la base de datos de A2Billing en todos los servidores Asterisk. Los archivos a configurar son:

  • odbcinst.ini
  • odbc.ini
  • res_odbc.conf
  • func_odbc.conf

Si no tenemos instalado ODBC y el conector MySQL:

yum install unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl-devel

Si es el caso, recompilamos Asterisk para el soporte ODBC.

Empezamos con el primer archivo:

nano /etc/odbcinst.ini

borramos todo el contenido y añadimos:

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
FileUsage = 1

en el caso de CentOS 64bit sería:

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib64/libmyodbc5.so
Setup = /usr/lib64/libodbcmyS.so
FileUsage = 1

Guardamos los cambios y continuamos con odbc.ini

nano /etc/odbc.ini

copiamos las siguientes líneas:

[a2billing]
Description = MySQL a2billing
Driver = MySQL
Database = a2billing
Server = 127.0.0.1
User = a2user
Password = password
Port = 3306
Option = 3

Los datos que hay que personalizar:

  • Server: la IP donde se encuentra la base de datos de A2Billing
  • User: el usuario que tiene los permisos para la base de datos A2Billing
  • Password: la contraseña de ese usuario

Se guardan los cambios y se realiza una prueba de conexión a la base de datos:

isql a2billing a2user password

Debe aparecer:

Captura

Se sale con:

SQL> quit

Se continua con el archivo de configuración de Asterisk res_odbc.conf

nano /etc/asterisk/res_odbc.conf

Al final del archivo copiamos las siguientes líneas:

[a2b]
enabled => yes
dsn => a2billing
username => a2user
password => password
pre-connect => yes
sanitysql => select 1
idlecheck => 3600
connect_timeout => 10

El dato importantes es el parámetro dsn que debe contener el valor de la etiqueta inicial del bloque que se acaba de configurar en el archivo odbc.ini. Se guardan los cambios. Ahora vamos a crear la consulta de la base de datos A2Billing, tabla cc_card:

nano /etc/asterisk/func_odbc.conf

Al final del archivo añadimos este bloque:

[can]
dsn=a2b
readsql=select max_concurrent from cc_card where username='${SQL_ESC(${ARG1})}'

La consulta sería: selecciona el valor del campo max_concurrent de la tabla cc_card donde el valor del campo username es igual al valor que se le enviará desde Asterisk. El parámetro importante es dsn que en este caso debe contener el nombre de la etiqueta con que inicia el bloque que se acaba de configurar en el archivo res_odbc.conf

Se guardan los cambios. Cuando se utiliza ODBC en Asterisk es aconsejable cargar los dos módulos relacionados antes de los demás:

nano /etc/asterisk/modules.conf

Se cambian estas dos líneas:

; preload => res_odbc.so
; preload => res_config_odbc.so

Para que queden:

preload => res_odbc.so
preload => res_config_odbc.so

Se guardan los cambios. Ya se pueden reiniciar todos los servidores Asterisk:

service asterisk restart

Averiguar que la conexión esté funcionando:

asterisk -rvvvvvvvvvvvvvvv

CLI> odbc show a2b

Captura

Perfecto. En la ultima versión de A2Billing, la 2.0.6, en la configuración de los clientes se ha sido añadido el siguiente parámetro (que como dice la legenda no está implementado):

Captura

En ese parámetro definimos cuantos canales queremos asignar al cliente. Eso se necesita solamente si:

Captura

es decir que el cliente está configurado para poder realizar más de una llamada a la vez.

Ahora que hemos completado la configuración de Asterisk, iniciamos con Redis. En todos los servidores Asterisk instalamos la librería Redis.pm. Iniciamos con CPAN que es el programa que nos permite bajar e instalar cualquier tipo de paquete en Perl presente en el repositorio:

yum install perl-CPAN

Entramos en el programa:

cpan

Antes de instalar cualquier paquete, actualizamos CPAN:

cpan> install CPAN

Cuando termine:

cpan> reload cpan

Ya podemos instalar el paquete Redis.pm. Como el servidor Redis se instalará en otro servidor Linux y algunos test que se ejecutan a lo largo de la instalación del paquete fallan, se ejecutará el proceso utilizando el comando force:

cpan> force install Redis

A lo largo de la instalación el sistema nos preguntará para la instalación de algunas dependencias y tenemos que contestar siempre con Yes (la respuesta predefinida). Cuando termine la instalación, volveremos a la consola de cpan y podemos salir:

cpan> quit

 

Servidor REDIS

El servidor Redis es mejor tenerlo en otro servidor Linux. Lo importante es que la latencia entre este servidor y los servidores Asterisk sea muy baja. En el caso de servidores remotos, mejor que estén todos en el mismo DataCenter.

Lo primero que hacemos es instalar los repositorios de Fedora para no tener que compilar Redis desde las fuentes:

rpm -ivh http://ftp.fi.muni.cz/pub/linux/fedora/epel/6/i386/epel-release-6-8.noar...

Luego el paquete redis:

yum install redis

Luego se empieza con la configuración. Primero se renombra el archivo de configuración predefinido:

mv /etc/redis.conf /etc/redis.conf.old

y se crea uno nuevo

nano /etc/redis.conf

Se pegan las siguientes líneas. Para conocer el significado de cada parámetro, pueden consultar el archivo que se acaba de renombrar: redis.conf.old:

daemonize yes
pidfile /var/run/redis/redis.pid
port 6379
timeout 0
loglevel notice
logfile /var/log/redis/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /var/lib/redis/
maxclients 100
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 1024
vm-enabled no
hash-max-zipmap-entries 512
hash-max-zipmap-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes

Se guardan los cambios y se configura el script de arranque:

chkconfig redis on

Se inicia el servidor:

service redis start

Se prueba la consola:

redis-cli

redis 127.0.0.1:6379> keys *
(empty list or set)

Como se puede ver el servidor está vacío.

IMPORTANTE: en el servidor donde se encuentra REDIS configurar IPtables para que solamente puedan acceder al programa las IP de los servidores Asterisk (puerto 6379 UDP y TCP)

Ahora que el servidor Redis está funcionando, volvemos a los servidores de Asterisk y en cada uno de ellos creamos el siguiente script:

nano /usr/local/bin/redis.pl

Copiamos las siguientes líneas:

#!/usr/bin/perl

my $redis_db = $ARGV[0];
my $command = $ARGV[1];
my $keyname = $ARGV[2];
my $value = $ARGV[3];

# PERL MODULE
require Redis;
my $redis = Redis->new(server => '1.2.3.4.54:6379');

if($redis_db > 0 && $redis_db < 16){
        $redis->select("$redis_db");
} else {
        print "using Default Redis DB\n";
}
if($command eq "GET"){
        $val=$redis->get("$keyname");
        print "$val";
}
if($command eq "SET" && $value != ""){
        $redis->set("$keyname" => "$value");
}
if($command eq "INCR"){
$redis->incr("$keyname");
}

if($command eq "DECR"){
$redis->decr("$keyname");
}

if($command eq "DECRBY"){
$redis->decrby("$keyname",$value);
}
if($command eq "DEL"){
$redis->del("$keyname" ) || warn "key doesn't exist";
}
$redis->quit;

Guardamos los cambios y volvemos ejecutables el archivo:

chmod +x /usr/local/bin/redis.pl

El script recibe 4 variables al momento de ejecutarse que son respectivamente:

  • my $redis_db = $ARGV[0];La base de datos que se utilizará para guardar los datos. En Redis es posible utilizar 16 base de datos distintas
  • my $command = $ARGV[1]; – El comando que se enviará. Para una lista de los comandos disponibles: https://redis.io/commands
  • my $keyname = $ARGV[2]; – el nombre de la variable que se va a modificar, actualizar y/o consultar
  • my $value = $ARGV[3]; – para asignar un nuevo valor a la variable. En este caso no se utilizará

En este escenario los comandos que se utilizarán son:

  • GET: para consultar el contenido de una variable
  • INCR: para aumentar el valor entero de una variable de una unidad
  • DECR: para disminuir el valor entero de una variable de una unidad

Ahora la parte del dialplan de Asterisk:

nano /etc/asterisk/extensions.conf

En el contexto donde sacamos las llamadas con el AGI de A2Billing:

[a2billing]
exten => _X.,1,NoOp(Llamadas A2Billing)
same => n,System(/usr/local/bin/redis.pl 1 INCR ${CDR(accountcode)})
same => n,Set(llamadas=${SHELL(/usr/local/bin/redis.pl 1 GET ${CDR(accountcode)})})
same => n,GotoIf($["${llamadas}" > "${ODBC_can(${CDR(accountcode)})}"]?cong)
same => n,NoOp(El cliente: ${CDR(accountcode)} tiene ${llamadas} llamadas activas)
same => n,Agi(a2billing.php,1)
same => n,hangup
same => n(cong),Congestion(2)
same => n,hangup
exten => h,1,System(/usr/local/bin/redis.pl 1 DECR ${CDR(accountcode)})
same => n,Hangup

En lugar de utilizar el CALLERID(num) para contar los canales, en el caso de A2Billing es mucho más preciso utilizar el CDR(accountcode) que es la variable más importante ya que es la con que se factura la llamada al cliente. Una explicación de las distintas líneas:

  • Línea 2: ejecutamos el script recién creado y le enviamos los siguientes datos: 1 INCR ${CDR(accountcode)}). De esta forma en el servidor Redis la variable asociada a la cuenta del cliente será aumentada de una unidad
  • Línea 3: asociamos a la variable llamadas el numero de canales que está utilizando el cliente en ese momento.
  • Línea 4: Si el numero de canales es mayor al valor del parámetro MAX CONCURRENT CALLS configurado desde A2Billing en la cuenta del cliente, enviamos una señal de Congestion sino seguimos con la prioridad sucesiva. De esta forma si al cliente se le acaban los canales disponibles recibirá un paquete sip “ 503 Service Unavailable” que le permitirá enrutar la llamada con otro proveedor.
  • Línea 5: Enviamos a la consola de Asterisk el numero de canales activos del cliente especifico.
  • Línea 10: quitamos una unidad a la variable asociada al cliente que terminó la llamada.

Se guardan los cambio y se recarga el dialplan en todos los servidores Asterisk.

Si todo ha salido bien, el sistema debería estar funcionando sin problemas.

Podemos consultar los datos en el servidor REDIS:

redis-cli

redis 127.0.0.1:6379> select 1
OK

redis 127.0.0.1:6379[1]> keys *
1) "1003"
2) "1001"

redis 127.0.0.1:6379[1]> quit

El comando select 1 se utiliza para pasar a la base de datos numero 1 que es la que contiene las variables con el numero de canales utilizados.

Si para coronar quieren monitorear el servidor Redis con Nagios, pueden descargar este plugin. El resultado:

Captura

¡Me cuentan!

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo

18 comentarios

HOla, AL instalar REDIS me

HOla,

AL instalar REDIS me sale el siguiente error:

[root@localhost ~]# service redis start
Starting redis-server:
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 6
>>> 'logfile /var/log/redis.log'
Can't open the log file: Permission denied
[FAILED]

si cambio /var/log/redis por /var/log/redis/redis.log

---se soluciona pero me sale el siguiente error:
[root@localhost ~]# service redis start
Starting redis-server:
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 10
>>> 'stop-writes-on-bgsave-error yes'
Bad directive or wrong number of arguments
[FAILED]
si comento la linea stop-writes-on-bgsave-error yes

entonces me sale el siguiente error:
[root@localhost ~]# service redis start
Starting redis-server:
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 12
>>> 'rdbchecksum yes'
Bad directive or wrong number of arguments

y entonces comento la linea rdbchecksum yes
y asi sucesivamente de tal forma que casi comento como 10 lineas para que REDIS arranque normalmente... esto hace que no funcione el contarlos canales con el script en los asterisk...

podrias checar si el tutorial esta correcto ? o en que version de centos o que version de redis estas usando ya que con CENTOS 6.4 y redis 2.4.10 no funciona.. o se me estara pasando algo?

Saludos

Estimado, tiene toda la

Estimado,

tiene toda la razón. Se me había olvidado que estoy utilizando una versión inestable de Redis, la 2.9.7

La configuración de las 2.4.10 sería esta:

daemonize yes
pidfile /var/run/redis/redis.pid
port 6379
timeout 0
loglevel notice
logfile /var/log/redis/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /var/lib/redis/
maxclients 100
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 1024
vm-enabled no
hash-max-zipmap-entries 512
hash-max-zipmap-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes

Te agradezco que me confirmes que te funciona. El sistema es un CentOS 6.4 32bit

Ahora si inicia , Pero sigue

Ahora si inicia , Pero sigue sin funcionar el script

-- Executing [5218332027579@ipcom:1] NoOp("SIP/9107536262-00000000", "Llamadas A2Billing") in new stack
-- Executing [5218332027579@ipcom:2] System("SIP/9107536262-00000000", "/usr/local/bin/redis.pl 1 INCR 9107536262") in new stack
-- Executing [5218332027579@ipcom:3] Set("SIP/9107536262-00000000", "llamadas=") in new stack
-- Executing [5218332027579@ipcom:4] GotoIf("SIP/9107536262-00000000", "0?cong") in new stack
-- Executing [5218332027579@ipcom:5] NoOp("SIP/9107536262-00000000", "El cliente: 9107536262 tiene llamadas activas") in new stack
-- Executing [5218332027579@ipcom:6] AGI("SIP/9107536262-00000000", "a2billing.php,1") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/a2billing.php
-- AGI Script Executing Application: (DIAL) Options: (SIP/grandstream-1/999015218332027579,60,L(4260000:61000:00000))
== Using SIP RTP CoS mark 5
-- Called SIP/grandstream-1/999015218332027579
-- SIP/grandstream-1-00000001 is making progress passing it to SIP/9107536262-00000000
-- AGI Script a2billing.php completed, returning 4
== Spawn extension (ipcom, 5218332027579, 6) exited non-zero on 'SIP/9107536262-00000000'
-- Executing [h@ipcom:1] System("SIP/9107536262-00000000", "/usr/local/bin/redis.pl 1 DECR 9107536262") in new stack
-- Executing [h@ipcom:2] Hangup("SIP/9107536262-00000000", "") in new stack
== Spawn extension (ipcom, h, 2) exited non-zero on 'SIP/9107536262-00000000'

SI puedes ver en la variable llamadas= no devuelve nada y se supone que ahi deberia decir que tengo 1,2,3... y por eso me deja pasar todas las llamadas que yo quiera no importando lo que esta en el campo concurrent calls ...

tu loprobaste que funcionara con el redis 2.4.10? o intento instalar el redis que tu tienes?

Saludos

Hola, si ejecuta el comando

Hola,

si ejecuta el comando directamente:

/usr/local/bin/redis.pl

te aparece algún error?

Si así fuera seguramente te hace falta alguna librería o dependencia.

Mira también que te aparece en el archivo de log de redis.

Saludos

Si habia un error en el

Si habia un error en el SCRIPT que tu tienes en el manual.
omitiste las comillas simples en ela IP del redis..
solo las puse y funciona.

gracias andrea esta de maravilla esto

Saludos

Cuando empieza el curso de

Cuando empieza el curso de opensips?
por lo regular nunca pagaria por un curso... pero puedo hacer un esfuerzo por el de opensips... ya que me interesa como aprendizaje personal

avisame

Saludos

Otro error que me parece

Otro error que me parece significativo... si llega el dial plan a CONGESTION por alguna razon en la siguiente llamada la persona tiene -1 llamada y si llega a CONGESTION de nuevo la siguiente llamada tiene -2 llamadas y asi sucesivamente

ejemplo: El cliente: 9107536262 tiene -2 llamadas activas
esto hace que le da 2 canales mas osea si lo limite a 2 canales ahora tiene 4 canales o posiblemente 5 canales contando el 0...

No he encontrado la solucion para esto..

Saludos

Re: Otro error que me parece

Hola,

yo acabo de realizar una prueba y no me pasa eso.

Los canales se siguen contando bien.

Tengo el mismo dialplan del articulo así que no sabría que decirte.

Saludos

CPAN destruyo mi server

cometi el terrible error de darle en la primera pantalla del acceso a CPAN yes y alli comenzo mi pesadilla, comenzo a instalar de todo con un monton de bugs, mi trabajo de meses se destruyo, en el manual seria bueno colocar en ROJO esta parte, la cual yo no pude entender bien:

antes de instalar cualquier paquete, actualizamos CPAN:

seria bueno colocar, NO DAR EN YES, escribir en la primera pantalla NO, y luego instalar CPAN.

lastimosamente no tenia backup de algunos servicios q habia modificado, pero si tenia de base de datos. ya ando montando de cero mi server.

Saludos

No fue el CPAN

me respondo a mi mismo,

no fue el CPAN, otra persona de soporte estaba coenctada al servidor y ejecuto un rm donde no debia, sorry por el malentendido. ahora pude recuperar el server haciendo algunas piruetas, pero ya lo tengo operativo, tengo una duda, veo que por defecto el call limit se coloca en 10 en cada usuario, puedo modificar el valor predeterminado de alguna manera?

Saludos

Re: No fue el CPAN

Hola,

ejecutar el CPAN no comporta ningún tipo de problema a nivel de servidor, y no borra ningún tipo de archivo. Por eso en el libro no he señalado ninguna advertencia.

El valor del numero de canales lo puedes modificar sin problemas y esa es la idea. Asignar a cada  cliente solamente los canales que realmente necesita.

Saludos

MAX CONCURRENT CALLS

Hola Andrea, mil gracias por contestar, de verdad que tus aportes son muy valiosos para nosotros,

con respecto al MAX Concurrents, efectivamente, si yo seteo un valor cualquiera cuando estoy creando la cuenta el me lo guarda, pero si creo una cuenta sin colocar nada en este valor, o genero usuarios automaticamente, todos estos quedan en 10, mi pregunta es en donde puedo modificar para que el max concurrent por defecto sea otro valor. pienso q deberia ser en alguno de los php que generan la cuenta nueva, o en la bd, pero he buscado por encima y no veo una funcion que rellene ese campo. se que se puede personalizar porque he visto implementaciones con este valor ya predefinido y funcionando.

Muchas gracias, Saludos

Re: MAX CONCURRENT CALLS

Hola,

entras al servidor MySQL y luego:

mysql> use a2billing

mysql> alter table cc_card alter max_concurrent set default '5';


En lugar de 5 pones el numero de canales que necesites.

Cuando creas un nuevo cliente si no indicas el numero de canales, por defecto serán 5.

Saludos

Si funciono bien pero ahora con el tiempo....

Hola Andrea.

Funciono perfecto, aunque lastimosamente me esta pasando lo mismo del compañero de arriba, las llamadas comienzan de a poco a colocarse en negativo

En el primer dia (ya esta en 0 LOL, deberia de decir 1)

Executing [5722xxxxxx@a2billing:1] NoOp("SIP/4374xxxxxx-00000081", "Iniciando Llamada Nacional") in new stack
Executing [5722xxxxxx@a2billing:2] System("SIP/4374xxxxxx-00000081", "/usr/local/bin/redis.pl 1 INCR 4374xxxxxx") in new stack
Executing [5722xxxxxx@a2billing:3] Set("SIP/4374xxxxxx-00000081", "llamadas=0") in new stack
Executing [5722xxxxxx@a2billing:4] GotoIf("SIP/4374xxxxxx-00000081", "0?cong") in new stack
Executing [5722xxxxxx@a2billing:5] NoOp("SIP/4374xxxxx-00000081", "El cliente: 4374xxxxxx tiene 0 llamadas activas") in new stack

- a los dias (como una semana ya tiene -18):

Executing [5722xxxxxx@a2billing:1] NoOp("SIP/4374xxxxxx-00000085", "Iniciando Llamada Nacional") in new stack
Executing [5722xxxxxx@a2billing:2] System("SIP/4374xxxxxx-00000085", "/usr/local/bin/redis.pl 1 INCR 4374xxxxxx") in new stack
Executing [5722xxxxxx@a2billing:3] Set("SIP/4374xxxxxx-00000085", "llamadas=-18") in new stack
Executing [5722xxxxxx@a2billing:4] GotoIf("SIP/4374xxxxxx-00000085", "0?cong") in new stack
Executing [5722xxxxxx@a2billing:5] NoOp("SIP/4374xxxxxx-00000085", "El cliente: 4374xxxxxx tiene -18 llamadas activas") in new stack

- al mes (pfff tiene un monton de canales negativos xD)

Executing [5722xxxxxx@a2billing:1] NoOp("SIP/4374xxxxxx-0000007f", "Iniciando Llamada Nacional") in new stack
Executing [5722xxxxxx@a2billing:2] System("SIP/4374xxxxxx-0000007f", "/usr/local/bin/redis.pl 1 INCR 4374xxxxxx") in new stack
Executing [5722xxxxxx@a2billing:3] Set("SIP/4374xxxxxx-0000007f", "llamadas=-86") in new stack
Executing [5722xxxxxx@a2billing:4] GotoIf("SIP/4374xxxxxx-0000007f", "0?cong") in new stack
Executing [5722xxxxxx@a2billing:5] NoOp("SIP/4374xxxxxx-0000007f", "El cliente: 4374xxxxxx tiene -86 llamadas activas") in new stack

trate de verificar si era con CONGESTION como decia el compañero pero la verdad no encuentro esta razon, en la historia de este cliente solo ha tenido 6 CONGESTION, asi que en este caso no aplica.

no logro determinar porque sucede, o en que momento podria salirse del contexto sin terminar el DECR. esta bien raro

si tienes idea de que pueda ser te agradeceria

Saludos Cordiales

O existe forma de resetear contador de redis

Hola.

Pensando en alguna solucion temporal, me planteaba si al menos existe forma de cada 24 hora resetear el contador del redis de todos los usuarios, pero tampoco encuentro donde se almacena este numero, podrias darme alguna guia o tip donde pueda resetear estos valores, ya con este dato lo unico q se me ocurriria es crear un CronJob para q los resetee a 0 cada 24 hroas.

Saludos

O existe forma de resetear contador de redis

Hola.

Pensando en alguna solucion temporal, me planteaba si al menos existe forma de cada 24 hora resetear el contador del redis de todos los usuarios, pero tampoco encuentro donde se almacena este numero, podrias darme alguna guia o tip donde pueda resetear estos valores, ya con este dato lo unico q se me ocurriria es crear un CronJob para q los resetee a 0 cada 24 hroas.

Saludos

me respondo yo mismo

me respondo a mi mismo, el comando para resetear contadores es redis-cli "FLUSHALL" con esto los contadores vuelven a cero.

espero le sea de utilidad a los demas

saludos

Suscribirse a Comentarios de "Asterisk - A2Billing - OpenSIPs - Redis : Contar canales en un sistema con balanceo de carga" Suscribirse a VozToVoice - Todos los comentarios