Ir al contenido principal

Algunas configuraciones básicas en Riemann

A últimas fechas estaré hablando mucho de Riemann,un software que como espina dorzal, funciona muy bien en diferentes propósitos de monitoreo. Creo que su competidor, o alternativa, más cercana, es Nagios, solo que por Riemann, no se paga un solo peso.

Riemann es muy flexible, puesto que por si mismo puede ser un agente de monitoreo  muy completo (tiene muchos plugins), pero su verdadero poder reside en los múltiples conexiones que tiene con otros proyectos, como Graphite, Collectd y  Grafana, por nombrar solo algunos. Por esta característica, es muy útil hacerlo funcionar como un event engine, el cual se encargará de dotar de un formato y un ruteo de métricas. En algún punto, también permite tomar decisiones sobre ellas. Es decir, en Riemann pueden recaer todas las  especificidades de alarmado y tomda de decisiones en función de los valores de las métricas.

En este segundo post de Riemann abordaré como ejecutarlo y algunos de los primeros pasos para familiarizarse con la herramienta. Seguramente algunas cosas no se utilizarán, pero de todas maneras es importante conocerlas.

¿Para qué nos sirve ésto?


En primer instancia para homogeneizar la información que se ingresa, se evalúa, y se produce. Ayuda demasiado cuando agregamos nuevas métricas o nuevos hosts, ya que el trabajo es mínimo, comparado con realizarlo manualmente. Podemos administrar más hosts sin tener que hacer cambios en cada uno. Aunque claro, si utilizamos un gestor de cambios como Ansible, Puppet o Chef, sale sobrando la discusión sobre cómo administrar cada host.

A continuación un breve bosquejo de la arquitectura que podemos seguir para un monitoreo. Las métricas pueden llegar o producirse con plugins de Riemann o con software que tenga soporte para éste. Yo uso Collectd. Para la visualización podemos utilizar la solución Graphite/Grafana; misma que nos ayuda a graficar y ver en tiempo (casi) real, lo que sucede. El envío de SMS o Correo, puede ser por medio de otro software, o simplemente con un .clj dentro de Riemann. Los archivos .clj son las extensiones de los archivos Clojure.



Instalación.

En el sitio oficial podemos descargar el binario o el empaquetado que se quiera .

Basta con descomprimir de la manera habitual que se tratan estos paquetes, y que a estas alturas, querido lector, mucha literatura al respecto puedes hallar.

Inicio


Entramos a la carpeta descomprimida. En la ruta bin está el binario. Lo ejecutamos de la manera habitual. Por defecto levanta algunos puertos donde está escuchando. Con ellos podemos interconectar varias instancias en distintos host o incluso en el mismo.



Parado


Interrumpimos el servicio con control+c

**Más adelante haremos que inicien como servicios para comodidad de administrar.


Otros paquetes


Podemos instalar otros paquetes con el gestor de Ruby. Ésto es para efectos de pruebas y habrá a alguien que le guste la manera en que trabaja con esta simpleza. Gem es una joya, como su nombre lo indica, para la gestión de módulos en los repositorios específicos de Ruby. Vamos a instara el dashboard y los tools de Riemann.

$ gem install riemann-dash
....
$ gem install rieman-tools




Bien. Hasta aquí todo perfectamente fácil. Lo mejor es que la cosa se mantiene así de fácil todo el tiempo, claro, una vez que se los he explicado bien.

Dentro del directorio etc  encontramos el archivo de configuración. Por ahora solo mantiene uno, pero conforme busquemos implementar más características, podremos agregarlos, al mero estilo de Apache.


; -*- mode: clojure; -*-
; vim: filetype=clojure

(logging/init {:file "riemann.log"})

; Listen on the local interface over TCP (5555), UDP (5555), and websockets
; (5556)
(let [host "127.0.0.1"]
 (tcp-server {:host host})
 (udp-server {:host host})
 (ws-server  {:host host}))

; Expire old events from the index every 5 seconds.
(periodically-expire 5)

(let [index (index)]
 ; Inbound events will be passed to these streams:
 (streams
   (default :ttl 60
     ; Index all events immediately.
     index

     ; Log expired events.
     (expired
       (fn [event] (info "expired" event))))))

Primer prueba



Con esta primer prueba vamos a familiarizarnos con lo que podemos ver, y cómo lo trataremos.
Abramos dos consolas. En la primera ejecutamos riemann por sí mismo; en la segunda, sin importar el path (previa instalación de riemann-tools), ejecutamos la instrucción:


$ riemann-healt


En la consola de riemann observamos después de unos cuantos segundos la siguiente información que se muestra en la imagen. Son algunos de los atributos de nuestro sistema. 




Hasta aquí todo funciona como debiera. En los subsecuentes post, abordaré temas concretos, para al final, hacer una solución que integre todo y cada una de las cosas mencionadas. Sugiero que se empapen un poco de Clojure para poder facilitar las cosas. Hasta la siguiente entrega.

Comentarios

Entradas populares de este blog

Ángulo de Corte

El armar un gallo de pulgada es una de las cosas más sujeta a mitos y medias verdades. Este es uno de los muchos temas que los galleros enuncian con una seguridad a prueba de balas.  Hasta el momento no he leído un solo escrito o esquema con detalle científico que tenga conclusiones claras y precisas de lo que sucede en un combate ni la ergonomía que mejor se adapta, todo proviene de un sistema de creencias que, muy en lo personal, me cuesta creer. El ángulo de corte se refiere a la posición de la punta de la navaja con respecto al codo de la pata. Dependiendo del amarrado es que la sitúa en un rango de los 5° a los 9°. De lo que no dudo es que no hay una manera precisa de emitir teorema alguno sobre este rubro. La formula del corte está dada por la sujeción de la navaja, la forma de la navaja, la altura de la botana, la posición de disparo del gallo, así como la calidad y aprendizaje del mismo durante el desarrollo de la pelea. Son muchas las variables, sin emba...

Análisis de conexiones TIME_WAIT

El tema de las conexiones mal utilizadas es un dolor de cabeza para muchos administradores de servidores de aplicaciones. Es común que las aplicaciones que mantenemos en nuestro resguardo sufran degradación, e incluso fallos, por el "simple" hecho de no cerrar las conexiones o tardar demasiado en hacerlo (vía sistema operativo). Como sabemos, una conexión pasa por varios estados, mismos que salen de la intención de este escrito. Las conexiones establecidas (ESTABLISHED) son demasiado costosas cuando abren y cierran, debido a eso, se han creado manejadores de conexiones (pooles) que mantienen abiertas las conexiones para reutilizarlas dependiendo la demanda. Es por eso, que en medida de lo posible, hay que utilizar un manejador de conexiones, ya sea a base de datos o algún broker. Entrando de lleno al tema, las conexiones en estado TIME_WAIT son un problema por el consumo de memoria, ocupando cada una 64k de memoria no paginable, es decir,  todo el tiempo se mantiene...

Significado de los dígitos de versión del kernel Linux

Algunas de las cosas que siempre quise saber, pero nunca me hice del tiempo para investigarlo es la función de los cuatro dígitos del kernel Linux. Su significado poco tiene que ver con hechos cabalísticos o confusos enunciados matemáticos. Mejor que en mis palabras están las de Tanenbaum: Los números de versión de Linux consiste en cuatro números, A.B.C.D, como 2.6.9.11. El primer número indica la versión del kernel. El segundo indica la revisión mayor. Antes del kernel 2.6 los números pares correspondían a versiones estables del kernel, mientras que los impares correspondían a versiones inestables que estaban en desarrollo. Después del kernel 2.6 los significados se manejaron de forma distinta. El tercer número corresponde a la revisión de versiones menores, como la aceptación de drivers. El cuarto número corresponde a las correcciones de errores menores o parches de seguridad.  Como ven, el señor Tanenbaum es sumamente lacónico con la explicación de los dígitos que compo...