Azure Diagnostics doesnt transfer IIS logs to blob storage -
ok, have been banging head on 1 while, figure ask if has encountered before.
my configuration , setup below. when deployed staging environment. know logging happening because enabled rdp , able go in , can see iis logs created. not transfer blob storage, though other diagnostics logs without problem.
in infrastructure logs can see following error, i'm told proxy , not relevant:
winhttpgetproxyforurl(http://mystorage.blob.core.windows.net) failed error_winhttp_autodetection_failed (12180)
the other warning see in event viewer is:
-<event> -<system> <provider name="microsoft-windows-iis-w3svc-wp"guid="{670080d9-742a-4187-8d16-41143d1290bd}"eventsourcename="w3svc-wp"/> <eventid qualifiers="32768">2283</eventid> <version>0</version> <level>3</level> <task>0</task> <opcode>0</opcode> <keywords>0x80000000000000</keywords> <timecreated systemtime="2011-02-18t22:46:34.000z"/> <eventrecordid>266</eventrecordid> <correlation/> <execution processid="0"threadid="0"/> <channel>application</channel> <computer>rd00155d3273b5</computer> <security/> </system> -<eventdata> <data name="failurecount">3</data> <data name="minutes">5</data> <data name="directory">\\?\c:\resources\directory\345345kjh325kj5432452345.mywebrole.diagnosticstore\failedreqlogfiles\web\w3svc1273337584\</data> <binary>03000780</binary> </eventdata> </event>
this simple wcf application running webrole. config looks this:
<system.diagnostics> <sources> <source name="system.servicemodel" switchvalue="information,activitytracing" propagateactivity="false"> <listeners> <add type="microsoft.windowsazure.diagnostics.diagnosticmonitortracelistener, microsoft.windowsazure.diagnostics, version=1.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" name="modellistener"> <filter type="" /> </add> </listeners> </source> <source name="system.servicemodel.messagelogging" switchvalue="information" propagateactivity="false"> <listeners> <add type="microsoft.windowsazure.diagnostics.diagnosticmonitortracelistener, microsoft.windowsazure.diagnostics, version=1.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" name="messagelistener"> <filter type="" /> </add> </listeners> </source> </sources> <sharedlisteners> </sharedlisteners> <trace autoflush="true" indentsize="3"> <listeners> <add type="microsoft.windowsazure.diagnostics.diagnosticmonitortracelistener, microsoft.windowsazure.diagnostics, version=1.0.0.0, culture=neutral, publickeytoken=31bf3856ad364e35" name="tracelistener"> <filter type="" /> </add> </listeners> </trace> </system.diagnostics> ... ... <system.webserver> <modules runallmanagedmodulesforallrequests="true" /> <tracing> <tracefailedrequests> <add path="*"> <traceareas> <add provider="asp" verbosity="verbose" /> <add provider="aspnet" areas="infrastructure,module,page,appservices" verbosity="verbose" /> <add provider="isapi extension" verbosity="verbose" /> <add provider="www server" areas="authentication,security,filter,staticfile,cgi,compression,cache,requestnotifications,module" verbosity="verbose" /> </traceareas> <failuredefinitions verbosity="warning" statuscodes="400-599" /> </add> </tracefailedrequests> </tracing> </system.webserver>
i have changed listeners few different ways, same outcome. dont think thats problem, im open suggestions
the code in webrole looks this:
public override bool onstart () { // enable azurelocalstoragetracelistner, uncomment relevent section in web.config diagnosticmonitorconfiguration config = diagnosticmonitor.getdefaultinitialconfiguration(); //windows performance counters list<string> counters = new list<string>(); counters.add(@"\processor(_total)\% processor time"); counters.add(@"\memory\available mbytes"); counters.add(@"\tcpv4\connections established"); counters.add(@"\asp.net applications(__total__)\requests/sec"); counters.add(@"\network interface(*)\bytes received/sec"); counters.add(@"\network interface(*)\bytes sent/sec"); foreach (string counter in counters) { performancecounterconfiguration counterconfig = new performancecounterconfiguration(); counterconfig.samplerate = timespan.fromminutes(1); counterconfig.counterspecifier = counter; config.performancecounters.datasources.add(counterconfig); } config.performancecounters.scheduledtransferperiod = timespan.fromminutes(1); //windows event logs config.windowseventlog.datasources.add("system!*"); config.windowseventlog.datasources.add("application!*"); config.windowseventlog.scheduledtransferperiod = timespan.fromminutes(1); config.windowseventlog.scheduledtransferloglevelfilter = loglevel.error; //azure trace logs config.logs.scheduledtransferperiod = timespan.fromminutes(1); config.logs.scheduledtransferloglevelfilter = loglevel.error; //crash dumps crashdumps.enablecollection(true); //iis logs //this added in desperation move has not made difference or without directoryconfiguration directory = new directoryconfiguration(); directory.container = "wad-tracefiles"; directory.directoryquotainmb = 10; directory.path = roleenvironment.getlocalresource("applocalstorage.svclog").rootpath; config.directories.datasources.add(directory); //end desperation move config.directories.scheduledtransferperiod = timespan.fromminutes(1); //infrastructure logs config.diagnosticinfrastructurelogs.scheduledtransferperiod = timespan.fromminutes(1); config.diagnosticinfrastructurelogs.scheduledtransferloglevelfilter = loglevel.error; diagnosticmonitor.start("diagnosticsconnectionstring", config); // information on handling configuration changes // see msdn topic @ http://go.microsoft.com/fwlink/?linkid=166357. roleenvironment.changing += new eventhandler<roleenvironmentchangingeventargs>(roleenvironment_changing); // code necessary use cloudstorageaccount.fromconfigurationsetting cloudstorageaccount.setconfigurationsettingpublisher((configname, configsetter) => { configsetter(roleenvironment.getconfigurationsettingvalue(configname)); roleenvironment.changed += (sender, arg) => { if (arg.changes.oftype<roleenvironmentconfigurationsettingchange>() .any((change) => (change.configurationsettingname == configname))) { if (!configsetter(roleenvironment.getconfigurationsettingvalue(configname))) { roleenvironment.requestrecycle(); } } }; }); return base.onstart(); }
the diagnosticsconnectionstring
set of tables , containers created , populated properly.
any appreciated. in advance.
this known issue in azure sdk 1.3. please go through blog post workaround: http://robindotnet.wordpress.com/2011/02/16/azure-toolssdk-1-3-and-iis-logging/
Comments
Post a Comment