Monitorizando servidores Linux con Cacti

Siguiendo con la serie de entradas que hablan de Cacti, en este post veremos cómo podemos monitorizar un servidor Linux remoto, mediante Cacti con ayuda de snmp. Para ello, nos basaremos en la discusión http://forums.cacti.net/about11634.html que además de Linux, nos permitirá monitorizar servidores Solaris y HPUX.

  1. Lo primero será descargarnos el archivo cacti_templates-1.3.tar.gz con las plantillas. Acabado, lo descomprimiremos:
    tar -xzvf cacti-templates-1.3.tar.gz
  2. En nuestra consola de Cacti como administrador, hacer click en la opción de menú: Import Templates. Luego, hacer click en el botón examinar y buscar en el directorio local donde descomprimimos el fichero cacti-templates-1.3.tar.gz, para seleccionar el archivo cacti_templates/cacti_host_template__linux_host_ucdnetsnmp-1.3.xml y luego pulsar el botón Save.
  3. En la pantalla Import Results, pulsar el botón Save del final de la ventana.
  4. Ahora, del post http://forums.cacti.net/post-156897.html descargaremos el archivo tcp_stats.zip que nos permitirá monitorizar el estado de las conexiones TCP/IP del equipo. Descomprimir el archivo ejecutando:
    unzip tcp_stats.zip 
  5. De nuevo, ir a la consola de Cacti como administrador y en la opción Import Templates, importar la plantilla: tcp_stats/cacti_graph_template_snmp_-_zing_tcp_stats.xml.
  6. Ahora, nos conectaremos como root al equipo que queramos monitorizar y tendremos que instalar el servicio SNMP.
    • En Debian, ejecutaremos:
      apt-get install snmpd libsnmp10 snmp
      Luego modificaremos el fichero /etc/snmp/snmpd.conf para aplicar las siguientes diferencias:
      61,62c61,62
      < com2sec paranoid default public
      < #com2sec readonly default public
      ---
      > #com2sec paranoid default public
      > com2sec readonly default public
      109,110c109,113
      < syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
      < syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
      ---
      > ## syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
      > ## syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
      > syslocation CASA
      > syscontact Ignacio <mi_email@gmail.com>
      >
      144c147
      < #proc mountd
      ---
      > proc mountd
      150c153
      < #proc sendmail 10 1
      ---
      > proc sendmail 10 1
      259c262
      < #disk / 10000
      ---
      > disk / 10000
      288c291
      < #load 12 14 14
      ---
      > load 20 14 14
      Además, editaremos el fichero /etc/default/snmpd, y cambiaremos la 127.0.0.1 por 0.0.0.0 en las opciones SNMPDOPTS
    • En RHEL5, ejecutaremos:
      yum install net-snmp net-snmp-utils 
      Luego modificaremos el fichero /etc/snmp/snmpd.conf para aplicar las siguientes diferencias:
      41c41,43
      < com2sec notConfigUser default public
      ---
      > com2sec local localhost public
      > com2sec mynetwork 192.168.0.0/16 public
      >
      47,48c49,55
      < group notConfigGroup v1 notConfigUser
      < group notConfigGroup v2c notConfigUser
      ---
      > group MyRWGroup v1 local
      > group MyRWGroup v2c local
      > group MyRWGroup usm local
      > group MyROGroup v1 mynetwork
      > group MyROGroup v2c mynetwork
      > group MyROGroup usm mynetwork
      >
      55,56c62
      < view systemview included .1.3.6.1.2.1.1
      < view systemview included .1.3.6.1.2.1.25.1.1
      ---
      > view all included .1 80
      62c68,70
      < access notConfigGroup "" any noauth exact systemview none none
      ---
      > access MyROGroup "" any noauth exact all none none
      > access MyRWGroup "" any noauth exact all all none
      >
      162,163c170,171
      < syslocation Unknown (edit /etc/snmp/snmpd.conf)
      < syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
      ---
      > syslocation CASA
      > syscontact Ignacio <mi_email@gmail.com>
      197c205
      < #proc mountd
      ---
      > proc mountd
      203c211
      < #proc sendmail 10 1
      ---
      > proc sendmail 10 1
      313c321
      < #disk / 10000
      ---
      > disk / 10000
      342c350
      < #load 12 14 14
      ---
      > load 20 14 14

De los paquetes que descargamos de internet tendremos que copiar al servidor linux que queramos monitorizar los scripts, y cambiarle los permisos:
scp tcp_stats/netstat.py  root@SERVIDOR:/usr/local/bin/
scp tcp_stats/netstat root@SERVIDOR:/etc/cron.d/

ssh root@SERVIDOR chmod 755 /usr/local/bin/netstat.py

Una vez hecho, editaremos el fichero /etc/snmp/snmpd.conf del servidor que queremos monitorizar y añadiremos el siguiente bloque al final del archivo:
# Monitorizar estado de las conexiones TCP/IP
pass .1.3.6.1.3.2 /usr/bin/python /usr/local/bin/netstat.py

Cuando terminemos, reiniciaremos el servicio snmpd: /etc/init.d/snmpd restart. Luego iremos a la consola de Cacti y crearemos una plantilla para servidores Linux, siguiendo los siguientes pasos:
  1. En la consola como Administrador, seleccionar en el panel izquierdo, Host Templates. Cuando refresque la ventana derecha, hacer click en Add.
  2. Cambiará el marco derecho. Escribir en el campo Name, el nombre que queramos tenga la plantilla, por ejemplo PLANTILLA_Servidor_Linux, y luego hacer click en el botón Create.
  3. Al hacerlo, se actualizará la pantalla y nos aparecerán dos nuevas secciones: Dentro de la sección Associated Graph Templates, en Add Graph Template seleccionaremos la opción SNMP - Zing TCP Stats y luego pulsaremos el botón Add. Repetiremos esto para las opciones: ucd 00 CPU Linux, ucd 01 Load Average, ucd 11 Swap, ucd 12 Detailled Memory y ucd 20 Processes .
  4. Luego en la sección Associated Data Queries, en el cuadro de selección Add Data Query, seleccionar ucd 00 Lan y luego pulsar el botón Add.
  5. Cuando hayamos terminado, pulsar el botón Save.

Ahora, añadiremos propiamente el servidor, iendo en el menú de la izquierda en la pestaña Console a Devices. Luego, en la parte derecha hacer click en Add. Rellenaremos los siguientes campos:
  • En Description, pondremos el nombre del servidor.
  • En Hostname, pondremos la dirección IP del servidor.
  • Y en Host Template, buscaremos y seleccionaremos la plantilla que acabamos de crear: PLANTILLA_Servidor_Linux.

Cuando hayamos terminado, pulsar el botón Create. Si en ese momento nos aparece un mensaje en rojo, indicándonos: Error: Passwords do not match, please retype., será porque tendremos en SNMP Version, la Versión3, el campo SNMP Password (v3) relleno. Borrar este campo y volver a crear el host. Cuando lo hayamos conseguido, nos cambiará la pantalla y tendremos que pulsar en Create Graphs for this Host.
Marcaremos todas las gráficas. Para la sección LAN, cambiaremos Select a graph type, y elegiremos In/Out Bytes. Marcaremos las interfaces de red de las que queremos tener gráficas, y pulsaremos el botón Create.

Por último, sólo nos quedará ubicar el nuevo servidor en el árbol. Para ello, vaya a Console->Graph Trees, y cuando refresque la parte derecha, haga click en el árbol donde quiera añadir el dispositivo. Si quiere añadir una rama al árbol (Equipos Linux, por ejemplo) pulse en Add. Escriba el nombre de Title y pulse Create. De nuevo en la ventana del árbol, pulse en (Add) junto a la rama recién creada. Luego en Tree Item Type, seleccione Host, y en el Host busque el equipo que acaba de crear. Cuando lo haya hecho, pulse el botón Create, y espere unos minutos a que se recopilen los datos, y empiece a dibujar gráficas.
La foto la he sacado del album de scatterkeir en flickr

No hay comentarios: