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)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM