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:
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.
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:
Code:
http://www.zabbix.com/wiki/howto/monitor/snmp/snmptraps
• 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"
Key default para snmptraps:

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

Iniciador del key caído:
