2

Reading MSDN我得到的印象是,用於存儲Azure診斷的帳戶被配置是這樣的:如何配置Azure診斷存儲帳戶?

<ConfigurationSettings> 
    <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" 
     value="DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey"/> 
</ConfigurationSettings> 

(設置名字是固定的「Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString」字符串)。但是,我也發現代碼段用於設置DiagnosticMonitor(從this questionuser Søren Randrup

<ConfigurationSettings> 
    <Setting name="DiagnosticsConnectionString" 
     value="DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey" /> 
</ConfigurationSettings> 
var dm = DiagnosticMonitor.GetDefaultInitialConfiguration(); 
dm.Logs.ScheduledTransferPeriod = TimeSpan.FromSeconds(5); 
dm.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose; 
DiagnosticMonitor.Start("DiagnosticsConnectionString", dm); 

(設置名稱爲)的開發人員選擇了一個字符串

這看起來令人困惑 - 我我覺得這是相同的設置,但不管什麼原因,不同的人配置它的方式不同

存儲帳戶在哪裏指定,爲什麼上面提到的兩個片段似乎用於同一個任務?

回答

4

DiagnosticsMonitor第一次發佈時(1.1或1.2 SDK,IIRC),它是從RoleEntryPoint(用戶代碼)啓動的。這有一些缺點,就是說,如果你的RoleEntryPoint崩潰了,它會把DM放下。當1.3 SDK發佈時,它改變了設計並啓動了DM作爲後臺啓動任務。這使DM可以在與代碼不同的進程中運行,因此不再容易被用戶代碼崩潰。 「Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString」是診斷角色插件中定義的設置(查看bin/plugins目錄)。

如果除了導入診斷插件並設置此連接字符串外,您將爲某些默認設置啓用診斷功能,但實際上沒有任何內容會傳輸到您的存儲帳戶進行分析。

所以,一個更完整的解決方案是:

  1. 啓用DM插件和一個有效的連接字符串設定爲一個Windows Azure存儲帳戶。
  2. 或者,在運行時,在您的RoleEntryPoint中,通過代碼強制性地配置監視器(使用腳本,ManageAxis,Windows Azure MMC,Cerebrata或其他工具)設置監視配置。

這會讓您的計數器,日誌,實際上傳輸到您的存儲帳戶。在這一點上,由你來解釋它。有些產品(例如ManageAxis和其他)爲您做了分析(圖表,自動縮放等),但您主要是自己查詢由DM生成的數據。

*我更喜歡這種方法,因爲我不喜歡在我的RoleEntryPoint中編寫此代碼,並且我有可以觀察和維護它的工具。

1

我相信這是Azure開發出來的東西......在早期,診斷並不是默認開始的 - 所以這解釋了舊的問題和答案。

在最新的API(1.4)中,我認爲你應該使用第一種方法並使用GetDefaultInitialConfiguration ... SetCurrentConfiguration來指定你想要監控的東西。