2014-01-23 39 views
0

我想在http請求內部到達IIS中的雲服務時看到它。我已經查看了相當多的信息,但不太清楚如何啓用它。例如,this site提供了一些有用的信息。繼該頁面中,我所實現的是這樣的:Azure雲服務:如何登錄IIS請求

  1. 連接到我的雲服務在Visual Studio和更新日誌 目錄轉會期爲1分鐘(我嘗試了不同的緩衝 大小,但都沒有效果)。

    enable iis log transfer


  2. 選定在Visual Studio中雲服務,並選擇以查看診斷數據。然後選擇IIS日誌,Windows Azure的日誌裏面 目錄:

    choose IIS logs


  3. 在這一點上,我得到一個404錯誤:

    404 error


所以,看來,雖然我已經成立了e接收日誌文件的可能性,它們實際上並未生成。如果我可以在不重新部署的情況下完成這一切,那將是理想的,但我認爲我可能需要在web.config中啓用某些內容 - 只是不知道該怎麼做。我已閱讀this answer中提供的鏈接,但無法找到我實際需要實現的功能,超出了我已完成的功能。任何指針都會很棒,如果更容易嘗試一種不同的(非IIS)方法,那麼很高興。

更新

因此,基於從MikeWo和kwill的有用的建議,我做了一些進一步的挖掘。首先,我確保存儲帳戶配置正確。它似乎是,首先是因爲這是我用於我的Web應用程序的用戶上傳文件正確啓動的相同帳戶,其次是因爲我啓用了基礎結構日誌,使用與IIS相同的過程並且日誌啓動了:

infrastructure logs

這使我認爲IIS日誌不是首先生成的。所以,我用遠程桌面連接到服務器。使用IIS管理器中,我第一次看到日誌服務器:

iis server logging

日誌文件的位置不存在。所以看起來這個文件夾還沒有被創建,並且在這裏沒有任何記錄。 接下來,我看了看記錄爲我的網站:

site logging

在這種情況下,有日誌文件,但他們從一個多月前。最後,我按照指示herehere希望我能夠提高網站的日誌記錄級別。

appcmd set config /section:httpLogging /dontLog:False 
appcmd.exe set config "<mysite>" -section:system.webServer/httpLogging /dontLog:"false" /commit:apphost 
appcmd.exe set config "<mysite>" -section:system.webServer/httpLogging /selectiveLogging:"LogAll" /commit:apphost 

命令成功,但這似乎沒有效果,我沒有看到任何更多的日誌出現在我的IIS文件夾中。

然後我嘗試:

appcmd set config /section:httpLogging /dontLog:False /commit:WEBROOT 

並得到:

Description: The configuration section 'system.webServer/httpLogging' cannot be read because it is missing a section declaration

我不是太熱衷於去服務器上更改配置文件,但我想,如果我得到了一些安慰,我沿着正確的道路走下去。另外,我意識到這些變化並不會持久,但我只是想看看我能否得到任何工作。

這些都是在Visual Studio中的診斷設置它使用相同的存儲帳戶作爲我的應用程序的正常工作:

enter image description here

很明顯的是,IIS診斷文件在正確的位置轉動起來要轉移到存儲:

enter image description here

kwill's answer最終讓我走上了正軌。 IIS文件夾確實存在,但最後一個日誌來自一個月前。我添加了一個虛擬文件,它出現在blob中。我將添加一個關於爲什麼IIS日誌不被更新的單獨問題。

回答

2

Mike的答案對於WAD故障排除非常有用。但是,對於您的特定問題,假設您根據Mike的答案正確配置了存儲帳戶,則只需稍等一會。 WAD將不會傳輸IIS日誌,直到IIS釋放對文件的鎖定,通常不會發生長達一個小時(直到IIS開始在一小時內使用新的日誌文件)。

如果您正在獲取診斷存儲中的其他數據(即,您看到日誌或perf計數器數據),那麼您知道存儲帳戶設置正確。

路徑應該是C:\ Resources \ Directory {DeploymentID}。{Rolename} .DiagnosticStore(請參閱here)。如果您將Infrastructure日誌寫入您的存儲帳戶,那麼您必須擁有該文件夾,因爲這是診斷配置和緩存文件的存在位置。

+0

非常感謝,我會鍛鍊耐心,看到我找到。 – acarlon

+0

我實際上在一夜之間啓用了日誌記錄,沒有任何東西出現。根據我的更新,我沒有多少運氣做了一些更多的分析。 – acarlon

+0

如果部署新的默認WebRole並將目錄傳輸週期設置爲1分鐘,則會發現C:\ Resources \ .DiagnosticStore文件夾確​​實存在,並且會生成IIS日誌並將其傳輸到存儲。如果該文件夾在您的部署中不存在,那麼只要打開診斷程序,該文件夾就是由來賓代理程序創建的,就會發生一些非常奇怪的事情。您可以查看C:\ config中的最新XML文件,並確保定義了DiagnosticStore本地存儲資源。 – kwill

2

我要檢查的第一件事是您爲診斷數據設置的存儲帳戶的連接字符串。如果看起來是正確的,我會做的下一件事是使用存儲工具來查看存儲帳戶以確保創建了WAD-IIS-LogFiles容器。這是Windows Azure診斷(WAD)放置文件的位置。您可以在Visual Studio的服務器資源管理器中使用存儲工具,或者免費使用Cerebrata Azure資源管理器(自從我爲Cerebrata工作以來,我有點偏頗,但有許多存儲工具可供選擇)。

我的猜測是,您正在獲取「ContainerNotFound」異常,因爲它不在存儲帳戶中。發生轉移時應該自動創建,所以這導致我認爲轉移不會發生,原因可能是缺少數據或配置不正確。

設置中的緩衝區大小就是您希望在單個本地實例中留出多少空間用於緩衝後來傳輸的數據。您可以爲所有診斷配置最大數量的空間。您需要確保此緩衝區有一個值,並且與您在其中放置的目錄配額的總和相同。在你的例子中,你有三個不同的目錄1024,但是總共有NONE緩衝區。這裏應該是3072。

正如@kwill在下面的註釋中指出的那樣,緩衝區是保留爲其傳輸日誌的本地指針,值爲None是可以接受的。對於那些可能無法通過評論來查看更正的人來添加編輯。

在傳輸期間,數據被複制到存儲帳戶。請注意,如果您的網站看到大量流量並生成大量診斷數據,那麼一分鐘的轉移時間非常積極。每分鐘傳輸大量數據確實會增加計算機上的資源負載,並佔用您分配的一些帶寬以將數據移動到存儲帳戶。

此外,您可以通過服務器瀏覽器插件,API或其他工具遠程更改診斷。當您這樣做時,API將值寫入BLOB存儲,實例上的WAD代理將輪詢該值以查看更改。這不應該要求重新部署,也不應該導致機器的回收;然而,WAD代理確實需要一點點時間才能找到變更。你可以用暴露它的工具來配置這個值(VS Explorer沒有)。

+2

有幾點需要澄清。 WAD配額非常混亂,沒有很好的記錄。目錄的緩衝區值只是爲記錄傳輸哪些文件而保留的本地空間量。這是您可以在WADDirectoriesTable中看到的數據。此設置與目錄配額大小無關,並且通常可能是非常小的值。此外,'none'或0的值本質上意味着「不設置顯式配額,只是使用OverallQuotaInMB中剩餘的空間」,因此none的值是有效的。 – kwill

+0

感謝您對目錄配額的更正和澄清! – MikeWo

+0

感謝您的詳細信息,我會做一些嘗試,看看我找到了什麼。我同意1分鐘過於激進,但我只是需要它追蹤特定請求,然後我會關閉。 – acarlon