Alarmas en T1/E1 RED alarms, Yellow alarms, BLUE alarms

[Visto: 4675 veces]

Por Ing. Isaac Fernandez Baca Peña, Ago 2009

Hoy tuve que detectar porque sucedió un corte en las llamadas, así que me toco investicar que significan las alarmas que se muestran en el log de asterisk con respecto a los enlaces primarios, y encontre un post de Jared Smith de Digium, Inc.

Aqui en espanglish para ustedes…

Se tienen tres típicos estados de alarma para E1 y T1, RED alarms, YELLOW alarms, y BLUE alarms.

RED alarms.

Nuestro puerto de T1/E1 entra en RED alarm cuando la sincronización entra en mantemiento por parte del switch remoto.
Típicamente la RED alarm indica que se tiene un problema recibiendo la señal del switch remoto.

Una nemotecnia para acordarnos de esta alarma en Ingles “right
here” and “receive”… indicating that we’re having a problem right here receiving the signal from the remote switch.)


Yellow alarm or RAI (Remote Alarm Indication)

Nuestro puerto de T1/E1 entra en Yellow alarm cuando recibe una señal del switch remoto que indica que el puerto en el switch remoto esta en RED alarm. Esto significa que el switch remoto no puede mantener una sincronización con nuestra T1/E1, o que no puede recibir nuestra transmisión.

Una nemotecnia para acordarnos de esta alarma en Ingles Y in yellow stands for “yonder”… indicating that the remote switch (over yonder) isn’t able to see what we’re sending.)

Blue alarm or AIS (Alarm Indication Signal)

Nuestro puerto de T1/E1 entra en BLUE alarm cuando recibe todos los primeros timeslots desfragmentador desde el switch remoto.
Esta es una señal especial que indica el switch esta teniendo problemas con la velocidad de transferencia de nuestra conexión.

REFERENCIAS

[1] http://www.mail-archive.com/asterisk-users@lists.digium.com/msg217316.html
Sigue leyendo

Audio en Asterisk GSM WAV MP3

[Visto: 4551 veces]

Por Ing Isaac Fernandez Baca

Bueno este post voy a ir aumentandole poco a poco, mientras se me vayan presentando nuevamente,

hoy por ejemplo queria pasar un wav a gsm [1]

sox -t wav “$NAME.wav” -r 8000 -c1 -t gsm “$NAME.gsm” resample -ql

Utilice un archivo que grabe con soldecs, utilice la opción Fichero de texto a audio, y con la voz de Carlos grabe, un archivo en WAV muestreado a 22.05Khz
y con la línea de arriba lo pase a gsm. Pero ya antes tenía instalado el sox, cuando me toque instalarlo nuevamente lo postearé…

Bueno eso me funciono muy bien en un central, pero la verdad no descubro aun, por que en otra que esta en la selva no, bueno alli lo hice con este comando que es parecido, que encontre en [2]

sox fpm-sunshine.wav -t gsm -r 8000 -b -c 1 fpm-sunshine.gsm

Hoy me mandaron un archivo en wma Windows Media Audio, y le instale los codecs y ni asi lo pude leer, bueno pero como necesito tenerlo en gsm, use el siguiente programa mp3 WAV WMA Converter [3], lo pase a wav y luego utilice la linea de mas arriba.

Y para modificar varios archivos usamos un script que esta en[1]

for I in $(ls -1 *.mp3)
do
NAME=$I
echo “Converting from mp3.wav”
mpg123 -w “$NAME.wav” “$NAME”
echo “Converting from wav to gsm”
sox -t wav “$NAME.wav” -r 8000 -c1 -t gsm “$NAME.gsm” resample -ql
echo “output filename: $NAME.gsm”
done

y adicionalmente para cambiarles los nombres usemos este script.

ls *.gsm | awk -F. ‘{print “mv “$1″.mp3.gsm ” $1″.gsm”;}’ >convert.sh
le damos permisos y lo ejecutamos
chmod 777 convert.sh
./convertsh

Referencias:
[1]http://www.ctunion.com/node/191
[2]http://bytecoders.homelinux.com/content/optimizando-la-música-en-espera.html
[3]http://mp3-wav-wma-converter.softonic.com/
Sigue leyendo

Asterisk con alta disponibilidad Parte (3)

[Visto: 2781 veces]

Asterisk con alta disponibilidad Parte (3)

Por Ing. Isaac Fernández Baca

Ahora que tenemos alta disponibilidad del demonio del Asterisk, la sincronización de los archivos de configuración entre la central principal y la de backup. Ello nos sirve para un escenario donde solo necesitamos un Asterisk con configuración a mano. Sin embargo Freepbx entre otros software de administración, manejan algunas parámetros con base de datos, en el caso de realtime por ejemplo. Además el cdr podemos estar guardándolo en una base de datos también. Por tanto necesitamos tener un backup de la base de datos en cuestión de la central principal en la de backup. Para esta labor vamos a utilizar replicación de base de datos en mysql. De esta manera, se replicaran los nuevos registros hechos en la base de datos de la central principal, en la central de backup.

Por ello para no generar incoherencias, debemos hacer un backup de la base de datos de la central principal y restaurarlo en la base de datos de la central de backup, antes de configurar la replicación.

Paso 1:
Master : 192.168.254.204
Slave : 192.168.254.202

Paso 2:
En el Master, realizar los cambios en el archivo my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1

log-bin
binlog-do-db= # input the database which should be replicated
binlog-ignore-db=mysql # input the database that should be ignored for replication
binlog-ignore-db=test

server-id=1

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Paso 3:
En el master, crear una cuenta de replicación para el esclavo en mysql.
mysql> grant replication slave on *.* to ‘replication’@192.168.254.202 identified by ‘slave’;
luego reiniciar el servicio de mysql en el master.

Paso 4:
Ahora editar el archivo my.cnf en el Slave :
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
server-id=2

master-host = 192.168.254.204
master-user = replication
master-password = slave
master-port = 3306

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Paso 5:
Reiniciar el servicio de mysql en el slave y luego
mysql> start slave;
mysql> show slave statusG;

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.254.204
Master_User: replica
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: MASTERMYSQL01-bin.000009
Read_Master_Log_Pos: 4
Relay_Log_File: MASTERMYSQL02-relay-bin.000015
Relay_Log_Pos: 3630
Relay_Master_Log_File: MASTERMYSQL01-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 4
Relay_Log_Space: 3630
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 1519187
1 row in set (0.00 sec)
Slave_IO_Running y Slave_SQL_Running: deben estar en YES.

Paso 6:
En el master:
mysql> show master status;
+————————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+————————+———-+————–+——————+
|MysqlMYSQL01-bin.000008 | 410 | asterisk | |
+————————+———-+————–+——————+
1 row in set (0.00 sec)

Y ahora esta listo, debemos hacer pruebas ingresando datos, en la base de datos principal y observar como estos se reflejan en la central de backup
Sigue leyendo

Asterisk con alta disponibilidad Parte (2)

[Visto: 3790 veces]

Asterisk con alta disponibilidad Parte (2)

Por Ing. Isaac Fernández Baca

Luego de lograr la alta disponibilidad del demonio del Asterisk, necesitamos sincronizar los archivos de configuración, de esta manera al realizar algún cambio en la configuración del Asterisk principal, este replique en la configuración del Asterisk backup.

Podríamos hacerlo simplemente con un script que ejecute un scp periódicamente y copie los archivos del /etc/asterisk, pero esto no es muy eficiente. Puesto que podemos utilizar el rsync que es un programa que ofrece transmisión eficiente de datos incrementales comprimidos y cifrados, el algoritmo compara los checksum de manera eficiente, y cuando no encuentra coincidencias, envía los cambios e información de cómo reensamblarlos, de esta forma solo se copian los nuevos cambios.

He elaborado un strip que ejecuta el rsync, es necesario ponerle el password, luego he puesto este script en el crontab para que se ejecute periódicamente.

[root@cusco ~]# cat /sbin/syncdata.bash
#!/usr/bin/expect -f
spawn rsync -raz –progress –size-only /etc/asterisk/ 192.168.254.202:/etc/asterisk/
match_max 100000
# Look for passwod prompt
expect “*?assword:*”
send — “123456”
# send blank line (r) to make sure we get back to gui
send — “r”
expect eof

[root@cusco ~]# crontab -e
*/1 * * * * /sbin/syncdata.bash

Bueno todo esto lo hice con el rsync que ya venia instalado en un Centos 4.7
[root@cusco ~]# rpm -q rsync
rsync-2.6.3-1

Sigue leyendo

Asterisk con alta disponibilidad Parte (1)

[Visto: 5505 veces]

Asterisk con alta disponibilidad Parte (1)

Por Ing. Isaac Fernández Baca

Este tipo de configuración se implementa en centrales IP donde queremos brindar una alta disponibilidad.

Inicialmente necesitamos dos servidores que tengan asterisk instalado.

La herramienta a utilizar es heartbeat en su version 2.1.3, utilizaremos el heartbeat para sensar el servicio del asterisk en ambos servidores, y si se cae alguno de ellos el otro tomara su lugar, como maestro y esclavo, si cae el maestro, el esclavo toma su lugar, y si se levanta el maestro nuevamente lleva el mando.

Estamos usando Centos 4.7, instalamos en ambos servidores el heartbeat.
yum –y install heartbeat

Para este ejemplo el asterisk principal tiene el hostname cusco.com y el backup cuscobk.com

Para todas las configuraciones necesitamos este parámetro así que asegúrense de poner
el nombre de hostname la respuesta al comando
uname –n

[root@cusco /]# uname -n
cusco.com

[root@cuscobk /]# uname -n
cuscobk.com

Ahora debemos de modificar el archivo /etc/hosts de la siguiente forma,
En cusco.com :

[root@cuscobk /]# cat /etc/hosts
127.0.0.1 cuscobk.com cuscobk localhost.localdomain localhost
192.168.254.204 cusco.com cusco
192.168.254.202 cuscobk.com cuscobk

En cusco backup .com

[root@cuscobk /]# cat /etc/hosts
127.0.0.1 cuscobk.com cuscobk localhost.localdomain localhost
192.168.254.204 cusco.com cusco
192.168.254.202 cuscobk.com cuscobk

Notemos que el servidor maestro tiene la ip 192.168.254.204 y el esclavo la ip 192.168.254.202.

Ahora empezamos a configurar en el maestro, copiemos los siguientes archivos
cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

luego editamos el archivo vi /etc/ha.d/authkeys
auth 2
2 sha1 mipass

Cambiamos los permisos en el archivo authkeys :
chmod 600 /etc/ha.d/authkeys

Editemos el archivo ha.cf el cual es muy importante
vi /etc/ha.d/ha.cf

Agreguemos las siguientes lineas:
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node cusco.com
node cuscobk.com

La parte final de la configuración del hearbeat es seleccionando los demonios que queremos que esten en alta disponibilidad, para nosotros asterisk
vi /etc/ha.d/haresources

Agreguemos la siguiente línea
cusco.com IPaddr::192.168.254.200/24/eth0 asterisk

Notemos que estamos poniendo la IP 192.168.254.200, esta nos servira como una ip virtual, que sera utilizada para la comunicación de asterisk, ya sea con los anexos sip iax, u otra comunicación voip que realice con asterisk.

Finalmente debemos de copiar los archivos de configuración del heartbeat del maestro al esclavo

scp -r /etc/ha.d/ root@192.168.254.202:/etc/

y con ello ya tenemos listo.
Para que siempre se inicie el heartbeat al prender el servidor agregamos en ambos

chkconfig heartbeat on

Reiniciamos el servicio en ambos servidores.

service heartbeat restart

Si no te tomaron bien los hostname, revisa todos los archivos donde se declara el hostname, que son básicamente tres
/etc/hosts
/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-e
th0

Si tienes algún problema prueba reiniciando tus servidores, para que te tome bien el hostname.

Si todo esta bien, entonces desde otra maquina prueba haciendo ping a la ip virtual 192.168.254.200, y en el maestro deberas tener ambas ip, veamos con un ipconfig

[root@cusco /]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:7D:E2:3E
inet addr:192.168.254.204 Bcast:192.168.254.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7d:e23e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16653 errors:0 dropped:0 overruns:0 frame:0
TX packets:14789 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2564095 (2.4 MiB) TX bytes:3349104 (3.1 MiB)
Interrupt:177 Base address:0x1400

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:7D:E2:3E
inet addr:192.168.254.200 Bcast:192.168.254.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1283 errors:0 dropped:0 overruns:0 frame:0
TX packets:1283 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:148184 (144.7 KiB) TX bytes:148184 (144.7 KiB)

[root@cusco /]#

Parte (2 ) continua en el siguiente post

Referncias
[1]http://www.howtoforge.com/high_availability_heartbeat_centos
[2]http://www.linux-ha.org/Heartbeat
Sigue leyendo

Capturarar paquetes con tcpdump para visualizarlos con wireshark

[Visto: 3489 veces]

Por: Isaac Fernandez Baca

Siempre que lo necesito me ando olvidando de este comando

tcpdump -i [interface] -s 1500 -w [some-file]

despues incluso olvido que el comando es el tcpdump, asi que mejor lo puse en mi blog, 😉

Referencias:
[1]http://www.wireshark.org/docs/wsug_html_chunked/AppToolstcpdump.html

Sigue leyendo

Errorde mysql en el asterisk

[Visto: 4341 veces]

Por Ing Isaac Fernandez Baca

Hoy me paso el siguiente problema, llama un cliente diciendo que no tiene llamadas, que ocurrio un apagon, que no sabe que ha pasado y que cuando pone service asterisk restart, tiene un problema con mysql. Y en la interface web le salia un mensaje de Error en la base de datos

Entonces le pedi que reiniciara el mysql el zaptel el asterisk todo, y me decia que le salia un problema de que el mysql no se podía parar.

Entonces cuando me dio accesos

[root@pbxtar ~]# service asterisk stop
Shutting down asterisk: [ OK ]
[root@pbxtar ~]# service mysqld status
mysqld inactivo pero subsistema bloqueado
[root@pbxtar ~]# service mysqld restart
Parando MySQL: [FALLÃ]

Entonces me puse a revisar el log de mysql

Number of processes running now: 0
090115 13:39:29 mysqld restarted
090115 13:39:30 InnoDB: Started; log sequence number 0 43634
090115 13:39:30 [ERROR] /usr/libexec/mysqld: Error writing file ‘/var/run/mysqld/mysqld.pid’ (Errcode: 28)
090115 13:39:30 [ERROR] Can’t start server: can’t create PID file: No space left on device

Me puse a revisar el espacio en el disco con
df -h
[root@pbxtar var]# df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/sda1 2.9G 2.1G 741M 74% /
none 1013M 0 1013M 0% /dev/shm
/dev/sda3 2.9G 37M 2.7G 2% /tmp
/dev/sda2 29G 28G 0 100% /var

y luego el espacio en la carpeta que estaba mas llena con el comando du -sh /var/ y luego a revisar carpeta por carpeta…

[root@pbxtar var]# du -sh /var
28G /var
[root@pbxtar var]# ls
account cache crash db dpbx-install-110607.tar.gz empty ftp lib local lock log lost+found mail nis opt preserve run spool tmp www yp
[root@pbxtar var]# du -sh *
12K account
291M cache
16K crash
28K db
73M dpbx-install-110607.tar.gz
28K empty
8.0K ftp
217M lib
8.0K local
36K lock
1.4G log
16K lost+found
4.0K mail
8.0K nis
8.0K opt
8.0K preserve
176K run
26G spool
8.0K tmp
25M www
24K yp
[root@pbxtar var]# cd spool
[root@pbxtar spool]# du -sh asterisk/
26G asterisk/
[root@pbxtar spool]# cd asterisk/
[root@pbxtar asterisk]# du -sh *
4.0K dictate
4.0K meetme
26G monitor
4.0K outgoing
4.0K system
4.0K tmp
35M voicemail
[root@pbxtar asterisk]# cd monitor/

hasta que encontre que la carpeta monitor es la que estaba llena, seguramente de alguna grabación, entonces borre todas las grabaciones, porque no les iban a servir las otras tampoco.

[root@pbxtar monitor]# du -sh *
316K 200803
336K 200804
392K 200805
392K 200806
432K 200807
380K 200808
412K 200809
452K 200810
416K 200811
16G 200812
11G 200901
1.5M agents

[root@pbxtar monitor]# rm -fR *
[root@pbxtar monitor]# ls

y wala!!! listo asterisk OK

[root@pbxtar monitor]# service mysql restart
mysql: unrecognized service
[root@pbxtar monitor]# service mysqld restart
Parando MySQL: [ OK ]
Iniciando MySQL: [ OK ]
[root@pbxtar monitor]# service asterisk restart
Shutting down asterisk: [ OK ]
Starting asterisk: [ OK ]
[root@pbxtar monitor]# history -c
😉

Sigue leyendo