+
Come sopravvivere al Correlation ID Error
Pubblicato il: 08/12/2010
Da: Riccardo Celesti
Lingua: Italiano
Livello: 300

Se non è la prima volta che sentite parlare di SharePoint 2010 saprete sicuramente che Microsoft ha introdotto notevoli miglioramenti in tema di logging.  Una delle novità più evidenti è senza dubbio il Correlation ID, un codice che ci permette di mettere in relazione tutte le voci di log relative allo stesso blocco di operazioni. Con SharePoint 2010 quando vi capiterà di imbattervi nel misterioso Unknown error non dovrete più leggere nei fondi di caffè o nelle ossa di pollo per capirne la provenienza, ma vi basterà utilizzare questo codice magico per effettuare una ricerca rapida e puntuale all’interno dei vostri file di log.

Sapete bene che SharePoint genera diversi file di log, anche di grandi dimensioni. La ricerca all’interno di questi file, potrebbe diventare poco pratica e molto dispendiosa, soprattutto in termini di tempo. Un altro svantaggio è sicuramente quello di non fornire una visione d’insieme di tutte le voci di log correlate. Per fortuna per questo ci viene in aiuto Powershell.

Utilizzando la cmdlet Get-SPLogevent potremo accedere alle informazioni presenti in tutti i file di log senza doverli aprire uno per uno. E’ però abbastanza ovvio che è fondamentale aggiungere dei filtri alla nostra ricerca. Un valido criterio di filtro potrebbe sicuramente essere il  fattore “temporale”, impostare cioè data e ora da cui cominciare a leggere i log.

Get-SPLogevent –StartTime “05/12/2010 22:30”

Anche in questo caso la ricerca potrebbe non essere sufficientemente precisa. Abbiamo parlato in precedenza del Correlation ID, perchè non provare ad utilizzarlo come filtro?

Get-SPLogevent –StartTime “05/12/2010 22:30” | ?{$_.Correlation –eq “<Correlation ID>”}

Tradotto in linguaggio umano risulta: a partire dalle 22:30 del 5 dicembre 2010 trova tutte le voci di log che hanno il correlation ID uguale a <Correlation ID>.

Per migliorare la leggibilità dei risultati è conveniente infine modificare il tipo di output del comando. Personalmente mi trovo molto bene con la grid view (disponibile solo se attivata la feature di Powershell ISE sul server), in alternativa potremmo salvare in file esterno i risultati della nostra ricerca.

Grid view:
Get-SPLogevent –StartTime “05/12/2010 22:30” | ?{$_.Correlation –eq “<Correlation ID>”} | ogv

File di testo:
Get-SPLogevent –StartTime “05/12/2010 22:30” | ?{$_.Correlation –eq “<Correlation ID>”}  | fl > C:\temp\ULSsearch.txt

In questo secondo esempio ho modificato la formattazione dei risultati ( fl alias di format-list) per avere una lettura completa ed ottimale di tutte le informazioni del log.

Lavorando con SharePoint sappiamo bene che anche l’event viewer di Windows Server ha la sua importanza nella ricerca degli errori. Anche in questo caso Powershell ci fornisce un valido aiuto (sebbene, è giusto dirlo, la GUI di event viewer ci fornisca già discrete funzionalità di filtro e ricerca), permettendoci di effettuare ricerche puntuali filtrando per qualsisasi informazione disponibile.

Faccio un esempio pratico. L’operazione di sincronizzazione dei profili genera, a livello di event viewer, un erorre (si, quelli rossi L) per ciascun profilo non importato, e questo ad ogni sync. Diventa difficile capire perchè uno specifico utente non è stato importato, con Powershell questo è un po’ meno difficile.

Possiamo innanzi tutto dichiarare l’ID dell’errore

$Number = 6301.

Leggere successivamente tutti gli eventi del nodo “Application” dove nel messaggio compare la voce “Celesti” (Hi mom, it’s me J).

$log = Get-EventLog -LogName application -Message *Celesti*

 

Ed infine filtrare l’elenco ottenuto in precedenza estraendo solo le voci di errore dove il valore di Event ID corrisponde a quello impostato in precedenza. L’output del nostro comando lo salviamo quindi in un file di testo per una consultazione più pratica.

$log | where {$_.entryType -match "Error" -and $_.eventID -eq $Number} | fl | out-file C:\TEMP\6301.txt

 

Fino ad ora ho descritto operazioni che permettono di verificare errori già registrati. Come fare per analizzare una situazione “in corso”? Un mio consiglio spassionato è quello di utilizzare (anche) ULSViewer, un tool intuitivo, leggero e gratuito J.

 

Questo semplice programma permette di visualizzare in tempo reale tutto ciò che viene scritto sui file di log, applicando filtri, selezionando le colonna da mostrare, specificando il livello dei messaggi da visualizzare senza dover in alcun caso, arrestare la lettura dei log. ULSViewer ha inoltre una funzionalità di Smart Highlight che permette di evidenziare messaggi idenditici ripetuti all’interno dell’intero trace (es. Correlation ID).

 

E’ possibile collegarsi alla directory LOG nella SharePoint root (o dovunque voi abbiate salvato i vostri log) anche da un computer remoto o aprire singoli file di log. Con ULSViewer è inoltre possibile “registrare” l’output generato un file CSV esterno, in modo da poter approfondire anche in un secondo momento l’analisi dei log.

 

Un ultima funzionalità che mi sembra doveroso segnalare è la presenza  di una treeview che permette, con un solo click, di filtrare il contenuto per Correlation ID, non a caso chiamata Correlation Tree. In poche parole a mio avviso ULSViewer non dovrebbe mai mancare nella cassetta degli attrezzi di ogni SharePointer di buona volontà.

Figura

Tags


Destinatari


Prodotti

Microsoft SharePoint Server 2010
SharePoint Foundation 2010


Bookmark and Share