Configurar SNMP Traps

From Zabbix-ES
Jump to navigation Jump to search
Nota: Existen 2 tipos de scripts para monitorizar SNMP el Zabbix Reciver y el SNMPTT. Nosotros utilizaremos el propio de Zabbix.

Links

Pre-requisitos Centos 7

# yum install -y net-snmp-utils net-snmp-perl net-snmp

Pre-requisitos Centos 8

# rpm -qa| grep snmp
net-snmp-5.8-14.el8_2.1.x86_64
net-snmp-utils-5.8-14.el8_2.1.x86_64
net-snmp-libs-5.8-14.el8_2.1.x86_64
net-snmp-agent-libs-5.8-14.el8_2.1.x86_64
pcp-pmda-snmp-5.0.2-5.el8.x86_64
# yum remove net-snmp net-snmp-libs net-snmp-agent-libs net-snmp-utils
# wget http://repo.okay.com.mx/centos/8/x86_64/release//net-snmp-perl-5.8-7.el8.2.x86_64.rpm
# wget http://repo.okay.com.mx/centos/8/x86_64/release//net-snmp-5.8-7.el8.2.x86_64.rpm
# wget http://repo.okay.com.mx/centos/8/x86_64/release//net-snmp-utils-5.8-7.el8.2.x86_64.rpm
# wget http://repo.okay.com.mx/centos/8/x86_64/release//net-snmp-agent-libs-5.8-7.el8.2.x86_64.rpm
# wget http://repo.okay.com.mx/centos/8/x86_64/release//net-snmp-libs-5.8-7.el8.2.x86_64.rpm
# yum install net-snmp-perl-5.8-7.el8.2.x86_64.rpm net-snmp-5.8-7.el8.2.x86_64.rpm net-snmp-utils-5.8-7.el8.2.x86_64.rpm net-snmp-libs-5.8-7.el8.2.x86_64.rpm net-snmp-agent-libs-5.8-7.el8.2.x86_64.rpm

Activar SNMP Trapper en el server

# vi /etc/zabbix/zabbix_server.conf
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
StartSNMPTrapper=1
# mkdir -p /var/log/snmptrap
# chmod 750 /var/log/snmptrap
# chown zabbix:zabbix /var/log/snmptrap

Configuración SNMP TRAP

# vi /etc/snmp/snmptrapd.conf
authCommunity execute public
authCommunity execute publica
perl do "/usr/bin/zabbix_trap_reciver.pl"

Configurar el script de Reciver

# wget -O /usr/bin/zabbix_trap_reciver.pl https://git.zabbix.com/projects/ZBX/repos/zabbix/raw/misc/snmptrap/zabbix_trap_receiver.pl   # Alternativa: https://raw.githubusercontent.com/prelegalwonder/zabbix/master/misc/snmptrap/zabbix_trap_receiver.pl
# chmod 755 /usr/bin/zabbix_trap_reciver.pl

# vi /usr/bin/zabbix_trap_reciver.pl
$SNMPTrapperFile = '/var/log/snmptrap/snmptrap.log';

# systemctl restart zabbix-server

Activamos el SNMPD

# systemctl enable snmptrapd
# systemctl start snmptrapd

Rotacion del log

# vi /etc/logrotate.d/zabbix_traps
/var/log/snmptrap/snmptrap.log {
    weekly
    size 10M
    compress
    compresscmd /usr/bin/bzip2
    compressoptions -9
    notifempty
    dateext
    dateformat -%Y%m%d
    missingok
    maxage 365
    rotate 10
}

Forzamos una rotacion para probar la configuracion

# logrotate -v -f /etc/logrotate.d/zabbix_traps 
Nota: Con esto tendremos 10 copias comprimidas del fichero "snmptrap.log"

Configuración en Zabbix Server

Creación del Template de Fallback

Nota: snmptrap.fallback <- Todo lo que no machea con la expresión regular anterior va a parar fallback.
IMPORTANTE: Administration -> General -> Other -> Log unmatched SNMP traps: Para saber que traps estoy recibiendo pero no monitorizando.
Template Name: Template SNMP trap fallback
Groups       : Templates
Creación del Template

Creación del Item de fallback

Name               : SNMP trap fallback
Type               : SNMP trap
Key                : snmptrap.fallback
Type of information: Log
New Application    : SNMP fallback
Creación del Item

Creación del Trigger de fallback

Name               : {HOST.NAME} - Unmatched SNMP trap received
Severity           : Information
Expression         : {Template SNMP trap fallback:snmptrap.fallback.nodata(300)}=0
Allow manual close : CHECK
Description        : Genera alerta si entra un TRAP no controlado.
Creación del Trigger
Nota: Esta alerta saltara durante 5 minutos.

Creación del Template de SNMP Traps

Nota: En este templete generaremos alertas para traps conocidos.
Template Name: Template SNMP traps
Groups       : Templates
Creación del Template
- Lincamos el Template al template de fallback
Link

Creación del Item de

Name               : SNMP trap enterprises.8074.2.3.2.3
Type               : SNMP trap
Key                : snmptrap["SNMPv2-SMI::enterprises.8074.2.3.2.3"]
Type of information: Text
New Application    : SNMP::Trap
Creación del Item

Creación del Trigger del Trap Definido

Name               : {HOST.NAME} - SNMP Trap enterprises.8074.2.3.2.3
Severity           : Warning
Expression         : {Template SNMP traps:snmptrap["SNMPv2-SMI::enterprises.8074.2.3.2.3"].nodata(60)}=0
Allow manual close : CHECK
Description        : Genera alerta si entra un TRAP predefinido.
Creación del Trigger
Nota: Esta alerta saltara durante 1 minuto.


Configuración de Zabbix Server para la recepción de los TRAPs

- Vamos al HOST Zabbix Server y creamos la Interfaz de SNMP en localhost
SNMP Interface
- Asignamos el template de "Template SNMP trap" al Zabbix Server
Link Template
snmptrap 
  Key: [<EXPRESION REGULAR>]

Pruebas - Enviar un TRAP

# /usr/bin/snmptrap -v 1 -c public 10.0.100.100 '.1.3.6.1.6.3.1.1.5.4' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.4 s "eth0"
--- TRAP No Conocido
# cat /tmp/zabbix_traps.tmp
18:03:36 2019/03/25 ZBXTRAP 127.0.0.1
PDU INFO:
  notificationtype               TRAP
  version                        0
  receivedfrom                   UDP: [127.0.0.1]:19374->[127.0.0.1]:162
  errorstatus                    0
  messageid                      0
  community                      public
  transactionid                  1
  errorindex                     0
  requestid                      0
VARBINDS:
  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (55) 0:00:00.55
  SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: IF-MIB::linkUp.0.33
  IF-MIB::linkUp                 type=4  value=STRING: "eth0"
  SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4  value=STRING: "public"
  SNMPv2-MIB::snmpTrapEnterprise.0 type=6  value=OID: IF-MIB::linkUp
--- TRAP Conocido
# /usr/bin/snmptrap -v 1 -c public 10.0.100.100 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' enterprises.8074.2.3.2.3 s "teststring000"
# cat /tmp/zabbix_traps.tmp
11:15:03 2019/03/26 ZBXTRAP 127.0.0.1
PDU INFO:
  notificationtype               TRAP
  version                        0
  receivedfrom                   UDP: [127.0.0.1]:35683->[127.0.0.1]:162
  errorstatus                    0
  messageid                      0
  community                      public
  transactionid                  6
  errorindex                     0
  requestid                      0
VARBINDS:
  DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (55) 0:00:00.55
  SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: IF-MIB::linkDown.0.33
  IF-MIB::linkDown               type=4  value=STRING: "teststring000"
  SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 type=4  value=STRING: "public"
  SNMPv2-MIB::snmpTrapEnterprise.0 type=6  value=OID: IF-MIB::linkDown
Problema detectado