miércoles, 24 de septiembre de 2014

Comandos útiles para pgpool-II

Pgpool-II es un middleware entre clientes y servidores PostgreSQL que permite montar un sistema de réplica. Si no lo conocéis os aconsejo que le echéis un vistazo. Es muy interesante y cubre necesidades que otros métodos de réplica sobre PostgreSQL no abordan.

Un aspecto negativo de este proyecto es que no hay demasiada documentación. A continuación indico algunos comandos que facilitan la administración del cluster y permiten conocer el estado de pgpool-II:

Conocer el número de conexiones disponibles

Es necesario saber cuántas conexiones hay disponibles para los clientes con el propósito de anticiparse a un 100% de uso y por tanto a no aceptar nuevas conexiones.

ps -ef | grep "wait for connection request" | grep -v grep | grep -v PCP | wc -l
3030

Conocer el número de conexiones usadas por un equipo

Cuando se usan librerías de terceros para conectar una aplicación a una base de datos, como Hibernate, no se sabe a ciencia cierta cuántas conexiones abre contra pgpool-II. Esta métrica permite conocer mejor el uso que hacen estas librerías de las conexiones y posibilita saber cuántos clientes podemos tener conectados al mismo tiempo.

ps -ef | grep -E "pgpool: .*192.168.46.6" | grep -v grep | wc -l

Ver el estado de los nodos configurados en el cluster

En pgpool-II cada nodo PostgreSQL añadido al cluster puede estar en uno de estos tres estados:
  1. Nodo marcado como válido y sobre el que pgpool no ha escrito desde que se marcó con este estado.
  2. Nodo marcado como válido y sobre el que pgpool ya ha realizado escrituras.
  3. Nodo fuera de servicio, bien porque esa máquina está apagada, no tiene PostgreSQL en ejecución o sí lo está pero no tiene sus datos sincronizados con el resto de servidores válidos.

Dado que el log de pgpool-II tiene bastante verbosidad, la mejor forma de ver el estado de los servidores es el siguiente:

# tail -f /var/log/pgpool.log | grep "DB node"


Poco a poco iré poniendo más trucos sobre Pgpool-II, pues pueden resultar muy útiles para los que se inician en este mundo.

viernes, 1 de agosto de 2014

Enlace a blog de José Linares

Hace poco descubrí un estupendo blog sobre temas relacionados a los que escribo en este blog: bash, programación de scripts, administración de sistemas... Su autor es José Linares y aquí os dejo su blog: jose-linares.com.

A disfrutarlo y aprender muchas cosas interesantes y útiles.

jueves, 24 de julio de 2014

Enviar mensajes por Hangouts desde consola

Necesitaba enviar mensajes por Hangouts desde linea de comandos, para hacerlo de manera automática con scripts. Tras probar distintas aplicaciones, algunas que funcionaban pero con un entorno interactivo con ncurses, y otras que directamente fallaban, encontré la solución. Sencilla y elegante:


1. Instalar la librería XMPP para Python:

# aptitude install python-xmpp

2. Crear el script Python que enviará los Hangout. Llamémoslo sendHangouts.py:

#!/usr/bin/python
# -*- coding: latin-1 -*-

# 1er parametro: cuenta del destinatario
# 2o parametro: mensaje a enviar

import sys, xmpp

jid = xmpp.protocol.JID('cuenta.desde.la.que.envio.el.hangout@gmail.com')
cl=xmpp.Client(jid.getDomain(),debug=[])
cl.connect()
cl.auth(jid.getNode(),'contraseña.de.la.cuenta')
cl.send(xmpp.protocol.Message(sys.argv[1],sys.argv[2], typ='chat'))

3. Asignar permisos de ejecución al script:

# chmod +x sendHangouts.py


4. Para que cuenta.desde.la.que.envio.el.hangout@gmail.com pueda mandar un hangouts a mi.cuenta.destinataria@gmail.com, el emisor tendrá que tener al destinatario en su agenda de contactos. Valdría con que cuenta.desde.la.que.envio.el.hangout@gmail.com enviase un email a mi.cuenta.destinataria@gmail.com.

5. Y listo para enviar mensajes:

# ./sendHangouts.py mi.cuenta.destinataria@gmail.com Hola
# ./sendHangouts.py mi.cuenta.destinataria@gmail.com "Alarma crítica en servidor de base de datos"

6. A inventar posibles usos.