A menudo tenemos el agente SNMP configurado en nuestro servidor Linux para escuchar peticiones SNMP por el puerto UDP/161. El agente responderá a las consultas habituales como carga del equipo, uso de la red, uso de memoria, software instalado, etc. El problema aparece cuando tenemos algún servicio instalado que también es capaz de escuchar peticiones SNMP, como el caso de Oracle o Squid: Para seguir teniendo la monitorización del sistema y sacar partido a la monitorización del servicio, tendremos que configurar los agentes en puertos UDP diferentes, y configurar nuestra herramienta de monitorización para que realice consultas a los diferentes puertos.
Otra posibilidad es configurar un OID de proxy en nuestro servicio SNMPD, editando el fichero para /etc/snmp/snmpd.conf, añadiendo las siguientes líneas:
# Proxy hacia SQUID
# proxy -p 1161 -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.3495.1.3.2
proxy -v 1 -c public localhost:1161 .1.3.6.1.4.1.3495.1
y configurar el agente SNMP del servicio, para que permita las consultas desde nuestra red y desde el propio localhost. Para el caso de Squid, añadiríamos al fichero /etc/squid/squid.conf las siguientes líneas:
#------------------------------------------------
# MONITORIZACION SNMP DEL SERVIDOR
#
snmp_port 1161
acl Snmppublic snmp_community public
acl Adminhost src 192.168.0.0/16
acl thishost dst 127.0.0.0/8
acl localhost src 127.0.0.0/8
snmp_access allow Adminhost Snmppublic
snmp_access allow thishost Snmppublic
snmp_access allow localhost Snmppublic
snmp_access deny all
Reiniciar los servicios involucrados:
squid -k reconfigure
/etc/init.d/snmpd restart
y comprobar...
- Directamente consultando el agente...
snmpwalk -v 1 -c public 127.0.0.1:1161 .1.3.6.1.4.1.3495.1.3.2
- ... y a través del proxy...
snmpwalk -v 1 -c public 127.0.0.1 .1.3.6.1.4.1.3495.1.3.2
Con esta configuración no tendremos que contemplar ninguna excepción en nuestro software de monitorización, y podremos monitorizar los distintos servicios usando el mismo puerto.