Configurazione snmp


Questa breve guida spiega (o almeno ci prova) come configurare il servizio di snmp su un server linux, per il monitoraggio delle risorse. Provvede poi a integrare i dati raccolti tramite grafici generati con Mrtg.

Questa guida è stata sviluppata su sistemi Fedora Core 5, ma è facilmente adattabile (se non addirittura direttamente applicabile) anche ad altri sistemi (Debian, Slackware con piccole modifiche inereti al sistema di pacchettizzazione).

1. Installazione e configurazione Snmpd

Per prima cosa provvediamo a installare il servizio snmpd tramite i pacchetti disponibili della nostra distribuzione:
[[email protected] ~] yum install net-snmp-utils net-snmp

per Debian i pacchetti si installano con il seguente comando

[[email protected] ~] apt-get install snmpd snmp

A questo punto controllate se il demone snmpd è stato lanciato
[[email protected] ~] ps -aux | grep snmpd

dovreste visualizzare qualcosa tipo

root 5512 0.0 2.3 5872 3012 pts/0 S 22:04 0:00 /usr/sbin/snmpd

Se il demone non è in esecuzione provare a lanciarlo a mano con il seguente comando

[[email protected] ~] /etc/init.d/snmpd restart

e ricontrollate il suo stato.

Per aggiungere lo script all’avvio della macchina basta eseguire
[[email protected] ~] chkconfig –level 345 snmpd on

Ora il demone snmpd è correttamente in esecuzione, proviamo a controllarne il corretto funzionamento tramite una semplice query sulle interfacce di rete:

[[email protected] ~]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndexIP-MIB::ipAdEntIfIndex.81.208.101.XXX = INTEGER: 2IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.192.168.0.XXX = INTEGER: 3
[[email protected] ~]#

Se tutto funziona correttamente, allora il demone è correttamente configurato, se doveste avere qualche problema, è meglio controllare il file di configurazione /etc/snmp/snmpd.conf

All’interno di questo file modifichiamo questa linea
com2sec notConfigUser default public

e sostituiamola con quella di seguito adattando ovviamente le subnet come preferite.

com2sec local localhost public
com2sec mynetwork 192.168.0.0/24 public

Scendendo ancora nel file cercate la stringa

group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser

e sostituitela con

group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork

Cerchiamo ora la stringa seguente

view systemview included system

e sostituiamola con

view all included .1 80

Abbiamo quasi finito… cercate la stringa

access notConfigGroup “” any noauth exact systemview none none

e sostituitela con

access MyROGroup “” any noauth exact all none none
access MyRWGroup “” any noauth exact all all none

Ed ora l’ultima stringa da modificare
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root [email protected] (configure /etc/snmp/snmp.local.conf)

queste stringhe sono delle brevi stringhe descrittive per l’identificazione del vostro sistema, fondamentalmente potete scriverci cosa volete io ho messo questo

syslocation Linux (FEDORA_FC5), localhost
syscontact [email protected]

Bene ora se tutto è andato per il verso giusto, riavviate il demone snmp (/etc/init.d/snmpd restart) e provate a fare nuovamente la query (snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex) che a questo punto non dovrebbe darvi problemi.

2. Installazione e configurazione MRTG

Installiamo mrtg con il comando

[[email protected] ~]# yum install mrtg

analogamente per debian

[[email protected] ~]# apt-get install mrtg

A questo punto presuppongo che abbiate un webserver correttamente funzionante (io uso Apache ma non vi sono problemi a utilizzarne altri come ISS o Lighthttpd).

Presupponiamo che la root di apache stia in /var/www/html/ andiamo a creare la cartella che conterrà i nostri dati

[[email protected] ~]# mkdir -p /var/www/html/mymrtg/

ora eseguiamo il seguente comando per generare automaticamente il file di configurazione di mrtg

[[email protected] ~]# cfgmaker –global ‘WorkDir: /var/www/html/mymrtg’ –output /etc/mrtg/mymrtg.cfg [email protected]

e creiamo l’index.html del nostro sistema di monitoraggio

[[email protected] ~]# indexmaker –output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg

(N.B.= — sono due trattini (-) vicini ma sembrano una linea unica se fate il cut & paste fate attenzione)

Ora è tutto pronto non ci resta che eseguie mrtg indicandogli il file di configurazione da utilizzare

[[email protected] ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg –logging /var/log/mrtg.log

In ambiente fedora è necessaria la stringa env LANG=C, su altri sistemi probabilmente questa variabile di ambiente è già settata in questo modo per cui potrebbe bastare solamente

[[email protected] ~]# /usr/bin/mrtg /etc/mrtg/mymrtg.cfg –logging /var/log/mrtg.log

A questo punto non rimane che vedere il risultato di tutto il nostro lavoro andando al seguente indirizzo http://www.your.com/mymrtg/ o http://localhost/mymrtg/

L’ultimo step da seguire consiste nel mettere in crontab l’esecuzione dello script di aggiornamento di mrtg, il modo più semplice per farlo è con il comando

[[email protected] ~]# crontab -e

Vi si aprirà una finestra e qui inseriteci

*/5 * * * * env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg –logging /var/log/mrtg.log

lo script verrà lanciato ogni 5 minuti, in tal modo i campionamenti verranno aggiornati sui nostri grafici in ogni 5 minuti. Qualora voleste avere stime più precise potete diminuire il tempo di campionamento ad 1 minuto ad esempio ottenendo così risultati più accurati.

3. Ulteriori risorse da monitorare

Quanto sino ad ora visto, permette di creare un piccolo sistema di monitoraggio per la banda utilizzata dai vari dispositivi di rete, in un tempo realtivamente ristretto e con una buona accuratezza (questo dipende ovviamente dall’intervallo di campionamento che si sceglie).

La domanda a questo punto che uno potrebbe porsi è “ma posso monitorare solo la banda o anche altre risorse?”.

Ovviamente la risposta è si, è possibile monitorare altri risorse di sistema, cosa che si è resa molto utile per identificare anomalie nei sitemi e risolverle (es.: utilizzi intensivi della cpu da parte di particolari processi in determinate ore della giornata).

Riporterò ora delle piccole porzioni di codice da aggiungere al file /etc/mrtg/myrtgc.cfg per aggiungere queste funzionalità.

3.1 Monitoraggio dell’utilizzo di CPU

#
# CPU Monitoring
# (Scaled so that the sum of all three values doesn’t exceed 100)
#

Target[server.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:[email protected] + ssCpuRawSystem.0&ssCpuRawSystem.0:[email protected] + ssCpuRawNice.0&ssCpuRawNice.0:[email protected]
Title[server.cpu]: Server CPU Load
PageTop[server.cpu]: <H1>CPU Load – System, User and Nice Processes</H1>
MaxBytes[server.cpu]: 100
ShortLegend[server.cpu]: %
YLegend[server.cpu]: CPU Utilization
Legend1[server.cpu]: Current CPU percentage load
LegendI[server.cpu]: Used
LegendO[server.cpu]:
Options[server.cpu]: growright,nopercent
Unscaled[server.cpu]: ymwd

3.2 Monitoraggio dell’utilizzo della memoria totale rispetto a quella disponibile

#
# Memory Monitoring (Total Versus Available Memory)
#

Target[server.memory]: memAvailReal.0&memTotalReal.0:[email protected]
Title[server.memory]: Free Memory
PageTop[server.memory]: <H1>Free Memory</H1>
MaxBytes[server.memory]: 100000000000
ShortLegend[server.memory]: B
YLegend[server.memory]: Bytes
LegendI[server.memory]: Free
LegendO[server.memory]: Total
Legend1[server.memory]: Free memory, not including swap, in bytes
Legend2[server.memory]: Total memory
Options[server.memory]: gauge,growright,nopercent
kMG[server.memory]: k,M,G,T,P,X

3.3 Percentuale di utilizzo della Memoria

#
# Memory Monitoring (Percentage usage)
#
Title[server.mempercent]: Percentage Free Memory
PageTop[server.mempercent]: <H1>Percentage Free Memory</H1>
Target[server.mempercent]: ( memAvailReal.0&memAvailReal.0:[email protected] ) * 100 / ( memTotalReal.0&memTotalReal.0:[email protected] )
options[server.mempercent]: growright,gauge,transparent,nopercent
Unscaled[server.mempercent]: ymwd
MaxBytes[server.mempercent]: 100
YLegend[server.mempercent]: Memory %
ShortLegend[server.mempercent]: Percent
LegendI[server.mempercent]: Free
LegendO[server.mempercent]: Free
Legend1[server.mempercent]: Percentage Free Memory
Legend2[server.mempercent]: Percentage Free Memory

3.4. Nuove connessioni TCP

#
# New TCP Connection Monitoring (per minute)
#

Target[server.newconns]: tcpPassiveOpens.0&tcpActiveOpens.0:[email protected]
Title[server.newconns]: Newly Created TCP Connections
PageTop[server.newconns]: <H1>New TCP Connections</H1>
MaxBytes[server.newconns]: 10000000000
ShortLegend[server.newconns]: c/s
YLegend[server.newconns]: Conns / Min
LegendI[server.newconns]: In
LegendO[server.newconns]: Out
Legend1[server.newconns]: New inbound connections
Legend2[server.newconns]: New outbound connections
Options[server.newconns]: growright,nopercent,perminute

3.5 Connessioni TCP stabilite

#
# Established TCP Connections
#

Target[server.estabcons]: tcpCurrEstab.0&tcpCurrEstab.0:[email protected]
Title[server.estabcons]: Currently Established TCP Connections
PageTop[server.estabcons]: <H1>Established TCP Connections</H1>
MaxBytes[server.estabcons]: 10000000000
ShortLegend[server.estabcons]:
YLegend[server.estabcons]: Connections
LegendI[server.estabcons]: In
LegendO[server.estabcons]:
Legend1[server.estabcons]: Established connections
Legend2[server.estabcons]:
Options[server.estabcons]: growright,nopercent,gauge

3.6 Utilizzo del disco

L’utilizzo di questo parametro di monitoraggio richiede l’inserimento nel file /etc/snmp/snmpd.conf del seguente codice

disk /

con conseguente riavvio del demone snmpd
#
# Disk Usage Monitoring
#

Target[server.disk]: dskPercent.1&dskPercent.1:[email protected]
Title[server.disk]: Disk Partition Usage
PageTop[server.disk]: <H1>Spazio su disco utilizzato</H1>
MaxBytes[server.disk]: 100
ShortLegend[server.disk]: %
YLegend[server.disk]: Utilization
LegendI[server.disk]: Partizione /
Options[server.disk]: gauge,growright,nopercent
Unscaled[server.disk]: ymwd

3.7 Carichi della CPU

#
# Load Average
#

Target[server.loadavg]: laLoadInt.2&laLoadInt.3:[email protected]
MaxBytes[server.loadavg]: 5000
Title[server.loadavg]: Load Average * 100
PageTop[server.loadavg]:<h1>Load Average * 100</h1>
YLegend[server.loadavg]: Load Average
ShortLegend[server.loadavg]:
Legend1[server.loadavg]: Load average 5 min
Legend2[server.loadavg]: Load average 15 min
LegendI[server.loadavg]: 5min load avg
LegendO[server.loadavg]: 15min load avg
Options[server.loadavg]: nopercent,growright,noinfo,gauge

4. Monitoraggio del traffico email di Postfix

Un discorso a parte va fatto per quanto riguarda il monitoraggio sull’invio e la ricezione di email tramite postfix.

Grazie alla documentazione trovata in rete mi è stato possibile implmentare un sistema che permette di contare il numero di email inviate e ricevute dal server di posa, nell’arco di tempo dell’intervallo di campionamento (i famosi 5 minuti). Questo viene realizzato tramite il richiamo, da parte di mrtg, di alcuni script esterni che fanno quanto richiesto, una volta raccolti i dati vengono processati da mrtg per la generazione dei grafici.

Questi script che bisogna utilizzaresono scritti in perl per cui dovete installare alcuni moduli in perl tramite cpan, prima di fare questo installate ncftp che viene utilizzato da perl per scaricare i file, questo semplicemente usando il comando

[[email protected] ~]# yum install ncftp

analogamente per debian

[[email protected] ~]# apt-get install ncftp

a questo punto lanciate il comando cpan e dopo aver risposto a un po’ di domande, che vi chiederà lui per la corretta configurazione di della shell del perl (solitamente basta dare invio a tutte prendendo i parametri di default), eseguite il comando

[[email protected] ~]# cpan
Terminal does not support AddHistory.

cpan shell — CPAN exploration and modules installation (v1.7602)
ReadLine support available (try ‘install Bundle::CPAN’)

cpan> install File::Tail

una volta finita l’installazione di questo moduletto possiamo caricare i file in perl, son tre semplici file che dovete mettere in /usr/local/bin con i permessi di esecuzione

mrtg-mailstats.pl
mailstats.pl
update-mailstats.pl

A questo punto non ci rimane che lanciare il processo update-mailstats.pl (script che si occupa di tenere costantemente monitorato il traffico del mailserver) con il comando

[[email protected] ~]# /usr/local/bin/update-mailstats.pl &

con il comando mailstats.pl è possibile vedere le statistiche in tempo reale sul numero totale di messaggi inviati e ricevuti come nel seguente esempio

[[email protected] ~]# mailstats.pl
RECEIVED:smtp 98057
SENT:local 235
SENT:smtp 54423
SENT:virtual 42947
[[email protected] ~]#

Aggiungiamo nel file /etc/mrtg/mymrtg.cfg il seguente codice

#—————————————————————#
# MRTG mail cfg: Postfix mailstats plotting with MRTG #
#—————————————————————#
Target[postfix]: `/usr/local/bin/mrtg-mailstats.pl`
Options[postfix]: gauge, growright
Title[postfix]: Postfix Statistics
PageTop[postfix]: <H1>Postfix Statistics</H1>
MaxBytes[postfix]: 1000000
WithPeak[postfix]: dwmy
YLegend[postfix]: No. of messages
ShortLegend[postfix]: messages
LegendI[postfix]: Incoming:
LegendO[postfix]: Outgoing:
#—————————————————————#

rigeneriamo l’index di mrtg con il comando

[[email protected] ~]# indexmaker –output=/var/www/html/mymrtg/index.html /etc/mrtg/mymrtg.cfg

e abbiamo finito 😉

Ora dovreste vedere, man mano che i valori vengono campionati, i grafici anche sulle mail in ingresso e in uscita di postfix. Una tecnica simile penso sia molto semplice da utilizzare anche per altri programmi e risorse.

Se avete suggerimenti, scritiche miglioramenti, script o teniche per il monitoraggio di altre risorse di sistema, contattatemi.

,

2 risposte a “Configurazione snmp”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Per postare il commento, risolvi il quesito sottostante * Time limit is exhausted. Please reload CAPTCHA.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.