Configure snmp trap sending

From Bitbull Wiki
Jump to navigation Jump to search

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
#!/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