Métricas de Centreon en Graphite y Grafana

En esta entrega podremos ver como enviar las métricas de los equipos y servicios que ya estámos monitoreando con centreon. El broker de centreon esta preparado para distintas salidas(outputs) entre ellas mysql, graphite e influxdb. Nos centraremos en este artículo lograr la salida para un servidor graphite.
Graphite sirve para recibir datos, guardarlos y después consultarlos. Por defecto, Graphite utiliza el backend de Carbon, que es otro servicio que permite guardar datos en una base de datos (por llamarlo de alguna manera) llamada Wisper.
Esta va a ser la estructura a la que vamos a llegar al final del artículo donde el centreon le enviará las métricas a graphite y grafana las encuestará para analizarlas mediante las gráficas que construyamos a partir de esos datos.

Siguiendo la estructura que proponemos y teniendo lista la máquina donde montaremos graphite procederemos a su instalación. En primer lugar vamos a instalar la aplicación y el demonio graphite carbón.

apt-get install graphite-web graphite-carbon

Durante la instalación, se le preguntará si desea que Carbón retire los archivos de base de datos si alguna vez decide purgar la instalación. Elige “No” aquí para que no destruyas tus estadísticas.
Terminada la instalación tenemos que configurar la base de datos y crear nuestro superusuario de nuestra interfaz.

graphite-manage syncdb

Responder a algunas preguntas.

Would you like to create one now? (yes/no): yes
System check identified some issues:

WARNINGS:
?: (1_6.W001) Some project unittests may not execute as expected.
	HINT: Django 1.6 introduced a new default test runner. It looks like this project was generated using Django 1.5 or earlier. You should ensure your tests are all running & behaving as expected. See https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner for more information.
Username (leave blank to use 'root'): admin
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.

Configuración de Carbon
Vamos a decirle al demonio para que se inicie automáticamente. Editar el archivo /etc/default/graphite-carbon por defecto.

# Change to true, to enable carbon-cache on boot
CARBON_CACHE_ENABLED=true

Podemos permitir la rotación de registro cambiando el archivo /etc/carbon/carbon.conf.

# Enable daily log rotation. If disabled, a kill -HUP can be used after a manual rotate
ENABLE_LOGROTATION = True

Si tiene muchos de gráficos, puede aumentar el valor MAX_CREATES_PER_MINUTE valor que es 50 gráficos/minutos de forma predeterminada a 200:

MAX_CREATES_PER_MINUTE = 200

Vamos a adaptar el tiempo de retención métrica y el nivel de detalle con este archivo /etc/carbon/storage-schemas.conf. Entre los dos bloques por defecto, añadir este filtro.

[centreon]
pattern = ^centreon\.
retentions = 60s:1d, 20m:30d, 1h:1y

Tomaremos un primer valor de cada minuto durante un día, luego se agregarán los datos y vamos a seguir un determinado cada veinte minutos durante 30 días para terminar un hecho cada hora durante un año. Para la configuración de la agregación, hay que copiar el archivo de ejemplo.

cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf

Por último, hay que reiniciar el demonio de carbon para reflejar estos cambios.

service carbon-cache restart

Compruebe si el demonio escucha bien el puerto 2003, que servirá para la conexión desde Centreon.

netstat -an | grep 2003

Salida del comando:

tcp        0      0 0.0.0.0:2003            0.0.0.0:*               LISTEN

Como vemos esta escuchando por el puerto mencionado.
Configurando Graphite
Tenemos que ajustar Apache para Graphite. Instalamos los siguientes paquetes:

apt-get install apache2 libapache2-mod-wsgi

Ahora cambiamos la página de inicio por defecto para que apunte a la aplicación de Graphite.

a2dissite 000-default
cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available
a2ensite apache2-graphite
service apache2 reload

Vamos a cambiar el huso horario. Editar el archivo /etc/graphite/local_settings.py

TIME_ZONE = 'America/Havana'

Rectificamos los permisos a la base de datos de graphite para que la web no de error al mostrarse.

chmod 644 /var/lib/graphite/graphite.db

Inicia sesión para la interfaz de graphite con esta url http://192.168.1.77

Ahora lo siguiente sería configurar centreon para que envíe los datos de sus métricas a graphite. En la web de centreon vamos a Configuration/Pollers/Broker configuration y seleccionamos la salida (Output) seleccionamos graphite-storage-graphite

Y presionamos el botón agregar (Add). Rellenamos el formulario con los datos necesarios

Name:			graphite
DB host:		192.168.1.77
DB port:		2003
DB User:                admin
DB password:            password (el que introducimos anteriormente)
Maximum queries:	1000
Metric naming:		centreon.metrics.$HOST$.$SERVICE$.$METRIC$
Status naming:		centreon.metrics.status.$HOST$.$SERVICE$

Quedando de la siguiente forma:

Si todo esta bien podemos ver en la web de graphite dentro de unos instantes que ya está enviando los datos al mismo:

Instalación de Grafana
Preparamos el server de grafana con la ip 192.168.1.78. Como grafana tiene bloqueados los accesos desde nuestro país, buscaremos alternativas para descargar el paquete de instalación del mismo desde el sitio https://grafana.com las cuales no explicaré acá. Ya teniendo el paquete es sencilla su instalación.

dpkg -i grafana_4.3.1_amd64.deb

Ya podremos acceder a la interface del mismo mediante la url http://192.168.1.78:3000 con el usuario admin e igual contraseña.

Cuando ingresemos a la web de grafana como no tiene un Data Source definido y nos pedirá crearlo.

Le ponemos los datos necesarios:

Si la conexión es exitosa ya nos vamos a crear el primer dashboard.

Ya podemos crear nuestro primer gráfico:

Seguidamente vamos a editar las opciones del gráfico:

Seleccionamos la métrica que deseamos mostrar en la gráfica:

Elegiremos por ejemplo el propio servidor centreon y analizaremos la carga (Load):

Ahora como las métricas son valores que se obtienen de acuerdo al tiempo establecido en centreon serían valores aislados en el tiempo por eso hay que conectar estos valores en la gráfica:

Al pasar unos minutos ya veremos como va tomando forma nuestra primera gráfica:

Salvamos nuestro Dashboard:


Aquí tenemos nuestro primer Dashboard mostrando la carga de un server:

Según nuestras necesidades podemos ir agregando gráficas a nuestro Dashboard usando plugins de grafana. Aquí un ejemplo de los nuestros:

Usando el widget HTTP loader instalado previamente en centreon podemos obtener algo así:

Espero les sea de utilidad.

1 Trackback / Pingback

  1. ELK Stack (Elasticsearch, Logstash Kibana y Grafana) para el monitoreo de Logs de Zimbra. | | Sysadmins de cuba

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*