標籤:style blog http os io 使用 ar strong for
原文:1. SQL Server伺服器監控實現方法
對於伺服器的監控,和對資料庫的監控,很少有合二為一的工具,如果有的話,一般是付費軟體,或者自行開發的工具。
所以如果不想購買軟體,也不想花精力去開發的話,可以結合一些免費/開源的工具、自訂指令碼,來完成對資料庫伺服器的監控。
一. 第三方工具
1. 開源工具
比如:CACTI,Nagios,Zabbix等等,除了主機外,對於網路上的其他裝置,比如路由器等也可以一併監控。
以CACTI為例(CACTI可以在windows下安裝),伺服器監控的圖示:
(1) 裝置狀態
(2) SQL Server服務狀態
(3) 伺服器事件記錄
(4) 磁碟空間
(5) 記憶體使用量
(6) CPU使用
(7) 網卡使用
(8) 交換器流量
從圖片中可以發現,伺服器狀態監控沒問題,不過對於伺服器效能的監控,僅僅是在磁碟空間/記憶體/CPU/網路頻寬的使用量上面,沒有細緻的效能計數器資訊。
這些開源的工具,大多基於SNMP協議(Simple Network Management Protocol,簡易網路管理通訊協定),該協議用以監測串連到網路上的裝置狀態,對於裝置自身的詳細績效參數,通常需要安裝額外的外掛程式來完成(這也是unix的思想 ?),比如上面用到的syslog外掛程式,用於接收windows事件記錄;比如有人整合了snmptools外掛程式,用於接受windows效能計數器資訊。
2. 付費工具
不同工具,側重點也不一樣:
(1) 有的偏向主機監控,比如:MOM(Microsoft Operations Manager),SCOM(System Center Operations Manager,SCOM是MOM的升級版,就像lync是communicator的升級版一樣),whatsup gold;
(2) 有的偏向SQL Server資料庫監控,比如:Idera SQL Diagnostic Manager,SQL Sentry,Red-gate SQL Monitor;
(3) 有的是工具套件,不同功能選擇其中某一款,比如:Quest Spotlight,BMC Patrol(已改名為BMC Performance Manager)
這些Windows平台的工具,大多對效能計數器支援的很好,通常是基於WMI實現的。
WMI :Windows Management Instrumentation,Windows 管理規範,WMI允許通過一個公用的介面訪問多種作業系統構成單元,使用者可以使用工具軟體和指令碼程式,調用 WMI 管理本地和遠端電腦。
以sql monitor為例,伺服器監控的圖示:
(1) 有限的windows監控選項
(2) 對效能計數器支援的很直接
二. 效能監控器可以用來做監控嗎?
關於效能監控,很多人可能想過在SQL語句裡,把效能計數器的值一併讀出來,不過從許可權/安全的角度來說,SQL Server(應用程式)不應該也不能反向關心windows(作業系統)沒有分配給它的資源,所以在sys.dm_os_performance_counters裡能查到的也只是SQL Server自己的效能計數器值。
不過話說回來,有些DMV/SQL語句確實是可以查看作業系統資源使用方式的,僅限部分,應該是SQL Server自身做了實現,畢竟是自家的東西。
如果想要自己做基於效能計數器的監視,不會使用開發工具,只會寫點SQL語句,怎麼辦?
把效能計數器的日誌記錄儲存出來,匯入到資料庫裡用SQL語句分析,做警示。
1. 如何取效能計數器的值?
(1) 直接查看效能計數器的介面,僅限於查看,無法儲存日誌記錄;
(2) 事先定義一個檔案來儲存效能計數器,開啟效能監控器,裡面有這個功能,windows 2003叫counter logs,windows 2008叫data collector,
如果要自動化的話,可以用命令列工具typeperf,功能和圖形介面是一樣的。
2. 如何分析效能計數器日誌?
(1) 直接查看日誌,可以藉助perfmon/excel/PAL等工具來分析,但這些工具只能幫忙組建圖表,不能做自動化,不能做警示;
(2) 匯入資料庫做分析,可使用 Log Parser/SSIS等任何能自動把效能計數器日誌匯入資料庫的工具,然後利用SQL 陳述式來做分析,既然是監控,那就得即時點,匯入的頻率得高些。
第三方工具通常都有頁面警示,簡訊,郵件等等警示方式,如果自己做開發,警示這塊也需要自己來實現,通常資料庫這端都是用郵件來警示。
設定警示的閥值需要有系統的效能基準,如果不是很確定的話,就設的高一點,至少效能日誌已經被記錄了,追溯也不是問題。
小結
伺服器監控推薦使用開源工具,如果對於開源工具的效能監控不太滿意,可以:
(1) 擴充開源工具的外掛程式 (如果有預算,也許可以選擇付費工具);
(2) 自行開發,要麼基於效能計數器日誌 (適合只會資料庫開發的人),要麼基於WMI介面 (個人覺得基於WMI更簡便,但得有點編程基礎,起碼知道程式/指令碼裡怎麼去調用WMI)。
1. SQL Server伺服器監控實現方法