SlideShare uma empresa Scribd logo
1 de 18
MCTS 70-536 Study Group
Spotkanie 6: Diagnostics
Agenda
• Logowanie zdarzeń
• Monitorowanie wydajności
• Debug & Trace
• WMI
MONITOROWANIE WYDAJNOŚCI
MCTS 70-536 Study Group / Spotkanie 6
Metody statyczne klasy Process
• GetCurrentProcess():Process
• GetProcessById(int, [string]):Process
• GetProcesses([string]):Process[]
• GetProcessesByName(string, [string]):Process[]
• Start(ProcessStartInfo):Process
• Start(string, [string]):Process
• Start(string, [string], string, SecureString,
string):Process
Monitorowanie liczników
• Obiekty systemu operacyjnego
– Klasy i instancje (np. CPU, wątek, pamięć)
– Pseudoinstancja _Total
• Przykłady
– # uchwytów używanych w procesie
– # błedów stron/sek
• Dostęp:
– Przystawka Performance Monitor (perfmon)
– API (natywne/zarządzane)
Monitorowanie liczników (c.d.)
• Klasa PerformanceCounter : IDisposable
– CategoryName
– CounterName
– InstanceName
– MachineName
– ReadOnly
– Next{Value|Sample}
– Increment
– IncrementBy
Monitorowanie liczników (c.d.)
• PerformanceCounterCategory
– MachineName
– CategoryName
– CategoryHelp
– CategoryType = MultiInstance | SingleInstance
– GetCounters():PerformanceCounter
DEBUG & TRACE
MCTS 70-536 Study Group / Spotkanie 6
Klasa Debugger
• Działa tylko w trybie Debug
• Metody
– Break
– IsAttached
– IsLogging
– Launch
– Log
Atrybuty Debuggera
• DebuggerBrowsableAttribute
• DebuggerDisplayAttribute
• DebuggerHiddenAttribute
• DebuggerNonUserCodeAttribute
• DebuggerStepperBoundryAttribute
• DebuggerStepThroughAttribute
• DebuggerTypeProxyAttribute
• DebuggerVisualizerAttribute
Klasa Debug i Trace c.d.
• Niemal identyczne
• Oparte o wspólną infrastrukturę TraceListeners
• Zależą od różnych falg (DEBUG i TRACE)
• Statyczne metody/właściwości Debug i Trace
– Assert
– Fail
– Write[Line][If]
– Indent
– AutoFlush
– Flush i Close
Klasa Debug i Trace c.d.
• Statyczne metody Trace:
– TraceError
– TraceInformation
– TraceWarning
Assert
• Dodatkowa dokumentacja
• Pozwalają zachować stan
• Jak sprawdzać?
– Atomowe sprawdzenia
– Bez efektów ubocznych
– Kompletnie
• Co sprawdzać?
– Parametry metod, setterów i indekserów
– Otrzymywane wartości z wywołań
• CodeContracts
TraceSwitch i TraceListener
• TraceSwitch
– Decyduje co ma być zalogowane zanim trafi do
listenera
• TraceListener
– Filtry
– Wbudowane listenery
• DefaultTraceListener
• TextWriterTraceListener
• XmlWriterTraceListener
• EventLogTraceListener
• DelimitedListTraceListener
– Możliwość tworzenia własnych listenerów i ich filtrów
CorrelationManager
• Pozwala grupować logiczne bloki aktywności
• Korzysta z Thread Local Storage
• Hierarchiczny (LogicalOperationStack)
• StartLogicalOperation
• StopLogicalOperation
• Udostępnia pole ActivityId
TraceSource
• Dedykowane źródła logów dla poszczególnych
modułów aplikacji
• Możliwośc przekazywania dodatkowych
danych do loga
• Szersza skala poziomów logowania
Trace Source A Trace Source B Trace Source C
Switch 1 Switch 2
Trace
Listener A
Trace
Listener B
Trace
Filter 1
Trace
Listener C
Trace
Listener D
Trace
Filter 2
Konfiguracja
• Poprzez API lub w app.config
<system.diagnostics>
<sources>
<source …>
<listeners>
<add … />
</listeners>
</source>
</sources>
<sharedListeners>
<add …/>
</sharedListeners>
<switches />
</system.diagnostics>

Mais conteúdo relacionado

Semelhante a MCTS 70-536 Study Group - Diagnostics

Semelhante a MCTS 70-536 Study Group - Diagnostics (20)

Dlaczego flopsar
Dlaczego flopsarDlaczego flopsar
Dlaczego flopsar
 
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
[Confidence 2016] Red Team - najlepszy przyjaciel Blue Teamu
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracji
 
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
 
Adam Roman - Automatyczne projektowanie testów
Adam Roman - Automatyczne projektowanie testówAdam Roman - Automatyczne projektowanie testów
Adam Roman - Automatyczne projektowanie testów
 
Devops security
Devops securityDevops security
Devops security
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
DATA CENTER CONVERGED 2012 WARSAW
DATA CENTER CONVERGED 2012 WARSAWDATA CENTER CONVERGED 2012 WARSAW
DATA CENTER CONVERGED 2012 WARSAW
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa ITSCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
SCAP – standaryzacja formatów wymiany danych w zakresie bezpieczeństwa IT
 
10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania10 przykazań bezpiecznego programowania
10 przykazań bezpiecznego programowania
 
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
4Developers 2015: 10 przykazań bezpiecznego kodowania - Wojciech Dworakowski
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
 
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
 
ATF – Nietypowe podejście do automatyzacji w systemie rozproszonym.
ATF – Nietypowe podejście do automatyzacji w systemie rozproszonym. ATF – Nietypowe podejście do automatyzacji w systemie rozproszonym.
ATF – Nietypowe podejście do automatyzacji w systemie rozproszonym.
 
Confitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ AllegroConfitura 2015 - Code Quality Keepers @ Allegro
Confitura 2015 - Code Quality Keepers @ Allegro
 
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
JDD2015: Don’t Panic – Hitchhiker’s guide to the JVM monitoring - Wojciech Oc...
 
Podążając śladami użytkownika Windows – elementy informatyki śledczej
Podążając śladami użytkownika Windows –elementy informatyki śledczejPodążając śladami użytkownika Windows –elementy informatyki śledczej
Podążając śladami użytkownika Windows – elementy informatyki śledczej
 
[CONFidence 2016] Artur Kalinowski - Wyciek danych z pespektywy atakującego
[CONFidence 2016] Artur Kalinowski - Wyciek danych z pespektywy atakującego [CONFidence 2016] Artur Kalinowski - Wyciek danych z pespektywy atakującego
[CONFidence 2016] Artur Kalinowski - Wyciek danych z pespektywy atakującego
 

MCTS 70-536 Study Group - Diagnostics

  • 1. MCTS 70-536 Study Group Spotkanie 6: Diagnostics
  • 2. Agenda • Logowanie zdarzeń • Monitorowanie wydajności • Debug & Trace • WMI
  • 3. MONITOROWANIE WYDAJNOŚCI MCTS 70-536 Study Group / Spotkanie 6
  • 4. Metody statyczne klasy Process • GetCurrentProcess():Process • GetProcessById(int, [string]):Process • GetProcesses([string]):Process[] • GetProcessesByName(string, [string]):Process[] • Start(ProcessStartInfo):Process • Start(string, [string]):Process • Start(string, [string], string, SecureString, string):Process
  • 5. Monitorowanie liczników • Obiekty systemu operacyjnego – Klasy i instancje (np. CPU, wątek, pamięć) – Pseudoinstancja _Total • Przykłady – # uchwytów używanych w procesie – # błedów stron/sek • Dostęp: – Przystawka Performance Monitor (perfmon) – API (natywne/zarządzane)
  • 6. Monitorowanie liczników (c.d.) • Klasa PerformanceCounter : IDisposable – CategoryName – CounterName – InstanceName – MachineName – ReadOnly – Next{Value|Sample} – Increment – IncrementBy
  • 7. Monitorowanie liczników (c.d.) • PerformanceCounterCategory – MachineName – CategoryName – CategoryHelp – CategoryType = MultiInstance | SingleInstance – GetCounters():PerformanceCounter
  • 8. DEBUG & TRACE MCTS 70-536 Study Group / Spotkanie 6
  • 9. Klasa Debugger • Działa tylko w trybie Debug • Metody – Break – IsAttached – IsLogging – Launch – Log
  • 10. Atrybuty Debuggera • DebuggerBrowsableAttribute • DebuggerDisplayAttribute • DebuggerHiddenAttribute • DebuggerNonUserCodeAttribute • DebuggerStepperBoundryAttribute • DebuggerStepThroughAttribute • DebuggerTypeProxyAttribute • DebuggerVisualizerAttribute
  • 11. Klasa Debug i Trace c.d. • Niemal identyczne • Oparte o wspólną infrastrukturę TraceListeners • Zależą od różnych falg (DEBUG i TRACE) • Statyczne metody/właściwości Debug i Trace – Assert – Fail – Write[Line][If] – Indent – AutoFlush – Flush i Close
  • 12. Klasa Debug i Trace c.d. • Statyczne metody Trace: – TraceError – TraceInformation – TraceWarning
  • 13. Assert • Dodatkowa dokumentacja • Pozwalają zachować stan • Jak sprawdzać? – Atomowe sprawdzenia – Bez efektów ubocznych – Kompletnie • Co sprawdzać? – Parametry metod, setterów i indekserów – Otrzymywane wartości z wywołań • CodeContracts
  • 14. TraceSwitch i TraceListener • TraceSwitch – Decyduje co ma być zalogowane zanim trafi do listenera • TraceListener – Filtry – Wbudowane listenery • DefaultTraceListener • TextWriterTraceListener • XmlWriterTraceListener • EventLogTraceListener • DelimitedListTraceListener – Możliwość tworzenia własnych listenerów i ich filtrów
  • 15. CorrelationManager • Pozwala grupować logiczne bloki aktywności • Korzysta z Thread Local Storage • Hierarchiczny (LogicalOperationStack) • StartLogicalOperation • StopLogicalOperation • Udostępnia pole ActivityId
  • 16. TraceSource • Dedykowane źródła logów dla poszczególnych modułów aplikacji • Możliwośc przekazywania dodatkowych danych do loga • Szersza skala poziomów logowania
  • 17. Trace Source A Trace Source B Trace Source C Switch 1 Switch 2 Trace Listener A Trace Listener B Trace Filter 1 Trace Listener C Trace Listener D Trace Filter 2
  • 18. Konfiguracja • Poprzez API lub w app.config <system.diagnostics> <sources> <source …> <listeners> <add … /> </listeners> </source> </sources> <sharedListeners> <add …/> </sharedListeners> <switches /> </system.diagnostics>

Notas do Editor

  1. Dostęp do liczników poprzed perfmon oraz publiczne API z możliwością tworzenia zapytań. Wymagana komunikacja międzyprocesowa. Możliwy dostęp do liczników spoza lokalnej maszyny.
  2. CategoryName CounterName InstanceName MachineName ReadOnly – false możliwe tylko dla Custom Counters Increment IncrementBy
  3. Statyczne meotdy -> Problemy ze skalowalnością WriteIf ->
  4. Statyczne meotdy -> Problemy ze skalowalnością WriteIf ->
  5. http://mvwood.com/blog/correlationmanager/ http://msdn.microsoft.com/en-us/library/system.diagnostics.correlationmanager.aspx
  6. In the 2.0 version of the framework, note that allocating a new TraceSource internally allocates a WeakReference to the new TraceSource and puts the WeakReference into a list.  Although the WeakReference allows the TraceSource to be garbage collected, the WeakReference itself will never be freed.  If you are dynamically creating large numbers of TraceSources (or TraceSwitches) you will see a WeakReference leak.  This should not be a problem because there should not be a reason to create TraceSources dynamically.  Use a small number of static TraceSources instead.
  7. Na podstawie Fig 3-7 z Debugging Microsoft .NET 2.0 Applications (John Robbins)
  8. Statyczne meotdy -> Problemy ze skalowalnością