Instalar y configurar MRTG en Centos 8

Seguimos hablando de herramientas para controlar nuestro servidor GNU/Linux. En este caso os hablo de MRTG. Herramienta encargada de monitorear la carga de tráfico en los enlaces de red. MRTG genera páginas HTML que contienen imágenes PNG que representan una imagen visual en vivo de dicho tráfico.

Como viene siendo habitual en los últimos meses vamos a utilizar un VPS en mi proveedor de confianza Clouding.io. En este caso utilizando una distribución con Centos 8. De hecho será la misma con la que elaboré estas entradas:

Instalar Nagios 4 en RHEL 8 y Centos 8

Instalar y configurar NDOUtils en Centos 8

Como veremos más adelante, la instalación de esta herramienta no es complicada. Además también instalaremos SNMP, que al igual en las diferentes entradas que vimos sobre Cacti, nos permitirá recoger información de los elementos de la red.

Instalar y configurar MRTG en Centos 8

Empezamos instalando los paquetes de MRTG y SNMP, que vienen en los repositorios principales de esta distribución.

sudo dnf -y install net-snmp net-snmp-utils mrtg

Debemos configurar las aplicaciones, modificando sus archivos de configuración. Empezando por el de SNMP, que se encuentra en la ruta «/etc/snmp/snmpd.conf». En mi caso:

#La línea 41 la comentamos
#com2sec notConfigUser  default       public
 
# línea 74,75: Descomentar y cambiar
# cambiar la red local para la sección "mynetwork"
# cambiar el nombre de la comunidad excepto público o privado
com2sec local localhost BitsAndLinux
#com2sec mynetwork 192.168.1.0/24 BitsAndLinux #Para un red local
 
# línea 78,79: descomentar y cambiar
group MyRWGroup     v2c    local
group MyROGroup     v2c    mynetwork 
 
# line 85: descomentar
view all    included  .1           80
 
# line 93,94: descomentar y cambiar
access MyROGroup ""     v2c   noauth   exact   all   none   none
access MyRWGroup ""     v2c   noauth   exact   all   all      all

Guardamos y salimos. Encendemos el servicio y lo añadimos al arranque.

sudo systemctl start snmpd
sudo systemctl enable snmpd

Comprobamos que efectivamente funciona correctamente:

SNMPv2-MIB::sysDescr.0 = STRING: Linux servnagios.bitsandlinux.com 4.18.0-193.6.3.el8_2.x86_64 #1 SMP Wed Jun 2 11:09:32 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8365) 0:01:23.65
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: servnagios.bitsandlinux.com
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
(....)

Configurar MRTG

Antes de empezar a editar el fichero de configuración, ejecutamos este comando:

cfgmaker --snmp-options=:::::2 --ifref=descr --ifdesc=descr BitsAndLinux@localhost > /etc/mrtg/mrtg.cfg

Con este comando generamos el fichero de configuración «/etc/mrtg/mrtg.cfg«. En cualquier caso hay algunas cosas que debemos modificar:

 # línea 8: Añadimos
WorkDir: /var/www/mrtg
 
# línea 16: Descomentamos
Options[_]: growright, bits
 
#  línea 75: descomentamos todo hasta el final y adaptamos.
Target[localhost_eth0]: \eth0:BitsAndLinux@localhost:::::2
noHC[localhost_eth0]: yes
SetEnv[localhost_eth0]: MRTG_INT_IP="185.254.206.223"
" MRTG_INT_DESCR="eth0"
MaxBytes[localhost_eth0]: 125000000
Title[localhost_eth0]: eth0 -- servnagios.bitsandlinnux.com
PageTop[localhost_eth0]: <h1>eth0 -- servnagios.bitsandlinux.com</h1
(...)

OJO aquí, no puede queda espacio en blanco justo delante de las líneas descomentadas.

Ejecutamos MRTG para que nos muestre posibles errores en el fichero

for (( i=1 ; i <= 3 ; i++ )); do env LANG=C mrtg /etc/mrtg/mrtg.cfg; done

Creamos el fichero de Index.html

indexmaker --columns=1 /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html

Si todo ha ido bien hasta aquí, ya podemos crear el fichero de cron

vi /etc/cron.d/mrtg

Con el contenido:

*/5 * * * * root LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok

Guardamos y salimos

Crearmos el fichero de configuración para APACHE

vi /etc/httpd/conf.d/mrtg.conf

Con el contenido:

Alias /mrtg /var/www/mrtg
<Location /mrtg>
    Require local
    # Require ip 10.1.2.3
    # Require host example.org
</Location>

Podemos adaptar el fichero a nuestras necesidades.

Reiniciamos el servicio web.

sudo systemctl restart httpd

Y ya podemos ver el resultado, en mi caso en, http://servnagios.bitsandlinux.com/mrtg

Vista de intefaz de MRTG

Si marcamos sobre la gráfica nos ofrecerá una información ampliada:

Información ampliada en MRTG

Y esto es todo, espero que esta entrada os puede servir en algún momento.

Fuentes consultadas

Server-world.info – Install MRTG

Stackoverflow – MRTG: ERROR: did not find any matching data in cfg file