
Monitoritzant un equip Linux amb Centreon, exemple amb una Raspberry Pi + Temperatura del seu CPU
Aquest post el vaig posar per totes les sol·licituds que he anat rebent de com monitoritzar un servidor Linux. Com òbviament depèn de la distribució, avui tenim un exemple amb una Debian i més en concret ho veurem sobre una Raspberry Pi que porta Raspbian. Monitoritzarem mètriques bàsiques com la CPU, Memòria RAM, Memòria Swap, discos, trànsit de xarxa, uptime… i al final veurem una cosa molt interessant!
Bo, comencem, el primer de tot serà instal·lar el dimoni SNMP:
[sourcecode]sudo apt-get update && sudo apt-get install snmpd snmp -y[/sourcecode]
Editarem el fitxer de configuració de SNMP i modifiquem les següents línies on primer habilitarem que SNMP escolti per totes les interfícies de la màquina i després establirem una comunitat SNMP i filtrarem quin rang d'IPs poden fer-li consultes (la màquina de Nagios, Centreon…), en aquest cas farem servir versió 2 de SNMP:
[sourcecode]sudo nano /etc/snmp/snmpd.conf
…
agentAddress 161
…
rocommunity public 192.168.1.0/24
…[/sourcecode]
Reiniciem finalment el servei perquè rellegeixi la configuració:
[sourcecode]sudo /etc/init.d/snmpd restart[/sourcecode]
I ja per fi ens podem anar a Centreon a crear el host d'aquest equip Linux per monitoritzar-lo, serà molt senzill, amb afegir-hi la plantilla base d'un servidor de Linux ja tindrem monitoritzat el bàsic. Així que en “Configuration” > “Hosts” > “Add…” i creem l'equip Linux com vulguem, li indiquem el seu nom, adreça IP, comunitat SNMP i a Templates afegirem almenys la d'OS-Linux-SNMP-custom o sense custom 🙂
Guardem el host,
I si no tenim les plantilles carregades, fica una ullada a aquest post de com instal·lar el Plugin Packs Manager i les plantilles que ens interessin.
Si gravem/recarreguem la configuració de Centreon com ja coneixem, podrem verificar que ja tenim el nostre host linux monitoritzat amb certs serveis que venen de forma predeterminada.
Ara modifica o afegeix tants Serveis com necessitis per assegurar que el servei que ofereix aquesta màquina va bé, com per exemple saber si un procés està actiu o no, fica una ullada a aquest post. I si no, atent, a continuació veiem un cas molt particular i súper kuki per seguir monitoritzant aquest Linux.
Monitoritzant l' output de qualsevol script
Vam veure un cas molt interessant, tinc un script a la meva màquina Linux, el vull executar i llegir el que escup… farem servir un cas practic molt interessant, vam monitoritzar la temperatura de la CPU de la Raspberry Pi amb Centreon. Primer necessitarem òbviament tenir un script a la Raspberry que llegeix aquesta temperatura i l'executarem quan Centreon li faci una consulta mitjançant un OID específic que farem servir de SNMP!
Crearem el següent script a la nostra Raspberry Pi:
[sourcecode]sudo vim /usr/local/bin/snmp-cpu-temp[/sourcecode]
I enganxem el següent codi:
[sourcecode]#!/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[/sourcecode]
Ho fem executable:
[sourcecode]sudo chmod +x /usr/local/bin/snmp-cpu-temp[/sourcecode]
Si volem provar-ho des de la Raspberry Pi:
[sourcecode]/usr/local/bin/snmp-cpu-temp -g[/sourcecode]
Bé, el que farem ara serà editar el fitxer /etc/snmp/snmpd.conf', i sota la secció '”Pass-through” MIB extension command’ afegim el següent:
[sourcecode]pass .1.3.6.1.2.1.25.1.8 /bin/sh /usr/local/bin/snmp-cpu-temp[/sourcecode]
Reiniciem el servei SNMP perquè carregui la configuració nova amb:
[sourcecode]sudo /etc/init.d/snmpd restart[/sourcecode]
I ho provem en local x exemple amb:
[sourcecode]/usr/bin/snmpget -v 2c localhost -c public .1.3.6.1.2.1.25.1.8[/sourcecode]
A Centreon modifiquem si necessitem el Comando 'check_snmp' des de “Configuration” > “Commands”:
- Command Name: check_snmp
- Command type: Check
- Command Line:
[sourcecode]$USER1$/check_snmp -H $HOSTADDRESS$ -C $USER 2$ -o $ARG 1$ -w $ARG 2$ -c $ARG 3$ -l $ARG 4$[/sourcecode]
Posem sobre “Descriu argumments” i indiquem el que significa cada Argument per quan creiem el servei sàpiga què posar en cada camp. L'ARG1 seria l'OID, ARG2 el valor Warning, ARG3 el Critical i l'ARG4 el text a mostrar com a valor de la mètrica a la gràfica.
Gravem el Comando,
I creem el Servei des de “Configuration” > “Services” > (clonem-ne un d'existent), l'editem i modifiquem:
- Description: Temperatura CPU, el nom del Servei vagi.
- Linked with Hosts: Associem el Servei que estem creant als següents equips que vulguem checkejar la temp i hem fet el procés anterior (crear scripts…).
- Template: Seleccionem la plantilla de la qual heretarem la configuració que ens interessi i no volem posar manualment, com solen ser les notificacions… en el meu cas ús generic-active-service-custom.
- Check Command: Seleccionem del llistat el Comandament modificat en el pas anterior, i complimentem els valors dels Arguments:
- OID: .1.3.6.1.2.1.25.1.8 Que és l'OID que fem servir per executar l'script que llegeix la temperatura de la CPU.
- Warning: 40. A partir de 40 graus que ens canti un Warning.
- Critical: 80. A partir de 80 graus que ens marqui la temperatura com a Critical.
- Text a mostrar: El que s'ha dit, el text que veurem en la gràfica, la metrica, vagi.
Gravem el Servei,
I llest! si gravem/recàrreguem la configuració de Centreon, podrem veure la temperatura de les nostres Raspberry Pi d'una ullada! Aquest document li el dedico a tots els que m'heu demanat saber com monitoritzar un servidor o equip linux mitjançant SNMP, així que super fàcil, ja ho heu vist, està xupat!