天天看點

1. SQL Server伺服器監控實作方法

一. 第三方工具;

二. 性能螢幕可以用來做監控嗎?

對于伺服器的監控,和對資料庫的監控,很少有合二為一的工具,如果有的話,一般是付費軟體,或者自行開發的工具。

是以如果不想購買軟體,也不想花精力去開發的話,可以結合一些免費/開源的工具、自定義腳本,來完成對資料庫伺服器的監控。

一. 第三方工具

1. 開源工具

比如:CACTI,Nagios,Zabbix等等,除了主機外,對于網絡上的其他裝置,比如路由器等也可以一并監控。

以CACTI為例(CACTI可以在windows下安裝),伺服器監控的圖示:

(1) 裝置狀态

1. SQL Server伺服器監控實作方法

(2) SQL Server服務狀态

1. SQL Server伺服器監控實作方法

(3) 伺服器事件日志

1. SQL Server伺服器監控實作方法

(4) 磁盤空間

1. SQL Server伺服器監控實作方法

(5) 記憶體使用

1. SQL Server伺服器監控實作方法

(6) CPU使用

1. SQL Server伺服器監控實作方法

(7) 網卡使用

1. SQL Server伺服器監控實作方法

(8) 交換機流量

1. SQL Server伺服器監控實作方法

從圖檔中可以發現,伺服器狀态監控沒問題,不過對于伺服器性能的監控,僅僅是在磁盤空間/記憶體/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監控選項

1. SQL Server伺服器監控實作方法

(2) 對性能計數器支援的很直接

1. SQL Server伺服器監控實作方法

關于性能監控,很多人可能想過在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,如圖:

1. SQL Server伺服器監控實作方法

如果要自動化的話,可以用指令行工具typeperf,功能和圖形界面是一樣的。

2. 如何分析性能計數器日志?

(1) 直接檢視日志,可以借助perfmon/excel/PAL等工具來分析,但這些工具隻能幫忙生成圖表,不能做自動化,不能做告警;

(2) 導入資料庫做分析,可使用 Log Parser/SSIS等任何能自動把性能計數器日志導入資料庫的工具,然後利用SQL 語句來做分析,既然是監控,那就得實時點,導入的頻率得高些。

第三方工具通常都有頁面告警,短信,郵件等等告警方式,如果自己做開發,告警這塊也需要自己來實作,通常資料庫這端都是用郵件來告警。

設定告警的閥值需要有系統的性能基線,如果不是很确定的話,就設的高一點,至少性能日志已經被記錄了,追溯也不是問題。

小結

伺服器監控推薦使用開源工具,如果對于開源工具的性能監控不太滿意,可以:

(1) 擴充開源工具的插件 (如果有預算,也許可以選擇付費工具);

(2) 自行開發,要麼基于性能計數器日志 (适合隻會資料庫開發的人),要麼基于WMI接口 (個人覺得基于WMI更簡便,但得有點程式設計基礎,起碼知道程式/腳本裡怎麼去調用WMI)。

繼續閱讀