Como sabrán en estos tiempos un Sysadmin o administrador de sistemas tiene que tener todos sus servers bien vigilados y en correcto funcionamiento, así mismo tener diferentes medios para poder acceder a ellos desde cualquier lugar, hora y modo, por lo cual en una conferencia en días pasados vi que ciertas empresas ya ofrecen un modo peculiar de administración y monitorizacion el cual es usando un vil y vulgar chat (ok ok ok, ni tan vil, ni tan vulgar pero es lo mas usado), y aun que suene raro no es nada nuevo solo que poco conocido, así que por eso les traigo el siguiente manual para que lo prueben y por lo cual pongamos manos a la obra
Primero los requerimientos:
Un servidor propio tipo Jabber configurado y/o una cuenta de gmail, esto para enviar los mensajes o usar su chat (ya se que esta de mas decirlo, pero nunca esta de mas)
Crear un usuario dentro del servidor , por ejemplo llamado monitor o pueden usar root, pero ya saben las reglas, Yo en este caso use root pero fue en una maquina virtual, ok pero como dicen manos a la consola :p
Instalamos primero, los siguientes paquetes:
apt-get install monit sendxmpp centerim
Ahora explicaremos el por que el cada uno de los paquetes
Monit: es un sistema de monitoreo y el cual no ayudara a levantar el servicio cuando este se detenga u otras acciones,
sendxmpp: este nos permite mandar mensajes utilazando el protocolo de comunicacion jabber, este protocolo lo podemos en contrar en chat muy conocidos como son google hangout o facebook por poner un ejemplo,
Centerim: este es un cliente de mesajeria (chat) pero en consola , aun que no lo crean en linux aparte de administrar servidores por este medio, tambien se puede navegar por internet, leer correo y chatear en consola
para cualquier cosa visiten la pagina de cada proyecto
Ok después de instalar lo anterior siguiente viene la configuración de cada uno de los productos asi que a darle:
el primero en configurar sera el de centerim y hay 2 modos uno es ejecutar el comando centerim por primera vez y seguir los pasos para configurarlo o la otra es que dentro del home del usuario en el directorio .centerim/ (si con todo y punto) y ahi crear el fichero config con la siguiente info :
cd /home/usuario/.centerim/
vim configY ya dentro del archivo se insertara la siguiente informacion
mailcheck
screensocketpath /var/run/screen
chatmode icq yahoo msn aim irc jab gg
convert icq yahoo msn aim irc jab rss lj gg infocard
fromcharset cp1251
tocharset koi8-r
nobidi
smtp localhost:25
browser mozilla
ptp 0-0
protocolormode
sort_by_status_and_activity
left_panel_width 53
log_panel_height 8
chat_panel_height 8
defaultauthmessage Please accept my authorization to add you to my contact list.
jab_nick usuariodegmail@gmail.com #usuario del servidor jabber o gmail
jab_pass password_del_usuario #password del usuario
jab_server talk.google.com:5223 #servidor del chat o gmail
jab_osinfo 1
jab_prio 4
jab_ssl 1
Luego configuramos el sendxmmp de la siguiente manera estando en el home del usuario
echo "usuario@gmail.com;talk.google.com gmailpassword gmail.com" >> ~/.seddxmpprc
chmod 700 ~/.sendxmpprcY lo probamos de la siguiente manera:
echo 'Hello World!!' | sendxmpp -t -u usuariodegmail usuariodestino@gmail.comCon esto se enviara un mensaje por chat a la cuenta de destino , sito sale vien lo veremos en la ventana de chat
CONFIGURACION DE MONIT
La configuracion de monit se encuentra en el fichero /etc/monit/monitrc, el cual vamos a editar y usuaremos la siguiente configuaracion
vim /etc/monit/monitrc
set daemon 120 # check services at 2-minute intervals set logfile /var/log/monit.log set idfile /var/lib/monit/id #set statefile /var/lib/monit/state set eventqueue basedir /var/lib/monit/events # set the base directory where events will be stored slots 100 # optionally limit the queue size include /etc/monit/conf.d/*
set mail-format { subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Received: Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION}
#set httpd port 8181 and # Port used for the WEB access, listen on LOCALHOST# use address localhost# allow admin:monit # Username/password
set httpd port 2812 and #use address localhost # only accept connection from localhost allow localhost allow 192.168.100.7 allow admin:monit # require user 'admin' with password 'monit' allow @monit # allow users of group 'monit' to connect (rw) allow @users readonly # allow users of group 'users' to connect readonly
################################################################################# Services###############################################################################
#checamos el estado de nuestro server
check system localhost if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if memory usage > 75% then alert if swap usage > 25% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 30% then alert if cpu usage (wait) > 20% then alert
#manera de llamar los comandos y verificar si esta corriendo el proceso
check process QVD_HKD with pidfile /var/run/qvd/qvd-hkd.pidstart program = "/usr/lib/qvd/bin/qvd-hkd start" with timeout 60 secondsstop program = "/usr/lib/qvd/bin/qvd-hkd stop"
check process QVD_L7R with pidfile /var/run/qvd/qvd-l7r.pid start program = "/usr/lib/qvd/bin/qvd-l7r start" with timeout 60 seconds stop program = "/usr/lib/qvd/bin/qvd-l7r stop"
check process POSTGRESSQL with pidfile /var/run/postgresql/9.1-main.pid start program = "/etc/init.d/postgresql start" stop program = "/etc/init.d/postgresql stop"
check process APACHE with pidfile /var/run/apache2.pid start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop"
esto son ejemplo, pero si se dan cuenta puse unos que hace referencia a los servicios de QVD es un sistema de VDI opensource el cual pueden checarlo en el link,
Los demas es para ver el estado de postgres apache etc, y aparte como parar o reiniciar el proceso
para mas info checar la wiki de monit
CONFIGURACIÓN FICHEROS
Primero crearemos los archivos que ocuparemos, asi que para esto no iremos al directorio /usr/local/bin
cd /usr/local/bin/ya ahi con nuestro editor favorito crearemos el primer fichero llamado gtalkdaemon.sh, este fichero contendrá un script el cual mantendra activo nuestro servicios y contiene lo siguiente
vim /usr/local/bin/gtalkdaemon.shY dentro del fichero pondremos lo siguientes
#!/bin/bash# GTalk Daemonrm -f /root/.centerim/jusuariodestino\@gmail.com/historytouch /root/.centerim/jusuariodestino\@gmail.com/historytail -f /root/.centerim/jusuariodestino\@gmail.com/history | perl -ne 'system("/usr/local/bin/gtalkfilter.sh $_")'
después crearemos el fichero gtalkfilter.sh este nos ayudara a que con un pin o codigo de 4 digitos sepa diferenciar entre una platica y la ejecucion de un comando lo cual veremos mas adelante, pero por ejemplo yo escogi aqui 1111
vim /usr/local/bin/gtalkfilter.sh
#!/bin/bash
if [ $(echo $@ | grep 1111| wc -l) = 1 ];then/usr/local/bin/gtalkexecuter.sh $(echo $@ | cut -f2 -d\:);> /root/.centerim/tucuenta@gmail.com/history ;fi
Y por ultimo crearemos el script gtalkexecuter.sh el que se encargara de ejecutar los comandos de monit y algunos otros para que nos los muestre en el chat, pondre algunos como ejemplo pero en la pagina de monit y en las referencias que pondre mas abajo encontraran mas que les podran ayudar
vim /usr/local/bin/gtalkexecuter.sh
Una vez creado los ficheros le cambiaremos los permisos para que puedan ejecutarse#!/bin/bashlog=/var/log/gtalkexecuter.logcase $1 inuptime)echo "Server status.." | sendxmpp -t -u a usuariodegmail usuariodestino@gmail.com ;/usr/bin/uptime | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;status)sudo /usr/bin/monit status | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;summary)sudo /usr/bin/monit summary | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;start_l7r)sudo /usr/bin/monit start QVD_L7R; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;stop_l7r)sudo /usr/bin/monit stop QVD_L7R; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;start_hkd)sudo /usr/bin/monit start QVD_HKD; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;stop_hkd)sudo /usr/bin/monit stop QVD_HKD; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;start_postgres)sudo /usr/bin/monit start POSTGRESSQL; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;stop_postgres)sudo /usr/bin/monit stop POSTGRESSQL; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;start_apache)sudo /usr/bin/monit start APACHE; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u allandragon14 kurama10@linux-mx.org ;;;stop_apache)sudo /usr/bin/monit stop APACHE; sleep 5; sudo /usr/bin/monit summary | sendxmpp -t -u a usuariodegmail usuariodestino@gmail.com ;;;start_monit)sudo /etc/init.d/monit start | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;stop_monit)sudo /etc/init.d/monit stop | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;list_vm_qvd)sudo /usr/bin/qa vm list | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;list_user_qvd)sudo /usr/bin/qa user list | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;list_host_qvd)sudo /usr/bin/qa host list | sendxmpp -t -u a usuariodegmail usuariodestino@gmail.com ;;;help)echo "uptime|status|start_apache|stop_apache|start_mysql|stop_mysql|mysql_slave|start_mariadb|stop_mariadb|start_mongodb|stop_mongodb|start_monit|stop_monit" | sendxmpp -t -u usuariodegmail usuariodestino@gmail.com ;;;* )echo Unrecognied option $1 >> $log;;esac
chmod 755 /usr/local/bin/gtalkexecuter.sh /usr/local/bin/gtalkfilter.sh /usr/local/bin/gtalkdaemon.sh
Luego creamos el fichero del log
touch /var/log/gtalkexecuter.log chown monitor:monitor /var/log/gtalkexecuter.log
Como se muestra en archivo gtalkexecuter.sh se usa sudo para ejecutar los comandos por lo cual hay que darle los permisos necesarios para el usuario pueda ejecutarlos sin necesidad de password por lo cual lo editamos con visudo y agregamos lo siguiente
monitor ALL=NOPASSWD: /usr/bin/monit, /etc/init.d/monit
una ves terminado esto crearemos un script en init.d para poder inciar el demonio que creamos para lo cual haremos lo siguiente
vim /etc/init.d/gtalk
#!/bin/bash
case "$1" iny luego creamos una link simbolico para que inicie al arrancar el sistema
'start') #Start gtalk monitoring system su - monitor -c 'screen -d -m -S centerim centerim' su - monitor -c 'sleep 5 && /bin/bash /usr/local/bin/gtalkdaemon.sh 2> /dev/null &' ;; 'stop') #Stop gtalk monitoring system killall -9 centerim killall -9 tail PROCS=`ps aux | grep gtalk | grep -v grep | awk '{print$2}'` for i in $PROCS; do kill -9 $i done ;; 'restart') stop start ;; '*') echo "start|stop|restart" ;;esac
cd /etc/rc2.d ln -s ../init.d/gtalk S23gtalkCon esto podemos ya empezar las pruebas,
el modo de uso es el siguiente:
en la ventana del chat del usuario que escogimos como destino haremos lo siguiente
Cualquier cosa me pueden dejar su comentario y si encuentran algun error favor de comentarmelo,
Les recuerdo que no soy muy bueno con la redaccion pero espero que les sirva
saludos y gracias
No hay comentarios:
Publicar un comentario