Configure snmp trap sending
Contents
1 allgemeines
die traps werden per default (wenn aktiviert) alle 600s generiert es koennen alle integer werte aus dem snmp tree als trap ausloeser verwendet werden
- summen vergleiche sind hier erlaubt:
- zB wenn network interface speed ist ungleich: fileErrorFlag != 0
- zB wenn <string> in file mehr als 5 mal vorkommt: logMatchCurrentCount >= 4
- zB oder als trigger (bei ueber und unterschreitung): monitor -t
2 wichtige rpms
net-snmp-libs net-snmp-utils net-snmp net-snmp-perl
3 wichtige comands
man page zur snmpd.conf syntax
man 5 snmpd.conf
sucht den tree nach teilen dieses strings ab
snmptranslate -TB -Of sysLo
gibt den ganzen snmp tree aus
snmptranslate -Of -Tl -IR
macht einen snmpwalk unterhalb von ucdavis
snmpwalk -v1 -c publiC localhost .iso.org.dod.internet.private.enterprises.ucdavis
prüft ob snmp traps angenommen werden können
nmap -sU -p161,162 trapp-server1 trap-server2
restart des snmp deamons (nach config aenderungen)
/etc/init.d/snmpd restart
gibt config felher beim restarten aus (nach jedem restart pruefen)
tail -F /var/log/messages
ein user dialog zur generierung des snmpd.conf
/usr/bin/snmpconf
sendet einen test trap
snmptrap -v 1 -c never_tell 195.186.29.88 "" "" 6 99 ""
gibt eine beschreibung der besagten oid aus
snmptranslate -Td .iso.org.dod.internet.mgmt.mib-2.system.sysName
macht einen tcpdump auf den trap traffic
tcpdump port 162
4 wichtige dateien
zentrales config file
/etc/snmp/snmpd.conf
default mib
/usr/share/snmp/mibs/UCD-SNMP-MIB.txt
auf keinen fall lesen!!!
/usr/share/doc/net-snmp-5.1.2/FAQ
5 basic setup fuer trap generierung
vi /etc/snmp/dnmpd.conf
...basis config fehlt hier... # basis config, ohne das werden keine traps gesendet (user root kann veraendert werden) agentSecName root rouser root #enable traps for process monitoring every 60 seconds monitor -r 60 -o prNames -o prErrMessage "Process Monitoring Error" prErrorFlag != 0 #proc NAME [MAX=0] [MIN=0] proc ntpd 1 1 #enable traps for swap monitoring and give error message if there is one monitor -o memErrorName -o memSwapErrorMsg "Swap Error has Occured" memSwapError != 0 #enable traps for script ececution in 60 second intervall (send trap if rc not 0) monitor -r 60 -o extNames -o extOutput "Custom Script Error" extResult != 0 # send trap if script has rc != 0 (dont use ' or ") exec tmp-touch /bin/touch /tmp/test #enable traps for disk monitoring monitor -o dskPath -o dskErrorMsg "File System Error" dskErrorFlag != 0 # disk PATH [MIN=1000000] disk / 10% disk /tmp 102400 #enable traps for cpu load monitoring monitor -o laNames -o laErrMessage "CPU Load Error" laErrorFlag != 0 # load [1MAX=12.0] [5MAX=12.0] [15MAX=12.0] load 0.7 0.8 0.9 #enable traps for file monitoring in 600 second intervall monitor -o fileName -o fileErrorMsg "fileTable" fileErrorFlag != 0 #monitor file for size greater then 10meg file /var/log/messages 10240 #enable traps for log file value matching, if value greater 0 monitor -o logMatchFilename -o logMatchRegEx "Log File Match Occured" logMatchCurrentCount != 0 #logmatch NAME PATH CYCLETIME REGEX logmatch message-error /var/log/messages 600 .*error.* #enable traps for monitoring network interface speed in 60 second checking intervall monitor -r 60 -o extNames -o extCommand -o extOutput "Custom Script Error" extResult != 0 sh eth0-speed /sbin/ethtool eth0 | /usr/bin/tr '\n' ' ' | /bin/grep 'Speed: 1000Mb/s.*Duplex: Full.*Auto-negotiation: on' sh eth1-speed /sbin/ethtool eth1 | /usr/bin/tr '\n' ' ' | /bin/grep 'Speed: 1000Mb/s.*Duplex: Full.*Auto-negotiation: on'
6 beispiel anhand einer monitoring aufgabe
6.1 aufgabe
netzwerkkarten sollen permanant im richtigen modus laufen
- Speed: 1000Mb/s
- Duplex: Full
- Auto-negotiation: on
6.2 loesungsweg
snmpfrog speed
- der wert ifSpeed kommt leider im format Gauge32, dieser kann via snmp-trap nicht getriggert werden
ethtool eth0
- die werte sind da, muessen noch via exit-code ausgewertet werden koennen
- zB: /sbin/ethtool eth0 | /usr/bin/tr '\n' ' ' | /bin/grep 'Speed: 1000Mb/s.*Duplex: Full.*Auto-negotiation: on'
snmpd.conf
- monitor -o extNames -o extCommand -o extOutput "Custom Script Error" extResult != 0
- sh eth0-speed /sbin/ethtool eth0 | /usr/bin/tr '\n' ' ' | /bin/grep 'Speed: 1000Mb/s.*Duplex: Full.*Auto-negotiation: on'
bemerkungen
- der monitor laeuft im 600 sekunden takt durch
- da das grep im "fehlerfall" keine ausgabe macht, ist es sinnvoll extCommand im monitor mit dem trap zu senden
- da der monitor extResult != 0 auswertet kann er einfach fuer zusaetzliche comands verwendet werden
7 tools
vi /root/bin/snmpfrog
<bash>
- !/bin/bash
- der mib tree wird nach dem stichwort (partial match) abgesucht, die eigenschaften der treffer werden angezeigt
for i in $(snmptranslate -TB -Of "$1") do
echo ---------- $i ---------- snmptranslate -Td $i echo ------------------------
done </bash>