Net-SNMP
Pollen of Traps?
Ik heb in het verleden SNMP eigenlijk alleen gebruikt om met behulp van polling eenvoudig statistieken te verzamelen van verschillende hosts. Cacti ging dan iedere 5 minuten alle hosts af om informatie te verzamelen en dit komt dan in een leuk grafiekje.
Het begrip SNMP TRAP had ik al verschillende malen voorbij zien komen maar het zei me niets. Ik had het niet nodig om Cacti werkend te krijgen dus wat maakt het uit???
Nu hadden we een paar weken geleden het probleem dat een proces niet meer draaide, hierdoor kwam mail niet door en kregen we ook geen alert. Dit probleem is lastig om te tackelen met een custom script, want hoe stuur je een alert uit als je mail plat ligt?
Het antwoord in deze situatie lag bij de SNMP Traps. Op deze manier laat je de SNMP daemon actief bepaalde zaken monitoren (daarvoor is hij tenslotte gemaakt) en indien er een ingestelde grens wordt overschreden stuurt hij via UDP een bericht naar de SNMP Trap HOST. In onze situatie laat ik de productie servers een Trap bericht genereren naar mijn server thuis. Deze draait een onafhankelijke mailserver waarop dan de alerts worden gemaild naar bijvoorbeeld mijn telefoon.
SNMPv3
Stop service
service snmpd stop
Create the SNMP user and password:
net-snmp-config --create-snmpv3-user -ro -a PASSWORD -X AES -A SHA USERNAME
This creates an SNMPv3 user called USERNAME that has read only access (-ro) authenticated (-a) access with a PASSWORD using AES for encryption (-X) and SHA for your hashes (-A).
Edit /etc/snmp/snmpd.conf and change rouser USERNAME to rouser USERNAME priv, this forces encryption for all traffic.
Start Service
service snmpd start
Test:
snmpwalk -v 3 -l authPriv -a sha -A PASSWORD -x AES -X PASSWORD -u USERNAME localhost
Configuatie SNMPD
De volgende extra regels heb ik aan de snmpd.conf toegevoegd:
rouser public noauth agentSecName public authtrapenable 1 trapcommunity public trap2sink home.trapsink.lan defaultMonitors yes load 15 10 7 proc amavisd proc mysqld_safe disk / 20% disk /home 20% monitor -r 60 -o prNames -o prErrMessage "procTable" prErrorFlag != 0
Op deze manier monitoren we 5 items, 2 gemounte partities, de load en 2 processen. Indien de load over de grens gaat (15 bij 1 min avg, 10 bij 5 min avg of 7 bij 15 min avg), de processen niet meer draaien, of 1 van de volumes minder dan 20% ruimte heeft zal hij een Trap sturen naar 'home.trapsink.lan'
De onderste regel beschrijft de monitor welke de processen in de gaten houd, door deze regel controleerd hij ze iedere 60 sec. De default is namelijk 10 minuten wat vrij lang is in mijn ogen...