I have 2 suggestions and / or questions for Zabbix....
1) When adding a Graph Parameter, you must choose from a list of ALL items. This list can get absolutely huge. Has there been any discussion about other ways to present this data? Possibly do something with dual lookup boxes? First choose the host, and then display the valid items from that host?
If we add all of our equipment (with the different Zabbix agents per host, as well as up to 1000 items per network switch) that dropdown box will be a mess.
2) It seems that Zabbix is geared towards servers, although it does have SNMP capabilities. When working with the Cisco chassis', the number of ports/interfaces varies greatly. I don't think templates will really cut it. Some form of automatic detection of interfaces will be required. The "cfgmaker" from MRTG does something like this. I am going to take a look at it and see if it can be adapted to insert the gathered information right into the database and possibly automatically create the graphs.
I think the basics are there, it just needs some tweaking for network management use. Are there any other network admins out there using this tool? How have you made this work for you?
Thanks!
joe
1) When adding a Graph Parameter, you must choose from a list of ALL items. This list can get absolutely huge. Has there been any discussion about other ways to present this data? Possibly do something with dual lookup boxes? First choose the host, and then display the valid items from that host? Usability of PHP front-end for medium sized environments (thousands of hosts/metrics) is one of top priorities for 1.1. This will be implemented.
2) It seems that Zabbix is geared towards servers, although it does have SNMP capabilities. When working with the Cisco chassis', the number of ports/interfaces varies greatly. I don't think templates will really cut it. Some form of automatic detection of interfaces will be required. The "cfgmaker" from MRTG does something like this. I am going to take a look at it and see if it can be adapted to insert the gathered information right into the database and possibly automatically create the graphs. Network discovery functions will not be part of 1.1. However I keep this in mind, so hopefully it will be done in 1.2 or 2.0, who knows.
Thanks for your suggestions!
I'm glad to hear about the enhancements coming in 1.1!
I actually have a hacked-up MRTG "cfgmaker" script that now traverses the ifIndexes and adds the appropriate information to the Zabbix 1.1 database. It's a nasty hack, but it works. It creates 2 items for each ifIndex, the InOctets and OutOctets OIDs, and then creates graphs for each ifIndex. I'm still working on a process to create a screen per device but only for ports/interfaces which are passing some traffic (in either direction).
joe
Hi,
I use my script to automate cisco SNMP. It is not good code but it works :) Now this script does not support to add triggers. But I see my port speeds and errors.
Cut here:
-----------------------
#!/bin/bash
export COMMUNITY="$1"
export HOSTID="$2"
export HOSTIP="$3"
if [ -z "$COMMUNITY" ] || [ -z "$HOSTID" ] || [ -z "$HOSTIP" ] ; then
echo -e "\nScript to add snmp monitoring parameters from cisco devices."
echo "Create items for monitoring devices. You must know zabbix host id and ip."
echo "Next you must have snmpwalk installed."
echo "interval means update interval in seconds and hostory means how long in days to stay in history"
echo "Inserting to db is your way ;) I am not responsible for this :)"
echo "Common way to do it is $0 | mysql ... zabbix or you can put output to file and then import into zabbix db"
# echo "You can write triggers to put inside too (eg. 'thri_kbps .last(0)>10'"
echo -e "$0 community hostid hostip [interval] [history]\n"
exit 1
fi
if [ -n "$4" ]; then
interval="$4"
else
interval=120
fi
if [ -n "$5" ]; then
history_length="$5"
else
history_length=60
fi
declare -a IFNAME
snmpwalk -c "$COMMUNITY" -v 2c $HOSTIP | while read mib equal type value; do
ifid=`echo $mib | cut -d '.' -f 2`
case $mib in
IF-MIB::ifDescr*)
IFNAME[$ifid]="$value"
;;
IF-MIB::ifInOctets*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Throughput to ${IFNAME[$ifid]}', 'thri_bps[$ifid]', $interval, $history_length, 'Bps', 1);"
;;
IF-MIB::ifOutOctets*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Throughput from ${IFNAME[$ifid]}', 'thro_bps[$ifid]', $interval, $history_length, 'Bps', 1);"
;;
IF-MIB::ifInUcastPkts*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Unicast packets to ${IFNAME[$ifid]}', 'upkti_pps[$ifid]', $interval, $history_length, 'Pps', 1);"
;;
IF-MIB::ifInNUcastPkts*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Non unicast packets to ${IFNAME[$ifid]}', 'nupkti_pps[$ifid]', $interval, $history_length, 'Pps', 1);"
;;
IF-MIB::ifOutUcastPkts*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Unicast packets from ${IFNAME[$ifid]}', 'upkto_pps[$ifid]', $interval, $history_length, 'Pps', 1);"
;;
IF-MIB::ifOutNUcastPkts*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Non unicast packets from ${IFNAME[$ifid]}', 'nupkto_pps[$ifid]', $interval, $history_length, 'Pps', 1);"
;;
IF-MIB::ifInErrors*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Input errors on ${IFNAME[$ifid]}', 'inerr[$ifid]', $interval, $history_length, 'Fps', 1);"
;;
IF-MIB::ifOutErrors*)
echo "INSERT INTO items (type, snmp_community, snmp_oid, hostid, description, key_, delay, history, units, delta) VALUES (4, '$COMMUNITY', '$mib', $HOSTID, 'Output errors on ${IFNAME[$ifid]}', 'outerr[$ifid]', $interval, $history_length, 'Fps', 1);"
;;
esac
done