In questo post tratterò una delle novità introdotte in Lync 2013 chiamata Centralizing Logging.
Questa nuova feature permette di collezionare log su differenti servers in maniera centralizzata.

In ogni Lync server è presente un nuovo servizio chiamato “Lync Server Centralized Logging Service Agent”.

Questo servizio è composto da due componenti principi: un agent e un controller.

Il controller ha il compito di inviare comandi come Start, Stop, Sync , Update e Search all’agent che si preoccuperà di catturare i dati.

clip_image002

Ogni 20 Mb di dati catturati l’Agent si preoccupa di creare un nuovo file. Questo parametro è configurabile via Policy mediante il comando Get-CsCLSConfiguration.

clip_image004

Altra nuova funzionalità introdotta da Lync 2013 è il concetto di Scanario.
Uno scenario non è altro che un set prestabilito di componenti che vengono tracciati al fine di analizzare una specifica problematica.

Gli scenari presenti in Lync sono AlwaysOn, MediaConnectivity, ApplicationSharing, AudioVideoConferencingIssue, HybridVoice, IncomingAndOutgoingCall, VoiceMail, IMAndPresence, AddressBook, DeviceUpdate, LYSSAndUCS, CLS, SP, WAC, UserReplicator, HostedMigration, MonitoringAndArchiving, LILRLegacy, LILRLYSS, MeetingJoin, RGS, CPS, XMPP and CAA

E’ possibile visualizzarli con il comando Get-CsClsSscenario | Select-Object Identity.

clip_image006

Come già anticipato, ogni scenario traccia una serie di componenti predefiniti.
Per sapere quali sono i componenti tracciati da uno specifico scenario è possibile utilizzare il comando Get-CsCLSScenario. Il risultato ottenuto sarà il seguente.

clip_image008

Come si evince dalla screenshot qui sora, ogni scenario oltre ad includere specifici componenti, setta il livello di verbosità del componente stesso.
Se prendiamo per esempio lo scenario IMandPresence, possiamo vedere che vengono tracciati i componenti SIP STACK e UserServices e i livelli sono entrambi settati su Info.

clip_image010

Questo significa che con molta probabilità i dati catturati saranno insufficienti a identificare il problema.

E’ possibile creare degli Scenari personalizzati dove customizzare componenti e livelli.
Il seguente esempio, crea un nuovo scenario chiamato CustomScenario e abilita il log Verbose per i componenti SipStack and S4.

$sipStackProv = New-CsClsProvider –Name “SipStack” –Type “WPP” –Level “Verbose” –Flags “All”
$s4 = New-CsClsProvider –Name “S4” –Type “WPP” –Level “Verbose” –Flags “All”
$provArray = $sipStackProv, $s4
New-CsClsScenario -Identity “global/CustomScenario” –Provider @{Replace=$provArray}

E’ inoltre possibile creare degli scenari a diversi livelli ( Globale, Site).

Come catturare e analizzare i log

Le nuove cmdlets implementate per gestire questo nuovo sistema di logging sono  Start-CsClsLogging, Show-CsClslogging, Update-CsClsLogging, Stop-CsClsLogging, Sync-CsClsLogging e Search-CsClsLogging.

Ogni comando ha degli switch per personalizzare il comando stesso.
Il comando Start-CsClsLogging abilita uno specifico scenario.
Sintassi:
Start-CsClsLogging -Scenario <String> [-AsXml <SwitchParameter>] [-Computers <String[]>] [-Duration <String>] [-Pools <String[]>]
Esempio:
Start-CsClsLogging -Scenario "cps" -Pools "pool.contoso.com".

Il comando Show-CsClslogging, mostra gli scenari in esecuzione.
Sintassi:
Show-CsClsLogging [-AsXml <SwitchParameter>] [-Computers <String[]>] [-Pools <String[]>]
Esempio:
Show-CsClsLogging

Il comando Stop-CsClslogging, stoppa uno scenario in esecuzione.
Sintassi:
Stop-CsClsLogging -Scenario <String> [-AsXml <SwitchParameter>] [-Computers <String[]>] [-Pools <String[]>]
Esempio:
Stop-CsClsLogging -Scenario "cps" -Pools "pool.contoso.com"

Il comando Search-CsClslogging, permette di eseguire delle query sui log catturati. E’ possibile personalizzare la ricerca al fine di recuperare le informazioni necessarie ad un determinato test/problema.
Il meccanismo di ricerca è ottimizzato al fine di restituire tutte le informazioni inerenti ad un certo contesto. Ad esempio, se viene specificato un SipUri, non verranno restituite solo le tracce dove il l’indirizzo compare nel campo To: o From:, ma tutti i messaggi ad esso collegati.
Sintassi:
Search-CsClsLogging [-AsXml <SwitchParameter>] [-CallId <String>] [-Components <String[]>] [-Computers <String[]>] [-ConferenceId <String>] [-CorrelationIds <String[]>] [-EndTime <DateTime>] [-IP <IPAddress>] [-LogLevel <String>] [-MatchAll <SwitchParameter>] [-MatchAny <SwitchParameter>] [-OutputFilePath <String>] [-Phone <String>] [-Pools <String[]>] [-SipContents <String>] [-SkipNetworkLogs <SwitchParameter>] [-StartTime <DateTime>] [-Uri <String>]
Esempio:
Search-CsClsLogging –Pools “pool.contoso.com” –StartTime “08/24/2012 08:00:00 AM” –EndTime “08/24/2012 09:00:00 AM” > C:\trace\logExport.txt

NB: Non è possibile utilizzare Verbose come impostazione del parametro level, se il componente nello scenario sta tracciando con un livello di verbosità inferiore.

Il comando Sync-CsClslogging, scrive le informazioni in memoria al processo in un file ETL.
Sintassi:
Sync-CsClsLogging [-AsXml <SwitchParameter>] [-Computers <String[]>] [-Pools <String[]>]
Esempio:
Sync-CsClsLogging -Pools "pool.contoso.com"

Per effettuare un tracing del log, sarà quindi necessario avviare uno specifico scenario con il comando Start-CsClsLogging, ed eseguire la ricerca con il comando Search-CsClsLogging.  Tale ricerca verrà effettuata in tutti i file ETL generati dal momento in cui è stato eseguito lo scenario.  E’ possibile inviare l’output del comando ad un file di testo apribile con snooper.
Se i dati catturati sono minori di 20Mb (dimensione standard per il file ETL) la ricerca non restituirà nessun risultato.
In questo caso è sufficiente stoppare la cattura con Stop-CsClsLogging o eseguire Sync-CsClsLogging al fine di creare un file ETL dove la ricerca eseguirà le query.

I file ETL generati dall’Agent sono all’interno della cartella %Windir%\ServiceProfiles\NetworkService\AppData\Local\Temp, dato che il servizio gira con l’utente NetworkService.

clip_image012

Maggiori informazioni riguardo a questo topic sono disponibili all’indirizzo:
Using the Centralized Logging Service
http://technet.microsoft.com/en-us/library/jj688101.aspx

Stefano Ceruti    
Support Engineer    
Microsoft Enterprise Platform Support