Lync 2013 - Centralizing Logging
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.
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.
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.
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.
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.
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.
Maggiori informazioni riguardo a questo topic sono disponibili all’indirizzo:
Using the Centralized Logging Servicehttp://technet.microsoft.com/en-us/library/jj688101.aspx
Stefano Ceruti
Support Engineer
Microsoft Enterprise Platform Support