By Jose Antonio Cely Saidiza
Leí en barrapunto como microsoft, podríamos decir, soborno un gobierno (Nigeria) y pago por tener mas adictos a su sistema, ya saben, la primera dosis es «gratis», eso es normal en esta compañía (crear adictos y mostrarlo como una obra humanitaria), lo que me parece increíble esta vez, es que el S.O. que habían negociado originalmente este gobierno, era una versión a la medida de Mandriva.
Que poder de convencimiento de los ejecutivos de Microsoft, eso si es de «admirar» :P …
A continuación el comunicado de Mandriva al respecto traducido, cortesía de blogdrake.net (mas abajo la carta original e ingles):
Querido Steve:
Hola! Soy François, de Mandriva
Estoy seguro que todavía somos algo muy pequeño para que nos conozcas. Sabes, somos una de esas pequeñas compañías de Linux trabajando duro por un lugar en el mercado. Producimos una distribución de Linux, Mandriva Linux. La última edición, Mandriva 2008, ha sido vista como una muy buena versión y estamos orgullosos de ello. Deberías darle un vistazo, seguro que te gustaría. También ha pasado que somos una de las compañías Linux que no hemos firmado un acuerdo con su compañía (nadie es perfecto).
Recientemente hemos llegado a un acuerdo con el Gobierno de Nigeria. Quizá has oído hablar algo de eso, Steve. Buscábamos una solución de hardware-software económica para sus escuelas. El encargo inicial era de 17,000 máquinas. Teníamos una buena oferta para sus necesidades: el Classmate PC de Intel, con una versión customizada de Mandriva Linux. Presentamos la solución al gobierno local, y les gustó la máquina, nuestro sistema operativo; les gustó lo que le ofrecimos. el hecho de que fuera código abierto, de que podíamos adaptarlo para su país, etc.
Entonces, su gente entró en el juego y el trato resultó más difícil. Yo no diría que más sucio, pero alguien podría haberlo dicho. Ellos lucharon y lucharon por un acuerdo pero el cliente estaba contento de conseguir CMPC y Mandriva.
Así que cerramos el trato. conseguimos el encargo, calificamos el software, facturamos las máquinas. En otras palabras, hicimos nuestro trabajo. Creo que las máquinas están siendo entregadas ahora mismo.
Y entonces, hoy, oímos del cliente una historia totalmente diferente: “Pagaremos por el Software de Mandriva como estaba estipulado, pero lo cambiaremos por Windows después.”
Guau! ¡Estoy impresionado, Steve! ¿Qué has hecho para que esos tipos cambien de parecer de esa manera? Está bastante claro para mí, y probablemente para cualquiera. ¿Cómo decís donde tú vives lo que has hecho, Steve? En mi país, le dicen varios nombres, estoy seguro que los conoces.
Eh Steve, ¿cómo te sientes por la mañana mirándote al espejo?
Por supuesto, seguiré luchando esta vez y la próxima, y la próxima también. Tienes dinero, el poder y, probablemente, tenemos un significado para la ética muy distinto del tuyo, pero creo que el trabajo duro, la buena tecnología y la ética puede ganar también.
Saludos
François
PS: Un mensaje para nuestros amigos en Nigeria: todavía hay tiempo para hacer lo correcto y elegir bien, ¡obtendréis un montón de soporte y excelentes servicios!
Mandriva Team: An open letter to Steve Ballmer –
Dear Steve,
Hi, this is François, from Mandriva.
I’m sure we’re way too small for you to know me. You know, we’re one of these tiny Linux company working hard for our place on the market. We produce a Linux Distro, Mandriva Linux. The last edition, Mandriva 2008 was seen as a pretty good version and we’re proud of it. You should give it a spin, I’m sure you’d like it. We also happen to be one of the Linux companies that did not sign an agreement with your company (nobody’s perfect).
We recently closed a deal with the Nigerian Government. Maybe you heard about it, Steve. They were looking for an affordable hardware+software solution for their schools. The initial batch was 17,000 machines. We had a good answer to their need: the Classmate PC from Intel, with a customized Mandriva Linux solution. We presented the solution to the local government, they liked the machine, they liked our system, they liked what we offered them, the fact that it was open, that we could customize it for their country and so on.
Then your people entered the game and the deal got more competitive. I would not say it got dirty, but someone could have said that. They fought and fought the deal, but still the customer was happy to get CMPC and Mandriva.
So we closed the deal, we got the order, we qualified the software, we got the machine shipped. In other word, we did our job. I understand the machine are being delivered right now.
And then, today, we hear from the customer a totally different story: “we shall pay for the Mandriva Software as agreed, but we shall replace it by Windows afterward.”
Wow! I’m impressed, Steve! What have you done for these guys to change their mind like this? It’s pretty clear to me, and it will be clear to everyone. How do you call what you just did Steve, in the place where you live? In my place, they give it various names, I’m sure you know them.
Hey Steve, how do you feel looking at yourself in the mirror in the morning?
Of course, I will keep fighting this one and the next one, and the next one. You have the money, the power, and maybe we have a different sense of ethics you and I, but I believe that hard work, good technology and ethics can win too.
cheers
François
PS: a message to our friends in Nigeria: it’s still time to do the right thing and make the right choice, you will get lots of support for it and excellent services!
Chateaba con Angel Eduardo Porras , y me comento al respecto:
Me recuerda el coro de another brick in the wall parte 2
«We don’t need no education, We don’t need no thought control, we don’t need more sarcasm in the classroom»
http://www.pink-floyd-lyrics.com/html/another-brick-2-wall.html
Para que el mundo entero sepa que lo que estan cortando es el derecho a la educación, no es solo un negocio de tecnología, es el derecho a ser libres, y que gracias a corporaciones como microsoft el mundo recibe lo que ellos quieren dar, no lo que nos merecemos
Saludos
By Jose Antonio Cely Saidiza
Hace poco tuve la desgracia de no tener internet en casa… es de las peores cosas que me han pasado, prefiero que me corten el agua, esa la puedo mendigar en cualquier casa, recordemos que un vaso de agua no se le niega a nadie :D …
Ante la imposibilidad de no tener internet, tenia que seguir trabajando en algunas cosas cuando estuviera en casa y gran parte del trabajo es instalar Debian y configurar paquetes, entonces pronto me insole de andar con los 3 DVDs que componen Debian Etch para arriba y para abajo, fue cuando me decidí por montar mi repositorio local en el firewall de la casa, es un pentium III de 750Mhz, que tiene subversion, apache2, hace nat y ahora un repositorio local :D !.
Este no el método oficial, es mas practico y en Debian esta bastante documentado como hacer mirrors con rsysnc entre otras virguerias, si tenemos internet bastante rapido es mejor hacerlo de esta manera, esta forma que documento a continuación es para cuando tenemos una pésima conexión a internet (o como me sucedió, nula conexión :D ).
MONTANDO UN REPOSITORIO DEBIAN DESDE LOS CDROM/DVDS
Es una labor muy sencilla, solo necesitamos una maquina en nuestra red con un servidor web apache funcionando correctamente, y una partición que al menos tenga 15Gb de espacio libre (recordemos que son 3 DVDs, cada uno de 4.4Gb) y obviamente los DVDs de Etch. Eso si es una labor de paciencia (sobre todo si tenemos hardware viejo para el servidor) por que el proceso de la copia de 3 DVDs y el escaneo final de los paquetes es demorado!.
Describiré los paths que use en mi cofiguración, debéis acomodarte a los vuestros.
Directorio donde copiare los paquetes (al menos 15Gb libres)
/mnt/hdc1/
Directorio donde accedo a la unidad de DVD
/cdrom
Directorio de el contenido web de apache
/var/www/
Empezamos creando un directorio para los paquetes
mkdir /mnt/hdc1/myrepo
Me paso a raíz
cd /
Monto el DVD1
mount /dev/cdrom
copio paquetes del primer DVD
cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
cp -R /cdrom/pool/ /mnt/hdc1/myrepo/
Desmonto el DVD1
umount /dev/cdrom
Monto el DVD2
mount /dev/cdrom
copio paquetes del segundo DVD
cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
cp -R /cdrom/pool/ /mnt/hdc1/myrepo/
Desmonto el DVD2
umount /dev/cdrom
Monto el DVD3
mount /dev/cdrom
copio paquetes del tercer DVD
cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
cp -R /cdrom/pool/ /mnt/hdc1/myrepo/
Desmonto el DVD3
umount /dev/cdrom
Borro estos archivos
rm -rf dists/etch/main/debian-installer/
rm dists/etch/Release
Me paso al directorio de los paquetes
cd /mnt/hdc1/myrepo/
Escaneo y comprimo paquetes (main)
dpkg-scanpackages pool/main/ /dev/null > dists/etch/main/binary-i386/Packages
gzip dists/etch/main/binary-i386/Packages
Escaneo y comprimo paquetes (dists)
dpkg-scanpackages pool/contrib/ /dev/null > dists/etch/contrib/binary-i386/Packages
gzip dists/etch/contrib/binary-i386/Packages
Hago un link simbólico a mi servidor web (Este paso se puede obiar si estamos trabajando directo en la carpeta del servidor web o configuramos a apache para que acceda directo a nuestro directorio)
ln -s /mnt/hdc1/myrepo/ /var/www/debian/
listo!
Si todo es correcto podremos acceder a nuestro servidor vía web, y confirmar que todo funciona.
En los clientes solo es editar el archivo /etc/apt/sources.list y poner la url a nuestro servidor.
deb http://192.168.0.1/debian/ etch main contrib
Ejecutamos el comando
apt-get update
Y vola!
Recomiendo tener un servidor local. En mi caso, que me la paso solo trasteando con cacharros e instalaciones constantes es mas rápido, solo uso el CDROM de 140 megas de Debian Etch, instalo la base y en el repositorio le pongo la url de mi repositorio local y listo todo lo descargo desde mi red local, aparte de liberar de mi minuscula carga a los servidores oficiales :D.
Que pasara el día que publiquen una actualización? Sencillo, descargo/copio/pidoprestados/compro los DVDs, los vuelo a copiar y a ejecutar los dpkg-scanpackages.
By Jose Antonio Cely Saidiza
Este tutorial esta basado en la documentación oficial de nagios, y algunas tutoriales en español que hay en Internet, escribo este post, por que queria comentar mi experiencia con este espectacular programa que lo recomiendo un montón!
Nagios® es un software de monitorización de redes y sistemas, con licencia GPL. Nagios observa servidores y servicios de red específicos, alertándote cuando las cosas van mal y cuando están bien.
Para correr Nagios junto con sus plugins, solo es necesario tener un sistema operativo (de preferencia Linux :D ) con un servidor web, un compilador de C y la librería gd versión 1.6.3 o superior.
INSTALANDO NAGIOS
Este tutorial esta basado en debian etch que a la fecha es testing, intente instalarlo con apt-get install … pero la configuración por defecto no me funciono, tal vez por que el etch aun esta en testing, además me obligaba a usar el paquete exim4, y en el servidor de pruebas tengo qmail y esto me ocasionaría un conflicto. Entonces explicaré como instalar desde los fuentes.
De la página oficial de nagios:
http://www.nagios.org/download/
Descargamos la ultima versión ( a la fecha 2.7 ), en este caso nagios-2.7.tar.gz , y el paquete de plugins, en este caso la versión nagios-plugins-1.4.5.tar.gz (ya esta disponible la versión de plugins 1.4.6, pero me dio un error de compilación, entonces no la use)
Primero creamos los usuarios y grupos necesarios (www-data es el usuario en que corre apache en debian, en otras distribuciones puede variar)
adduser nagios
groupadd nagcmd
/usr/sbin/usermod -G nagcmd nagios
/usr/sbin/usermod -G nagcmd www-data
Creamos el directorio donde instalaremos nagios
mkdir /usr/local/nagios
Cambiamos de usuario y grupo el directorio recién creado
chown nagios:nagios -R /usr/local/nagios/
En el directorio donde este descargado nagios, lo descomprimimos
tar zxvf nagios-2.7.tar.gz
Luego ingresamos al directorio
cd nagios-2.7
Una vez en el directorio, ejecutamos
./configure – -prefix=/usr/local/nagios – -with-cgiurl=/nagios/cgi-bin – -with-htmurl=/nagios/ – -with-nagios-user=nagios – -with-nagios-group=nagios – -with-command-group=nagcmd
Si el configure no nos informa ningún error compilamos
make all
Instalamos…
make install
Creamos un script de inicialización en /etc/init.d/
make install-init
Ahora configuración del script creado para que se ejecute siempre al arranque (update-rc.d es el comando en debian para configurar servicios al arranque, en otras distribuciones puede variar)
update-rc.d nagios defaults
Configuramos permisos de algunos directorios
make install-commandmode
Instalamos algunas configuraciones de ejemplo, atención a este paso, por que nos basaremos en estos archivos para crear los nuestros
make install-config
Creamos enlaces simbólicos de binarios para nuestro sistema
ln -s /usr/local/nagios/bin/nagios /usr/sbin/nagios
ln -s /usr/local/nagios/bin/nagiostats /usr/sbin/nagiostats
Ahora instalaremos los plugins
Descomprimimos el paquete
tar zxvf nagios-plugins-1.4.5.tar.gz
cd nagios-plugins-1.4.5
Ejecutamos el script de configuración
./configure – -prefix=/usr/local/nagios – -with-cgiurl=/nagios/cgi-bin
Si el configure no nos informa ningún error compilamos
make
Instalamos…
make install
make install-root
Si hemos llegado a este punto sin problemas, crearemos la interfaz web de nagios
En el caso de ejemplo (debian etch) editaremos el archivo de configuración por default de apache2
/etc/apache2/sites-available/default
Al final agregamos
ScriptAlias /nagios/cgi-bin «/usr/local/nagios/sbin»
# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName «Nagios Access»
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Alias /nagios «/usr/local/nagios/share»
# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName «Nagios Access»
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user
Ahora creamos el archivo con el password para el usuario
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Reiniciamos apache
/etc/init.d/apache2 restart
Ahora podremos comprobar si funciona apuntando con un navegador a nuestro servidor. Ejemplo
http://192.168.0.66/nagios
Debe aparecer en pantalla la típica ventana de autenticación de apache. Nos autenticamos y debemos ingresar a un panel de administración web, en hora buena!
CONFIGURANDO NAGIOS
Empieza lo interesante, vamos a configurar nagios!!!
En este caso crearé un entorno para mi empresa y algunos clientes como ejercicio. Monte el servidor nagios en un portátil abandonado, un PIII, con 128Mb de RAM, en el que ya tenia instalado apache2 con Debian etch, el portátil se conecta a Internet con el ADSL de mi apartamento, desde acá supervisaré los servidores de Tecsua los cuales son un firewall y dos servidores web y de correo. También supervisaré dos clientes específicos, uno consta de un router y un firewall, y el segundo cliente nada más supervisaremos un servidor de aplicaciones que solo esta encendido en horarios de oficina. Figura 1
Espero os sirva de base para sus configuraciones especificas.
Figura 1
Pero antes de eso veamos como se «ordena» esto en el sistema Nagios.
Deben crearse los «contactos», que son las personas a las que se les debe notificar cualquier cosa que este configurada en nagios. Estos contactos deben clasificarse en «grupos», que como su nombre lo indica, establece características en común para esos «contactos».
En mi ejemplo, tenemos tres contactos, los clasificados en dos grupos llamados admin y tehcnical, Figura 2
1 – nagiosadmin, es el administrador general, hace parte del grupo «admin»
2 – supervisor, un supuesto supervisor general, hace parte del grupo «admin»
3 – technical_1, un supuesto técnico de soporte, hace parte del grupo «technical»
Figura 2
Ahora debemos crear «hosts» (entiéndase por host a un servidor, un router, etc), y estos hosts también deben clasificarse en grupos con características en común
En mi ejemplo, tenemos 7 hosts clasificados en dos grupos llamados tecsuaservers y tecsuaclients, Figura 3
1 – tecsua_router, router de acceso a internet de las oficinas de tecsua, obviamente hace parte del grupo tecsuaservers
2 – firewall_tecsua, firewall general en las oficinas de tecsua, grupo tecsuaservers
3 – tecsua_server_1, servidor web y de en las correo oficinas de tecsua, grupo tecsuaservers
4 – tecsua_server_2, servidor web y de correo de un cliente en las oficinas de tecsua, grupo tecsuaservers
5 – c1_router, router de acceso a internet de un cliente especifico c1, grupo tecsuaclients
6 – firewall_c1, es el firewall general de el cliente especifico c1, grupo tecsuaclients
7 – appserver_c2, es el servidor de aplicaciones de un cliente especifico c2, el cual solo esta encendido en horarios de oficina, grupo tecsuaclients
Figura 3
Y por ultimo, debemos crear «servicios», que pueden ser de cualquier tipo (ping, smtp, http, etc), y estos servicios deben estar asociados a un host.
En mi ejemplo son 12 servicios,
host & services
- appserver_c2 HTTP, PING
- c1_router PING
- firewall_c1 PING
- firewall_tecsua PING
- tecsua_router PING
- tecsua_server_1 HTTP, PING, SMTP
- tecsua_server_2 HTTP, PING, SMTP
Una vez tenemos claro el escenario, (para esto recomiendo hacer un mapa como los anteriores) solo es codificar esto en los archivos de configuración.
Cuando ejecutamos en la instalación el comando make install-config, este nos creo unos archivos base en /usr/local/nagios/etc. El archivo de configuración principal es:
nagios.cfg, el cual trae toda una serie de configuraciones por defecto que aplican bien para la mayoría de los casos.
También nos creo el archivo localhost.cfg, el cual viene preconfigurado para supervisar el sistema local, es muy útil estudiar este archivo, trae ejemplos muy explicativos, pero en mi caso y como generalmente se hace, fraccioné este archivo el varios archivos sueltos, para que sea mas cómodo configurar las cosas. A continuación explico las pequeñas modificaciones a algunos archivos y muestro en pantalla los archivos creados sueltos, los cuales pueden crear con su editor favorito dentro de carpeta de configuración de nagios.
1 – En el archivo nagios.cfg
a – Buscar la linea que apunta al archivo de ejemplo localhost.cfg y comentarla para que no use ese archivo
# Host and service definitions for monitoring this machine
# cfg_file=/usr/local/nagios/etc/localhost.cfg
b – Descomentar las lineas que apuntan a varios archivos de configuración, estos son los que vamos a crear si no existen
cfg_file=/usr/local/nagios/etc/contactgroups.cfg
cfg_file=/usr/local/nagios/etc/contacts.cfg
#cfg_file=/usr/local/nagios/etc/dependencies.cfg
#cfg_file=/usr/local/nagios/etc/escalations.cfg
cfg_file=/usr/local/nagios/etc/hostgroups.cfg
cfg_file=/usr/local/nagios/etc/hosts.cfg
cfg_file=/usr/local/nagios/etc/services.cfg
cfg_file=/usr/local/nagios/etc/timeperiods.cfg
2 – En el archivo cgi.cfg
a – Buscar la linea use_authentication que esta establecida por defecto a 1, y configurarla a 0, sin autenticación, esto es NO recomendado, pero por ser la parte 1 del manual no nos complicaremos tanto, en la parte 2 hablaremos al detalle de la autenticación.
use_authentication=0
b – Al final del archivo des comentar las alarmas sonoras si las queremos usar, estar se ejecutarán en el cliente.
host_unreachable_sound=hostdown.wav
host_down_sound=hostdown.wav
service_critical_sound=critical.wav
service_warning_sound=warning.wav
service_unknown_sound=warning.wav
normal_sound=noproblem.wav
3 – Ahora creamos los archivos de configuración, aclaro nuevamente que este es para mi ejemplo, podéis ajustar estos archivos a tus necesidades. (cambiar xxx.xxx.xxx.xxx por sus direcciones IP)
A – contactgroups.cfg
define contactgroup{
contactgroup_name admin
alias Nagios Administrators
members nagiosadmin,supervisor
}
define contactgroup{
contactgroup_name technical
alias Network Technicals
members technical_1
}
B – contacts.cfg
define contact{
contact_name nagiosadmin
alias Nagios Administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email jose.cely@xxxxx.xxx
}
define contact{
contact_name supervisor
alias Network Supervisor
service_notification_period 24×7
host_notification_period 24×7
service_notification_options u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email linus@xxxxx.xxx
}
define contact{
contact_name technical_1
alias Techical One
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email alam.brito@xxxxx.xxx
}
C – hosts.cfg
# Generic host definition template – This is NOT a real host, just a template!
define host{
name generic-host ; The name of this host template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
notification_period 24×7 ; Send host notifications at any time
register 0 ; DONT REGISTER THIS DEFINITION – ITS NOT A REAL HOST, JUST A TEMPLATE!
}
define host{
use generic-host ; Name of host template to use
host_name tecsua_router
alias Router SAGEM ADSL
address xxx.xxx.xxx.xxx
check_command check-host-alive
max_check_attempts 20
contact_groups admin
notification_interval 60
notification_period 24×7
notification_options d,u,r
}
define host{
use generic-host ; Name of host template to use
host_name firewall_tecsua
alias Firewall Tecsua
address xxx.xxx.xxx.xxx
parents tecsua_router
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}
define host{
use generic-host ; Name of host template to use
host_name tecsua_server_1
alias www.tecsua.com
address xxx.xxx.xxx.xxx
parents firewall_tecsua
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}
define host{
use generic-host ; Name of host template to use
host_name tecsua_server_2
alias www.xxxxxx.com.co
address xxx.xxx.xxx.xxx
parents firewall_tecsua
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}
define host{
use generic-host ; Name of host template to use
host_name c1_router
alias Router Coquito ADSL
address xxx.xxx.xxx.xxx
check_command check-host-alive
max_check_attempts 20
contact_groups admin
notification_interval 60
notification_period 24×7
notification_options d,u,r
}
define host{
use generic-host ; Name of host template to use
host_name firewall_c1
alias Firewall xxxxxxxxx
address xxx.xxx.xxx.xxx
parents c1_router
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period 24×7
notification_options d,u,r
}
define host{
use generic-host ; Name of host template to use
host_name appserver_c2
alias Aplication Server xxxxx
address xxx.xxx.xxx.xxx
check_command check-host-alive
max_check_attempts 10
contact_groups admin
notification_interval 120
notification_period workhours
notification_options d,u,r
}
D – hostgroups.cfg
define hostgroup{
hostgroup_name tecsuaservers
alias Tecsua Servers
members firewall_tecsua, tecsua_router, tecsua_server_1, tecsua_server_2
}
define hostgroup{
hostgroup_name tecsuaclients
alias Tecsua Clients
members c1_router, firewall_c1, appserver_c2
}
E – services.cfg
# Generic service definition template – This is NOT a real service, just a template!
define service{
name generic-service ; The ‘name’ of this service template
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service ‘freshness’
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
is_volatile 0 ; The service is not volatile
register 0 ; DONT REGISTER THIS DEFINITION – ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
define service{
# use generic-service ; Name of service template to use
host_name tecsua_router
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 240
notification_period 24×7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}
define service{
# use generic-service ; Name of service template to use
host_name c1_router
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 240
notification_period 24×7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60%
}
define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_1
service_description HTTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_http
}
define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_2
service_description HTTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_http
}
define service{
# use generic-service ; Name of service template to us
host_name appserver_c2
service_description HTTP
is_volatile 0
check_period workhours
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_http
}
define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_1
service_description SMTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_smtp
}
define service{
# use generic-service ; Name of service template to us
host_name tecsua_server_2
service_description SMTP
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_smtp
}
define service{ # use generic-service ; Name of service template to us
host_name firewall_tecsua
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}
define service{ # use generic-service ; Name of service template to us
host_name firewall_c1
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 120
notification_period 24×7
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}
define service{ # use generic-service ; Name of service template to us
host_name appserver_c2
service_description PING
is_volatile 0
check_period workhours
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}
define service{ # use generic-service ; Name of service template to us
host_name tecsua_server_1
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}
define service{ # use generic-service ; Name of service template to us
host_name tecsua_server_2
service_description PING
is_volatile 0
check_period 24×7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups technical,admin
notification_interval 120
notification_period workhours
notification_options w,u,c,r
check_command check_ping!100.0,20%!500.0,60%
}
F – timeperiods.cfg
# This defines a timeperiod where all times are valid for checks,
# notifications, etc. The classic «24×7» support nightmare. : – )
define timeperiod{
timeperiod_name 24×7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
# ‘workhours’ timeperiod definition
define timeperiod{
timeperiod_name workhours
alias «Normal» Working Hours
monday 09:00-18:00
tuesday 09:00-18:00
wednesday 09:00-18:00
thursday 09:00-18:00
friday 09:00-18:00
saturday 10:00-13:00
}
# ‘nonworkhours’ timeperiod definition
define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,18:00-24:00
tuesday 00:00-09:00,18:00-24:00
wednesday 00:00-09:00,18:00-24:00
thursday 00:00-09:00,18:00-24:00
friday 00:00-09:00,18:00-24:00
saturday 00:00-10:00,13:00-24:00
}
# ‘none’ timeperiod definition
define timeperiod{
timeperiod_name none
alias No Time Is A Good Time
}
Con estos archivos base podremos inicializar nagios por primera vez, pero siempre después de cualquier configuración podemos correr una verificación de los archivos de configuración, antes de iniciar, para eso esta la bandera -v en el comando nagios, la cual verifica la sintaxis y correctas relaciones/asignaciones.
Corremos la verificación
nagios -v /usr/local/nagios/etc/nagios.cfg
Que en mi ejemplo al final me de dio esta salida:
Total Warnings: 0
Total Errors: 0
Things look okay – No serious problems were detected during the pre-flight check
Todo figura OK, en algunas configuraciones puede que nos muestre algún warning, pero estos no son tan trascendentales.
Ahora iniciaremos nagios por primera vez!.
/etc/init.d/nagios start
Podemos comprobar que el procesa esta en ejecución con
ps -A|grep nagios
Que en mi caso me muestra esta salida
4883 ? 00:00:00 nagios
En hora buena, ahora podemos acceder vía web a nagios, si la configuración de apache fue correcta deberíamos poder acceder vía web, en mi caso abro un navegador y apunto a mi servidor
http://192.168.0.66/nagios
Nos pedirá nombre de usuario y contraseña (los anteriormente creados), una vez logeados, podremos ver nuestros servidores y servicios, si es le primera vez que inicia nagios, debemos esperar unos minutos para que nagios ejecute sus comandos de supervisión configurados y de esta forma poder empezar a ver resultados en pantalla, Nagios tiene una interfaz web muy intuitiva que no explicaré en este articulo, ya es cuestión de vosotros profundizar. A continuación algunas capturas de pantalla:
Esto es todo por esta primera parte, si este tutorial tiene buena acogida escribiré la parte 2, explicando los mapas 2D y 3D, alarmas sonoras, integración con RRDTools, etc!
Links:
Nagios
http://nagios.org
How to no oficial en Español
http://nagios.linuxbaja.org
By Jose Antonio Cely Saidiza
En tecsua desarrollamos un sistema ERP & POS, totalmente web (cuando terminemos el código de una forma genérica, será publicado).
El cliente sugirió utilizar touchscreen en los puntos de pago, y pues este chicharroncito de configurarlo me toco a mi, así que a continuación documento mi experiencia.
Para empezar, debíamos seleccionar un touchscreen compatible y bastante documentado en Internet, y creo que el más documentado y utilizado es el ELOTOUCH (4), tiene conexión serie y USB (5), y en la página de ellos existen unos drivers «libres», y uno «publico» en que ellos dicen que no dan soporte (3). Entonces cometí mi primer error, usar el puto driver que dan en la página, no lo pude compilar en debian tal vez por la versión de GCC es incompatible, en fin… perdí un día en eso.
Entonces me decidí por bajar el ultimo kernel (2.6.18.2), y ho sorpresa!, cuando ejecute menuconfig, me encontré con estas tres sorpresas:
Device Drivers —>
Input device support —>
< *> Touchscreen interface
(1024) Horizontal screen resolution
(768) Vertical screen resolution
Device Drivers —>
Input device support —>
[*] Touchscreens —>
< *> Gunze AHL-51S touchscreen
< *> Elo serial touchscreens
< *> MicroTouch serial touchscreens
< *> ICS MicroClock MK712 touchscreen
Device Drivers —>
USB support —>
USB Touchscreen Driver
Esas son las configuraciones que use, subí la resolución del touchscreen, y active TODOS los touchscreen, es un poco exagerado, pero mejor ir a la fija. Creo que el modulo del kernel es el mismo que figura en la página de elotouch como no soportado.
Viendo la documentación del Linux Touch Screen HOWTO, y la propia de elotouch, configure el archivo /etc/X11/XF86Config de la manera incorrecta!!!, a continuación pongo resaltando en ROJO POR QUE NO SE DEBE HACER!
Section «InputDevice»
Identifier «ELO touchscreen»
Driver «elographics»
Option «Device» «/dev/ttyS0»
Option «AlwaysCore»
Option «screenno» «0»
Option «MinimumXPosition» «600»
Option «MaximumXPosition» «3600»
Option «MinimumYPosition» «600»
Option «MaximumYPosition» «3600»
Option «UntouchDelay» «3»
Option «ReportDelay» «1»
EndSection
Por que esta mal si la documentación de elotouch explica de esa forma? Esta mal por la versión de XFree de nuestro queridísimo debian sarge (XFree86 4.3.0.1), esa forma de configuración es para versiones mas viejas, lo peor de todo es que funciona! pero no tiene el foco adecuado, es decir, donde presiono la pantalla el cursor del mouse aparece unas pulgadas desfasadas, y entonces fue donde me perdí más, supuse que era un problema de calibración, entonces baje y probé jijuemil programas, scripts, comandos de calibración, pero entre más probaba, me daba cuenta que la puta calibración seguía como si nada, es decir, cambiaba los valores MinimumXPosition, MinimumXPosition, MaximumXPosition, MinimumYPosition, MaximumYPosition y nada, ponía cualquier valor por desfasado que fuera y seguía como si nada, después de otro día perdido, pensé que el monitor tal vez tenia un defecto por que no se dejaba calibrar, de la desesperación ya estaba pensando en destaparlo :D (hubiera perdido la garantía), entonces opte por probarlo en windows y obviamente funciono sin problemas, entonces no era daño del monitor, era pura calibración…
Entonces me paso como un capitulo de «sobreviví» (discovery channel) «me encontré en paz conmigo mismo, y pude haberme rendido sin problemas, pero decidí luchar, luchar hasta el final… :P «… entonces, instale un sistema de ceros, y pensé volver al principio usando los drivers de la página de elotouch, googleando un poco, etc. afortunadamente releí el Linux Touch Screen HOWTO, pero esta vez encontré un párrafo adicional (Addendum) que antes no lo había leído, porque estaba leyendo un HOWTO muy viejo de otra pagina, en el HOWTO actualizado dice un tal Wong Yeow Sen:
If it seems your calibration values aren’t parsed try the following:
…
Option «MinX» «100»
Option «MaxX» «4000»
Option «MinY» «100»
Option «MaxY» «4000»
…
Esto parece que es a partir de XFree86 4.2, entonces solo fue poner mi /etc/X11/XF86Config de la siguiente manera…
…
Section «InputDevice»
Identifier «ELO touchscreen»
Driver «elographics»
Option «Device» «/dev/ttyS0»
Option «AlwaysCore»
Option «screenno» «0»
Option «MinX» «100»
Option «MaxX» «4000»
Option «MinY» «100»
Option «MaxY» «4000»
Option «UntouchDelay» «3»
Option «ReportDelay» «1»
EndSection
…
y no olvidar al final poner «InputDevice «ELO touchscreen»»
…
Section «ServerLayout»
Identifier «Default Layout»
Screen «Default Screen»
InputDevice «Generic Keyboard»
InputDevice «Configured Mouse»
InputDevice «ELO touchscreen»
EndSection
….
Modifique el XF86Config, reinicie las X y vola! funciona como magia! no tuve que calibrar nada!!!… Gracias Wong Yeow Sen! :D
Resumen:
Bajarse el ultimo kernel, compilarlo activando los drivers Elotouch, asegurarse de que el monitor este encendido y conectado tanto el cable de video como el cable serie (o USB) a tu computador! configurar las X de la forma que dice el link 1, en el Addendum, y listo! …
Y asegurarse siempre de leer la ultima documentación disponible, hay muchos HOW TO sin actualizar!
Nota 22 Nov 2006
En hora buena!, lo probe con Xorg en mi debian sarge, y funciono de la misma manera
#Xorg -version
X Window System Version 6.8.2
El propio
(1) http://tldp.org/HOWTO/XFree86-Touch-Screen-HOWTO.html
Uno de los tantos HOWTO desactualizados, NO LEER
(2) http://www.linuxjunkies.org/html/XFree86-Touch-Screen-HOWTO.html
La página de elo, muy buena documentación incluida en los drivers
(3) http://www.elotouch.com/Support/Downloads/dnld.asp#linux
Elotouch
(4) http://www.elotouch.com/
El monitor usado
(5) http://www.elotouch.com/Products/LCDs/1515L/default.asp