Ad Widget

Collapse

Control de Puertos caídos con usando SNMPTRAP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • efrain02
    Banned
    • Apr 2011
    • 81

    #1

    Control de Puertos caídos con usando SNMPTRAP

    Para poder saber si un puerto en específicamente se ha caído se debe utilizar snmptrap, para esto se necesita la instalación que se encuentra en el wiki del zabbix:

    Code:
    http://www.zabbix.com/wiki/howto/monitor/snmp/snmptraps
    El Siguiente Script es el que se va a utilizar, el script realiza lo siguiente:
    • Busca el nombre e id del host en la base de datos del zabbix mediante su ip.
    • Usando su id busca la descripción del ítem en el cual el ultimo valor sea el puerto que se ha caído
    • Se arma el nombre del key al que se va a agregar el trap de la siguiente forma key = “<ítem_con_ultimo_valor_igual_al_puerto>_linkDown ”
    • Si no se encuentra la ip se agreaga el snmptrap al host default que va a ser el snmptraps
    • Si se encuentra la ip pero no el ítem que se armo se guardara en el ítem default de snmptraps.

    Code:
    #!/bin/bash
    #
    
    ZABBIX_SERVER="localhost";
    ZABBIX_PORT="10051";
    ZABBIX_SENDER="/usr/local/bin/zabbix_sender";
    KEY2="_"
    KEY3="linkDown"
    KEY="snmptraps";
    HOST="snmptraps";
    # END OF CONFIGURATION
    
    read hostname
    read ip
    read uptime
    read oid
    read address
    read community
    read enterprise
    
    address=`echo $address|cut -f2 -d' '`
    enterprise=`echo $enterprise|cut -f2 -d' '`
    oid=`echo $oid|cut -f11 -d'.'`
    community=`echo $community|cut -f2 -d'"'`
    
    $zabbixuser=”MyUser”
    $zabbixpass=”MyPass”
    ZABBIXHOSTID=$(echo "select hostid, host from zabbix.hosts where ip=\"$hostname\" order by 'hostid' limit 1;" | mysql -N -u $zabbixuser –p$zabbixpass zabbix)
    
    ZABBIXID=$(echo $ZABBIXHOSTID | cut -d" " -f1)
    ZABBIXHOST=$(echo $ZABBIXHOSTID | cut -d" " -f2-)
    [[ "$ZABBIXHOST" ]] && {
    TRAPOID=$(echo $oid | cut -d: -f3)
    	ZABBIXITEM=$(echo "select description from zabbix.items where hostid=\"$ZABBIXID\" AND lastvalue=\"$community\" order by 'hostid' limit 1;" | mysql -N -u $zabbixuser –p$zabbixpass zabbix)
    
    	if [ "$ZABBIXITEM" ]; then
                KEY="$ZABBIXITEM$KEY2$KEY3"
                HOST=$ZABBIXHOST
            fi
    
    	ZABBIXITEM=$(echo "select key_ from zabbix.items where	key_=\"$TRAPOID\" and hostid=\"$ZABBIXID\";" | mysql -N -u $zabbixuser –p$zabbixpass zabbix)
    	if [ "$ZABBIXITEM" ]; then
    	    KEY=$ZABBIXITEM
    	fi
    	    HOST=$ZABBIXHOST
    }
    str="$hostname $address $community $enterprise $oid"
    
    $ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $HOST -k $KEY -o "$str"
    Una ves configurado el servidor para recibir traps se crean los ítems siguientes en el Template SNMPv2:

    Key default para snmptraps:

    Key para revizar si un puerto esta caído (se crea para cada ifDescr):

    Iniciador del key caído:
Working...