Post on 08-Jul-2015
description
transcript
Windows Azure Diagnostics
Andy Cross
Overview
• Diagnostics in Windows Azure
– Application Level
– Service Level
– Operating System Level
App• Things your application chooses to log
Service• Things logged by what runs your application
OS• Things logged by OS container
Example Log Usage
• Application:
– Error: Cannot save Order
• Service:
– Error: IO Exception
• OS:
– Error: Disk is full
What’s special?
• Familiar diagnostic challenges– Already solved on premises
• Massively scalable– No request affinity
– Unpredictable application topology
• Where do the logs go?!– Centralised Logging approach
What you need
• Hosted Service:
– Compute capacity within Windows Azure
• Storage Account:
– Storage capacity within Windows Azure
• Table
• Blobs
Windows Azure Diagnostics
• Each Role– Configurable Diagnostics Monitor– Each Instance inherits configuration
Instances
Role
Hosted Service My Azure App
Web Role
IN_0 IN_1
Worker Role
IN_0
Example Trace Points
• Application– .net application Tracing– custom
• Files written via nLog, log4net etc
– Windows Event Log
• Service– IIS Logs– IIS Failed Request Logs– Azure Diagnostics Infrastructure Logs
• Metalog
– Performance Counters
• Operating System– Windows Event Log– Custom (any known file log)
Configuration
• Set options on types– Directories– Logs– Performance Counters
• Storage Options– Some types allow a configurable destination
• Transfer Period• Maximum Buffer Size
Transfer
• Two distinct methods of transfer
– Same underlying result
• On Demand Transfer
• Scheduled Transfer
Output formats
Type Description Destination
Trace With Trace Listener Table WADLogsTable
IIS Logs W3svc format Blob
Windows Event Logs Table WADWindowsEventLogsTable
Windows Performance Counters
Table WADPerformanceCountersTable
Custom Logs File based Blob
Crash Dump Blob
Diagnostic Infrastructure Log
Metalog Table WADDiagnosticInfrastructureLogsTable
Methodologies
• .net Tracing
– Add Trace Listener
– Configure WAD
– View Result:
Logging per Instance
• Logs on Instance Basis:
– RoleInstance:
• deployment(526).MultipleTraceSources.Host_IN_0
– DeploymentId.Role.Instance
• Allows for per instance diagnosis
Configure Windows Azure Diagnostics
• Setup Storage Account
• Create Role Instance Diagnostics Manager
• Get and update a configuration from Manager
• Set Current Configuration
Example Code
Extended Code
Verbosity
• Code is building XML WADCFG
– Structure based on XML Schema
• Not necessarily intuitive
Fluent Diagnostics
• Attempts to curtail verbosity
Windows Azure Role Lifecycle
• Each Role runs – OnStart
– Run
– OnStop
• Setup Diagnostics OnStart – always correct for that role
• But if you change the config, another OnStartwill undo your changes
Change at Runtime
• WAPPSCmdlets
PowerShell cmdlets available at wappowershell.codeplex.comExample courtesy of michaelwasham.com
Diagnostics Lifecycle
OnStart Run Redeploy OnStop OnStart Run
Diagnostics A
Diagnostics B
Diagnostics A
Scenario A
Diagnostics Lifecycle
OnStart RunChange Instance
CountOnStart Run
Diagnostics A
Diagnostics B
Diagnostics A
Scenario B
Diagnostics Lifecycle
• Why do we see this behaviour?
– Increase Instance Count
– New Instance added by Fabric
– Instance goes through OnStart!
Fluent Diagnostics
• Allows you to use programmatic approach still
– Uses Marker XML
– Prevents further updates for a deployment
Diagnostics Lifecycle
OnStart RunChange Instance
CountOnStart Run
Diagnostics A
Diagnostics B
Diagnostics A
Fluent Diagnostics Scenario B
Marker File Added
How to view Diagnostics
• Raw in Tables, as shown before.
• Cerebrata Azure Diagnostics Manager
Q&A
• Many thanks.
• Check out my blog:http://blog.bareweb.eu
• Questions and Answers session