Monitorizando un equipo Linux con Centreon, ejemplo con una Raspberry Pi + Temperatura de su CPU

Este post lo voy a poner por todas las solicitudes que he ido recibiendo de cómo monitorizar un servidor Linux. Como obviamente depende de la distribución, hoy tenemos un ejemplo con una Debian y más en concreto lo veremos sobre una Raspberry Pi que lleva Raspbian. Monitorizaremos métricas básicas como la CPU, Memoria RAM, Memoria Swap, discos, tráfico de red, uptime… y al final veremos algo muy interesante!

 

Bueno, empezamos, lo primero de todo será instalar el demonio SNMP:

sudo apt-get update && sudo apt-get install snmpd snmp -y

 

Editaremos el fichero de configuración de SNMP y modificamos las siguientes líneas donde primero habilitaremos que SNMP escuche por todas las interfaces de la máquina y después estableceremos una comunidad SNMP y filtraremos qué rango de IPs pueden hacerle consultas (la máquina de Nagios, Centreon…), en este caso usaremos versión 2 de SNMP:

sudo nano /etc/snmp/snmpd.conf

...

agentAddress 161

...

rocommunity public 192.168.1.0/24

...

 

Reiniciamos finalmente el servicio para que relea la configuración:

sudo /etc/init.d/snmpd restart

 

Y ya por fin nos podemos ir a Centreon a crear el host de este equipo Linux para monitorizarlo, será muy sencillo, con añadirle la plantilla base de un servidor de Linux ya tendremos monitorizado lo básico. Así que en “Configuration” > “Hosts” > “Add…” y creamos el equipo Linux como queramos, le indicamos su nombre, dirección IP, comunidad SNMP y en Templates añadiremos al menos la de OS-Linux-SNMP-custom o sin custom 🙂

Guardamos el host,

Y si no tenemos las plantillas cargadas, echa un vistazo a este post de cómo instalar el Plugin Packs Manager y las plantillas que nos interesen.

 

 

Si grabamos/recargamos la configuración de Centreon como ya conocemos, podremos verificar que ya tenemos nuestro host linux monitorizado con ciertos servicios que vienen de forma predeterminada.

 

Ahora modifica o añade tantos Servicios como necesites para asegurar que el servicio que ofrece dicha máquina va bien, como por ejemplo saber si un proceso está activo o no, echa un vistazo a este post. Y si no, atento, a continuación vemos un caso muy particular y súper kuki para seguir monitorizando este Linux.

 

 

Monitorizando el output de cualquier script

Vamos a ver un caso muy interesante, tengo un script en mi máquina Linux, lo quiero ejecutar y leer lo que escupe… usaremos un caso practico muy interesante, vamos a monitorizar la temperatura de la CPU de la Raspberry Pi con Centreon. Primero necesitaremos obviamente tener un script en la Raspberry que lee dicha temperatura y lo ejecutaremos cuando Centreon le haga una consulta mediante un OID específico que usaremos de SNMP!

 

Crearemos el siguiente script en nuestra Raspberry Pi:

sudo vim /usr/local/bin/snmp-cpu-temp

Y pegamos el siguiente código:

#!/bin/bash
if [ "$1" = "-g" ]
then
echo .1.3.6.1.2.1.25.1.8
echo gauge
echo $((`cat /sys/class/thermal/thermal_zone0/temp|cut -c1-2`)).$((`cat /sys/class/thermal/thermal_zone0/temp|cut -c3-5`))
fi
exit 0

 

Lo hacemos ejecutable:

sudo chmod +x /usr/local/bin/snmp-cpu-temp

 

Si queremos probarlo desde la Raspberry Pi ejecutamos:

/usr/local/bin/snmp-cpu-temp -g

 

Bien, lo que haremos ahora será editar el fichero /etc/snmp/snmpd.conf’, y debajo de la sección ‘”Pass-through” MIB extension command’ añadimos lo siguiente:

pass .1.3.6.1.2.1.25.1.8 /bin/sh /usr/local/bin/snmp-cpu-temp

 

Reiniciamos el servicio SNMP para que cargue la configuración nueva con:

sudo /etc/init.d/snmpd restart

 

Y lo probamos en local x ejemplo con:

/usr/bin/snmpget -v 2c localhost -c public .1.3.6.1.2.1.25.1.8

 

En Centreon modificamos si necesitamos el Comando ‘check_snmp’ desde “Configuration” > “Commands”:

  • Command Name: check_snmp
  • Command type: Check
  • Command Line:
    $USER1$/check_snmp -H $HOSTADDRESS$ -C $USER2$ -o $ARG1$ -w $ARG2$ -c $ARG3$ -l $ARG4$

 

Pulsamos sobre “Describe argumments” e indicamos lo que significa cada Argumento para cuando creemos el servicio sepamos qué meter en cada campo. El ARG1 sería el OID, ARG2 el valor Warning, ARG3 el Critical y el ARG4 el texto a mostrar como valor de la métrica en la gráica.

 

Grabamos el Comando,

 

Y creamos el Servicio desde “Configuration” > “Services” > (clonamos uno existente), lo editamos y modificamos:

  • Description: Temperatura CPU, el nombre del Servicio vaya.
  • Linked with Hosts: Asociamos el Servicio que estamos creando a los siguientes equipos que queramos checkear la temp y hemos hecho el proceso anterior (crear scripts…).
  • Template: Seleccionamos la plantilla de la que heredaremos la configuración que nos interese y no queramos meter manualmente, como suelen ser las notificaciones… en mi caso uso generic-active-service-custom.
  • Check Command: Seleccionamos del listado el Comando modificado en el paso anterior, y cumplimentamos los valores de los Argumentos:
    • OID: .1.3.6.1.2.1.25.1.8 Que es el OID que usamos para ejecutar el script que lee la temperatura de la CPU.
    • Warning: 40. A partir de 40 grados que nos cante un Warning.
    • Critical: 80. A partir de 80 grados que nos marque la temperatura como Critical.
    • Texto a mostrar: Lo dicho, sera el texto que veremos en la gráfica, la metrica, vaya.

 

Grabamos el Servicio,

 

Y listo! si grabamos/recargamos la configuración de Centreon, podremos ver la temperatura de nuestras Raspberry Pi de un vistazo! Este documento se lo dedico a todos los que me habéis pedido saber cómo monitorizar un servidor o equipo linux mediante SNMP, así que super fácil, ya lo habéis visto, está chupao!

 

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!