miércoles, julio 08, 2009

FreeBSD + Icecast2 + Theora

STREAMING SERVER

Requerimientos:
FreeBSD instalado

Guias:

http://www.icecast.org/docs.php
http://www.oddsock.org/guides/video.php
http://www.acooke.org/cute/SettingupR0.html

Instalacion:

1) Instalar icecast2
# whereis icecast2
icecast2: /usr/ports/audio/icecast2
# cd /usr/ports/audio/icecast2
# make install clean

2) Instalar ffmpeg2theora
# whereis ffmpeg2theora
ffmpeg2theora: /usr/ports/multimedia/ffmpeg2theora
# cd /usr/ports/multimedia/ffmpeg2theora
# make install clean

3) Instalar ezstream
# whereis ezstream
ezstream: /usr/ports/audio/ezstream
# cd /usr/ports/audio/ezstream
# make install clean

Archivos de configuracion:

# cp /usr/local/etc/icecast.xml.sample /usr/local/etc/icecast.xml

Crear una carpeta que tendra los videos
# mkdir /usr/home/hd3/streaming/

Crear el archivo con el listado de los videos y su orden
/usr/home/hd3/streaming/playlist.m3u
en este archivo podemos poner los videos por ejemplo:
# cat playlist.m3u
/usr/home/hd3/streaming/telesursoflibre.mpg

Copiar el archivo de
# cp /usr/local/share/examples/ezstream/ezstream_reencode_theora.xml /usr/local/etc/

# mkdir /var/log/icecast
# touch /var/log/icecast/access.log
# touch /var/log/icecast/error.log
# chmod -R 777 /var/log/icecast/

Iniciar el streaming

$ /usr/local/bin/icecast -c /usr/local/etc/icecast.xml >/dev/null 2>&1 &

$ /usr/local/bin/ezstream -c /usr/local/etc/ezstream_reencode_theora.xml >/dev/null 2>&1 &

Pararlo

killall ffmpeg2theora
killall ezstream
killall icecast

Probar que envia

http://192.168.1.1:8000/theora.ogg

Ajustar la resolucion para el streaming

En el archivo /usr/local/etc/ezstream_reencode_theora.xml
hay 2 lineas que tienen estos valores:
ffmpeg2theora -x 192 -y 128 -a 0 -v 4 --title "@M@" -o - "@T@"
se cambian para que queden asi:
ffmpeg2theora -x 384 -y 256 -a 0 -v 4 --title "@M@" -o - "@T@"

Aqui los archivos de configuracion

Nota:
Como los archivos son en un formato XML, el navegador muestra mal el contenido, de click derecho sobre los links y luego Save link as...
Guardelos en su disco y luego los abre con un editor.
icecast.xml

ezstream_reencode_theora.xml

Para hacer relay de alguna emisora, por ejemplo de www.di.fm

Trance Channel - D I G I T A L L Y - I M P O R T E D
en el archivo http://www.di.fm/mp3/trance.pls

vemos esta linea para conectar
http://scfire-ntc-aa06.stream.aol.com:80/stream/1003

entonces en el archivo de Icecast2 ponemos esto:

<relay>
<server>scfire-ntc-aa06.stream.aol.com</server>
<port>80</port>
<mount>/stream/1003</mount>
<local-mount>/different2.ogg</local-mount>
<on-demand>0</on-demand>

<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>

Y listo, para escuchar, usamos esta direccion:
http://192.168.1.1:8000/different2.ogg.m3u

Nota 2:

El archivo ezstream_reencode_theora.xml es en caso de querer usar archivos en formatos .mpg , si podemos usar directamente archivos de video en formato .ogv debemos usar el archivo ezstream_vorbis.xml con lo que nos ahorraremos procesador ya que no se requiere hacer el reencode, para esto:

# cp /usr/local/share/examples/ezstream_vorbis.xml /usr/local/etc/

Nota:
En este caso el ezstream se debe iniciar con el archivo .xml correcto, en este caso seria:

$ /usr/local/bin/ezstream -c /usr/local/etc/ezstream_vorbis.xml >/dev/null 2>&1 &

Crear el archivo con el listado de los videos .ogv y su orden
/usr/home/hd3/streaming/playlist.m3u
en este archivo podemos poner los videos en formato .ogv por ejemplo:
# cat playlist.m3u
/usr/home/hd3/streaming/otrovideo.ogv

Para verificar que funciona, abrimos en VLC, esta direccion:
http://192.168.1.1:8000/http://alpha:8000/vorbis.ogg.m3u

Nota 3:
Para hacer que el servicio se inicie con el servidor, se debe:
Agregar las lineas en /etc/rc.conf

icecast_enable="YES"
icecast_config="/usr/local/etc/icecast.xml"

Editar el archivo /usr/local/etc/icecast.xml y modificar la linea

<security>
<chroot>0</chroot>
<!--
<changeowner>
<user>nobody</user>
<group>nobody</group>
</changeowner>
-->
</security>

Por

<security>
<chroot>0</chroot>
<!-- -->
<changeowner>
<user>angel</user>
<group>nobody</group>
</changeowner>
<!-- -->
</security>

Donde angel es un usuario creado en el servidor

viernes, julio 03, 2009

FreeBSD + NAGIOS

Requerimientos:

FreeBSD instalado
Apache2 instalado

Instalacion:

1) Instalar nagios
# whereis nagios
nagios: /usr/ports/net-mgmt/nagios
# cd /usr/ports/net-mgmt/nagios
# make install clean

Al finalizar la instalacion te mostrara las lineas que debes poner en el archivo /usr/local/etc/apache22/httpd.conf

<Directory /usr/local/www/nagios>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>

<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
</Directory>

ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/

2) Hacer que inicie con el sistema colocando en /etc/rc.conf
nagios_enable="YES"

Nota:
Nagios por defecto requiere autenticacion, se puede desactivar temporalmente si cambiamos en
/usr/local/etc/nagios/cgi.cfg
la linea original
use_authentication=1
Por esta otra
use_authentication=0

Y asi podemos hacer pruebas temporalmente para poder ver los contenidos CGI mediante el navegador, pero no es buena idea dejarlo asi.

3) Activando la autenticacion para nagios
En las lineas que nos recomienda la instalacion de nagios para el http.conf le adicionaremos otras de modo que quede asi:

# Modificacion para NAGIOS inicio

<Directory /usr/local/www/nagios>
Order deny,allow
Deny from all
#Allow from 127.0.0.1
Allow from all
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>

<Directory /usr/local/www/nagios/cgi-bin>
Options ExecCGI
# Autenticacion inicio
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd.users
Require valid-user
# Autenticacion fin
</Directory>

ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/

# Modificacion para NAGIOS fin

Y ya si podemos dejar la linea original como recomiendan para cgi.cfg "use_authentication=1"

4) Creando el password
Crear el archivo htpasswd.users
# touch /usr/local/etc/nagios/htpasswd.users
Ponerle la clave
# htpasswd -c /usr/local/etc/nagios/htpasswd.users nagiosadmin
New password: ******
Re-type new password: ******
Adding password for user nagiosadmin

Para el usuario guest (a,b,c):

a) Para permitir el usuario guest, luego de aver configurado nagiosadmin:
Para permitir el usuario guest, el comando seria asi:
# htpasswd /usr/local/etc/nagios/htpasswd.users guest
New password: *****
Re-type new password: *****
Adding password for user guest

b) Luego en el archivo /usr/local/etc/nagios/cgi.cfg
se comentan las lineas originales y se agregan las nuevas, se ve asi:

#authorized_for_all_services=nagiosadmin
authorized_for_all_services=nagiosadmin,guest
#authorized_for_all_hosts=nagiosadmin
authorized_for_all_hosts=nagiosadmin,guest

c) Hay que re-iniciar nagios
# /usr/local/etc/rc.d/nagios restart

5) Re-iniciar el apache
# /usr/local/etc/rc.d/apache22 restart
Ya al tratar de ingresar con el navegador a:
http://miservidor/nagios/
nos debera pedir el usuario (nagiosadmin) y la clave (miclavesecreta)

6) Configurando los equipos dentro de nagios
Bueno, esto no sera una guia completa, ya que hay muchas posibilidades.

Nagios se inicia con el comando
# /usr/local/etc/rc.d/nagios start

Pero seguramente no nos iniciara hasta que le dejemos los archivos que requiere, es que vienene con nombres como

Los que estan en /usr/local/etc/nagios/
cgi.cfg-sample
nagios.cfg-sample
resource.cfg-sample

Los que estan en /usr/local/etc/nagios/objects/
commands.cfg-sample
contacts.cfg-sample
localhost.cfg-sample
printer.cfg-sample
switch.cfg-sample
templates.cfg-sample
timeperiods.cfg-sample
windows.cfg-sample

Bueno, en ambos casos solo hay que compiar cada uno de los archivos dentro de sus respectivos folders con los nombres sin el "-sample" y luego editarlos segun se requiera.

Luego inticiamos nagios nuevamente y vemos si arranca sin errores.

Para chequear luego de hacer algun cambio en los archivos podemos usar este comando y si todo esta bien, lo re-iniciamos
# /usr/local/bin/nagios -v /usr/local/etc/nagios/nagios.cfg

Actualizacion:

1) Algunas funciones requiren la instalacion de nagios-plugin

# whereis nagios-plugins
nagios-plugins: /usr/ports/net-mgmt/nagios-plugins
# cd /usr/ports/net-mgmt/nagios-plugins
# make config
[X] NETSNMP SNMP support (check_snmp)
[X] IPv6 support

Guarde e instale
# make install clean

2) Para poder ponerle los logos, hay que instalar nagios-base-logos

# whereis nagios-base-logos
nagios-base-logos: /usr/ports/misc/nagios-base-logos
# cd /usr/ports/misc/nagios-base-logos
# make install clean

De aqui se pueden bajar mas logos http://exchange.nagios.org/directory/Images-and-Logos
se deben descomprimir en la carpeta /usr/local/www/nagios/images/logos/

Actualizacion 2

Crear grupos
Por defecto me tocaba meter los equipos con Gnu/Linux dentro del archivo windows.cfg y esto no me gustaba...

Crear un grupo LINUX

1) editar el archivo /usr/local/etc/nagios/nagios.cfg
AGREGAR LA LINEA

# Definitions for monitoring a Linux machine
cfg_file=/usr/local/etc/nagios/objects/linux.cfg

2) Crear el archivo /usr/local/etc/nagios/objects/linux.cfg
AGEGAR LAS LINEAS

# HOST DEFINITION
define host{
use linux-server ; Inherit default values from a template
host_name ISP ; The name we're giving to this switch
alias UNE ; A longer name associated with the switch
icon_image linux40.png
statusmap_image linux40.gd2
address google.com ; IP address of the switch
parents ADSL
}

# HOST GROUP DEFINITION
define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members ; Comma separated list of hosts that belong to this group
}

# SERVICE DEFINITIONS
define service{
use generic-service ; Name of service template to use
host_name ISP
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

3) Editar el archivo /usr/local/etc/nagios/objects/templates.cfg
AGREGAR LAS LINEAS EN LA SECCION # HOST TEMPLATES

# LINUX host definition template - This is NOT a real host, just a template!

define host{
name linux-server ; The name of this host template
use generic-host ; Inherit default values from the generic-host template
check_period 24x7 ; By default, Windows servers are monitored round the clock
check_interval 5 ; Actively check the server every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each server 10 times (max)
check_command check-host-alive ; Default command to check if servers are "alive"
notification_period 24x7 ; Send notification out at any time - day or night
notification_interval 30 ; Resend notifications every 30 minutes
notification_options d,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
hostgroups linux-servers ; Host groups that Windows servers should be a member of
register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE
}

4) Re-iniciar Nagios
/usr/local/etc/rc.d/nagios restart