01 June 2009
Exchange Server – Automatizzare la cattura del traffico di rete con NMCap
In questi miei primi post, non strettamente legati al mondo Exchange, vorrei porre la vostra attenzione su alcuni tool di troubleshooting utilizzati per analizzare problematiche che impattano le funzionalità dei server Exchange. Iniziamo quindi con una utility che si è dimostrata spesso indispensabile: NMCap.
Scenari di utilizzo e Attivazione
Spesso capita di avere l’esigenza di effettuare delle catture di traffico di rete in attesa che un determinato problema si presenti nuovamente.
Nella maggior parte delle situazioni non è possibile collegarsi al server e lanciare Network Monitor, o in alternativa il vostro tool di cattura preferito, e lasciarlo semplicemente girare, magari col “circular logging” impostato.
Oltre al fatto d’essere una soluzione molto poco elegante la sessione RDP può andare in timeout, essere richiesta da un altro amministratore, vi ricordo il limite di due sessioni contemporanee insieme a quella “console”, o semplicemente un altro amministratore può avere la necessità di riavviare il server: fermando così la cattura fino a che questa non viene fatta ripartire nuovamente. Infine, col “circular logging” impostato, rischiamo di perdere i dati di nostro interesse se non agiamo velocemente per fermare la cattura.
Fino a qualche tempo fa, quando necessario, automatizzavo la cattura del traffico di rete con netta con qualche limitazione. Con il nuovo Network Monitor, giunto alla versione 3.3, sono state superate alcuni dei vincoli del suo predecessore e sono state introdotte alcune interessanti novità.
Tanto per citarne alcune tramite NMCap è possibile effettuare la cattura del traffico su tutte le interfacce, salvare grandi quantità di dati catturati effettuando lo “split” su più file. E’ possibile impostare un trigger per lo start e stop della cattura, oltre che per una determinata finestra temporale, anche per uno specifico evento (es: un ping inviato al server) e “last but not least” è ovviamente possibile utilizzare NMcap con i filtri creati attraverso la GUI di Network Monitor, fate attenzione ai doppi apici “”!
Per catture relative a sessioni molto lunghe è addirittura possibile arrivare a “scriptare” il tutto utilizzando in maniera continuativa NMcap (con o senza filtri) e comprimendo via via (sempre via command line) i file prodotti per spostarli poi su volumi “meno pregiati” del server. Volevo ricordare con l’occasione che NMCap, se utilizzato senza filtri, non causa un sostanziale decadimento delle performance del server.
Un’altra idea può essere quella di avviare NMCAp tramire un Alert di Performance Monitor oppure, tramite VBScript col verificarsi di uno specifico evento nel System Log o nell’Application Log (relativamente a questo pubblicherò a breve un post per dettagliare ulteriormente questi aspetti).
Esempi pratici
Dopo questa lunga introduzione passiamo a qualche esempio pratico relativo all’utilizzo ed alla sintassi del comando:
nmcap /network * /capture "(tcp.port == 25)" /file t.chn:100M /stopwhen /timeafter 120min /terminatewhen /keypress x
Nell’esempio di cui sopra NMcap catturerà il traffico relativo a tutte le interfacce (parametro “/network *”) indirizzato alla porta TCP 25 e si fermerà dopo 120 min oppure premendo il tasto “X”. Il comando concatena inoltre i dati catturati in N file t(1).chn e t(2).chn, ognuno di 100MB fino al termine previsto per la cattura (su questo punto vi consiglio di prestare particolare attenzione al esaurimento dello spazio disco a disposizione). Ricordo che per default, per fermare la cattura, è semplicemente necessario utilizzare Ctrl+C o Ctrl+Break. Procediamo con un passo indietro e un esempio più semplice:
nmcap /network * /capture /file test.cap
Il comando di cui sopra cattura il traffico su tutte le interfacce salvando i dati nel file test.cap (cattura circolare per un file con dimensione massima pari ai 20MB di default). Un altro esempio interessante può essere il seguente dove effluiamo la cattura di tutto il traffico escludendo la parte relativa al protocollo RDP (Terminal Services):
nmcap /network * /capture "!(tcp.port == 3389)" /file test.cap
Come anticipato nel primo script è possibile impostare la partenza e lo stop della cattura attraverso gli switch /startwhen e /stopwhen dopo un certo numero di minuti (ad esempio 30) col seguente switch: "/TimeAfter 30 mintues" oppure indicando un orario preciso con lo switch "/Time 10:30:00 am 9/10/2006" (attenzione perché il formato della data/ora dipende dai locale settings impostati) oppure, come ho accennato all’inizio del post, col verificarsi di un determinato evento come nell’esempio di cui sotto dove la cattura terminerà non appena NMCap rileverà i passaggio di un frame dal server locale all’ host con IP 10.20.30.41:
nmcap /network * /capture /file t.cap /stopwhen /frame (ipv4.address == ipconfig.localipv4address) AND (Ipv4.DestinationAddress == 10.20.30.41)
Come ho accennato prima è possibile concatenare i file di output della cattura specificando l’estensione ".chn” e la dimensione massima per ogni file (che consiglio di mantenere al di sotto di 100-200MB al fine di non ritrovarsi a gestire file di dimensioni troppo ampie). Per cui, utilizzando ad esempio lo switch "/file t.chn:1M" verranno creati dei file chiamati files t(1).chn, t(2).chn, ecc. ognuno con dimensione pari ad 1MB.
Relativamente alla salvaguardia dello spazio a disposizione sarà possibile indicare anche una condizione alternativa di stop della trace basata sulla percentuale di spazio libero su disco come nell’esempio di cui sotto dove, al raggiungimento del 5% di spazio libero residuo, la cattura terminerà automaticamente:
nmcap /network * /capture /file result.cap /MinDiskQuotaPercentage 5
Come avete potuto vedere le possibilità offerte sono veramente molte e credo saranno in grado di soddisfare tutte le vostre esigenze.
Altri esempi di utilizzo di NMCap potranno essere valutati digitando il comando con lo switch "/examples" mentre ulteriori informazioni su Network Monitor e il relativo download del tool sono disponibili ai seguenti indirizzi:
Buona cattura a tutti! :)
Cristian Crifò
Senior Support Engineer
Microsoft Enterprise Exchange Support
Comment Notification
If you would like to receive an email when updates are made to this post, please register here
Subscribe to this post's comments using
Comment Policy: No HTML allowed. URIs and line breaks are converted automatically. Your e–mail address will not show up on any public page.