In questo post abbiamo visto come configurare una linux box affinchè possa ricevere le trap SNMP. Adesso vedremo come configurare il portocollo SNMP (sia polling che trap) su un router Cisco 2811.
Per prima cosa occorre accedere alla CLI del router in modalità ena e successivamente lanciare i seguenti comandi:
Router# conf t Router(config)# snmp-server host <IP> keypublic Router(config)# snmp-server community keypublic RO Router(config)# snmp-server community keyprivate RW
Mediante il primo comando stiamo definento l’host target delle trap SNMP, mentre con il secondo ed il terzo comando specifichiamo rispettivamente la community string in lettura e quella in scrittura.
Abilitazione delle trap
A questo punto possiamo definire le trap che dovranno essere inviate alla nostra linux box, ad esempio:
Router(config)# snmp-server enable traps snmp Router(config)# snmp-server enable traps vrrp Router(config)# snmp-server enable traps hsrp Router(config)# snmp-server enable traps tty Router(config)# snmp-server enable traps ethernet cfm cc Router(config)# snmp-server enable traps ethernet cfm crosscheck Router(config)# snmp-server enable traps memory Router(config)# snmp-server enable traps config-copy Router(config)# snmp-server enable traps config Router(config)# snmp-server enable traps resource-policy Router(config)# snmp-server enable traps pppoe Router(config)# snmp-server enable traps cpu Router(config)# snmp-server enable traps syslog Router(config)# snmp-server enable traps isakmp policy add Router(config)# snmp-server enable traps isakmp policy delete Router(config)# snmp-server enable traps isakmp tunnel start Router(config)# snmp-server enable traps isakmp tunnel stop Router(config)# snmp-server enable traps ipsec cryptomap add Router(config)# snmp-server enable traps ipsec cryptomap delete Router(config)# snmp-server enable traps ipsec cryptomap attach Router(config)# snmp-server enable traps ipsec cryptomap detach Router(config)# snmp-server enable traps ipsec tunnel start Router(config)# snmp-server enable traps ipsec tunnel stop Router(config)# snmp-server enable traps ipsec too-many-sas
Inutile dire che la tipologia di trap da abilitare dipende strettamente dalla configurazione del router, dalle feature abilitate (VPN IPsec), dal tipo di connessione WAN (PPP), ecc.
Polling SNMP tramite Nagios
Premesso che gli OID SNMP possono variare in base alla versione di IOS installata sul nostro router (a tal proposito vi consiglio di consultare questo sito), per prima cosa occorre definire i comandi specifici (all’interno dei file /etc/nagios/object/commands.cfg) che dovranno essere utilizzati dal nostro NMS per interrogare il dispositivo target.
Eccone un esempio:
# 'check_snmp_if_status' command definition define command{ command_name check_snmp_if_status command_line $USER1$/check_snmp -t 20 -H $HOSTADDRESS$ -C $ARG1$ -o $ARG2$ -r $ARG3$ }
# 'check_snmp_cpu_load' command definition define command{ command_name check_snmp_cpu_load command_line $USER1$/check_snmp -t 20 -H $HOSTADDRESS$ -C $ARG1$ -o $ARG2$ -w $ARG3$ -c $ARG4$ } # 'check_snmp_used_memory' command definition define command{ command_name check_snmp_used_memory command_line $USER1$/check_snmp -t 20 -H $HOSTADDRESS$ -C $ARG1$ -o $ARG2$ -w $ARG3$ -c $ARG4$ } # 'check_snmp_uptime' command definition define command{ command_name check_snmp_uptime command_line $USER1$/check_snmp -t 20 -H $HOSTADDRESS$ -C $ARG1$ -o $ARG2$ -w $ARG3$ -c $ARG4$ }
Infine, definiamo i servizi che si avvarranno dei suddetti comandi:
define service{ use local-service ; Name of service template to use host_name cisco service_description Uptime check_command check_snmp_uptime!keypublic!.1.3.6.1.6.3.10.2.1.3.0!@61:900!@0:60 }
define service{ use local-service ; Name of service template to use host_name cisco service_description Last Minute CPU Load check_command check_snmp_cpu_load!keypublic!.1.3.6.1.4.1.9.2.1.57.0!80!90 }
define service{ use local-service ; Name of service template to use host_name cisco service_description Last 5 Minutes CPU Load check_command check_snmp_cpu_load!keypublic!.1.3.6.1.4.1.9.2.1.58.0!80!90 }
define service{ use local-service ; Name of service template to use host_name cisco service_description Used Memory check_command check_snmp_used_memory!keypublic!1.3.6.1.4.1.9.9.48.1.1.1.5.1!100000000!120000000 }
define service{ use local-service ; Name of service template to use host_name cisco service_description Status Interface WAN check_command check_snmp_if_status!keypublic!.1.3.6.1.2.1.2.2.1.8.1!1 }
define service{ use local-service ; Name of service template to use host_name cisco service_description Status Interface LAN check_command check_snmp_if_status!keypublic!.1.3.6.1.2.1.2.2.1.8.2!1 }
A questo punto sarà sufficiente ricaricare la configurazione di Nagios mediante il comando:
[root@linuxbox ~]# service nagios reload
ed abbiamo finito.
Alla prossima.