(轉)TMG2010 日誌隊列

以下文檔轉自:http://blog.sina.com.cn/liqiang1359

最近發現TMG服務器硬盤空間使用量增長很快,看到.LLQ文件在增加。通過以下文章解決問題,在此轉發存檔並感謝作者。

 

用戶有時會觀察到 TMG 日誌隊列(Log Queue,擴展名爲 .LLQ)持續增長或 TMG 安裝目錄下 Logs 文件夾異常增長,如果TMG日誌隊列文件夾使用默認配置,則會導致C盤空間越來越少。伴隨而來的問題還有:TMG無法記日誌,無法生成報告。

這個問題往往發生在日誌格式改動、日誌文件夾改動、日誌保留時間改動等日誌配置操作之後。

問題分析

==========

1. 首先我們在 TMG 管理界面看到 日誌狀態(TMG 管理控制檯 à 日誌和報告界面 à 查看日誌狀態)是“連接中斷”,服務器狀態上有個感嘆號,並且有幾 MB 乃至數十 GB 的日誌隊列。這表示日誌無法正常記入日誌數據庫,都暫存在日誌隊列中。

clip_image001[4]

2. 同時,查看一下應用程序事件日誌,發現有許多 MSSQL$MSFW 的報錯,事件 ID 爲 17204 (或 1720X),報錯信息是無法打開 TMG 日誌文件如 ISALOG_20120101_FWS_000.mdf (系統找不到指定的文件)。

3. 出現以上兩種症狀的原因是:

1) TMG 日誌是記在本地的 SQL Express 數據庫裏,或者曾經記錄在本地 SQL Express 數據庫而後改爲記到遠程 SQL 服務器。

SQL Express 數據庫在磁盤上的文件名格式爲 ISALOG_YYYYMMDD_FWS_XXX.mdf 和 ISALOG_YYYYMMDD_WEB_XXX.mdf,比如 ISALOG_20120101_FWS_000.mdf 表示2012年1月1日的防火牆日誌文件。

2) 若由於某種原因,磁盤上的日誌文件如 ISALOG_20120101_FWS_000.mdf 已經不存在了(如意外刪除或者移動),但是 SQL Express 數據庫裏還有這個數據庫的記錄

3) MSSQL$MSFW 服務啓動時會檢查數據庫的完整性,當數據庫裏的記錄無法匹配到相應磁盤上的文件時,MSSQL$MSFW 這個服務就會出現異常。

4) MSSQL$MSFW 會將錯誤記錄在事件日誌裏,同時 MSSQL$MSFW 停止將新的日誌記錄到日誌數據庫裏,都暫存在日誌隊列中,日誌隊列不停增長,導致磁盤被佔滿。

解決方案

==========

刪除 SQL Express 裏 TMG 日誌數據庫的無效記錄即可解決問題。具體操作如下:

1. 以管理員身份啓動 命令行

· 連接到 TMG 本地日誌數據庫實例 MSFW: 運行命令 sqlcmd -S localhost\MSFW

· 運行命令 use master

· 運行命令 go

clip_image002[4]

· 運行命令 select name from sysdatabases

· 運行命令 go

· 上面幾個命令運行完後會看到當前 MSFW 實例下所有的數據庫名

clip_image003[4]

2. 需要刪除哪些記錄?

· 如果當前日誌已經記入遠程 SQL 服務器,那可以刪除本地所有記錄

· 如果當前日誌依然是記錄在本地 SQL Express 數據庫,請對照TMG日誌配置裏設置的日誌保留時間:TMG 管理控制檯 à 日誌和報告 à 日誌 à 配置 Firewall 日誌 和 配置 Web 代理日誌 à 打開”選項” ,在最下面可以看到日誌保留天數,默認是7天。

這樣,只要是這些天數以前的數據庫記錄都可以刪除。

clip_image004[4]

3. 刪除數據庫

· 假設我們要刪除 2011 年11 月全部數據庫,請運行如下命令(請注意最後的 % 表示通配符,匹配任意長度的任意字符串,TMG 日誌文件是以日期命名的,ISALOG_201111% 表示2011年11月全部TMG 日誌數據庫; 再比如若要刪2011年全部數據庫,要用 ISALOG_2011% )

select ‘drop database ‘ + name from sysdatabases where name like ‘ISALOG_201111%’

· 這個命令的輸出是多行 drop database ISALOG_201111%,類似下面圖中黃色框裏的。

· 您把這個輸出全部標記(右擊命令行窗口,選擇“標記”),然後再鼠標單擊一下,然後再右擊並選擇“粘貼”,就會看到類似下圖紅色框中的

· 再輸入命令 go,按回車,這時候這些選中的數據庫記錄就都會被刪除

clip_image005[4]

4. 驗證TMG 無效日誌數據庫是否還存在

· 運行命令 select name from sysdatabases

· 運行命令 go

· 上面幾個命令運行完後是輸出剩下的默認的幾個數據庫master, tempdb, model, msdb 以及有效日期以內(取決於日誌保留多少天,比如若是15天的話,就是15天以內的)的 TMG 日誌數據庫

clip_image006[4]

5. 檢查日誌隊列狀態

到TMG管理界面上看日誌隊列狀態(日誌和報表界面 à 查看日誌狀態),如果上述所有無效數據庫都被刪除,此時應該看到日誌隊列應該在減小,說明 MSSQL$MSFW 服務正在把日誌隊列中的數據記入日誌文件或者遠程SQL 服務器正在寫入日誌。最後日誌隊列大小會減爲0,或者在0到略大於0之間波動,表示日誌記錄恢復正常。

clip_image007[4]

在這裏也值得提一下,“日誌隊列(Logging Queue)”是 TMG 中新引入的一個特性,增強了日誌的魯棒性和容錯性,更多信息請參考:http://technet.microsoft.com/en-us/library/dd183731.aspx

微軟安全支持專家

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章