0 SQL Server監控清單

2022-02-14 18:04:18 字數 3448 閱讀 4906

資料庫伺服器的監控可大致分為兩類:

(1) 狀態監控:資料庫伺服器有沒有在健康地執行?

(2) 效能監控:健康執行的同時,有沒有效能問題?可不可以更快些?

.伺服器

1.狀態監控

(1) 伺服器是否可訪問?

(2) 資料庫服務是否啟用?

(3) 作業系統事件日誌中的錯誤或告警

(4) 磁碟可用空間

2.效能監控

(1) io壓力

(2) 記憶體使用

(3) cpu使用

(4) 網路頻寬占用

這1,2,3,4是按照容易出現瓶頸的順序排列的,由於磁碟的讀寫速度限制,通常io是最容易出現瓶頸的地方,我們所做的很多優化,也都是針對io的,比如:索引優化,讀寫分離等等。

.資料庫

1.狀態監控

(1) 資料庫可否開啟 (資料庫狀態)

(2) sql server/sql server agent錯誤日誌中的錯誤或告警

(3) 資料庫/檔案組可用空間

(4) sql agent 作業執行狀態

(5) 資料庫備份有沒有成功

(6) 資料庫還原測試的結果

(7) 資料庫一致性檢查的結果 (dbcc checkdb)

以下幾條狀態監控,通常需要和系統平均值/基線值比較才有意義,否則沒有告警的標準。

(8) 連線數、請求數、事務數、執行緒數

(9) 資料庫/檔案/表的大小

(10) 表使用、行數

2.效能監控

(1) 有沒有長時間執行的查詢 (一般指沒有被任何請求阻塞,效率很差的查詢)

(2) 有沒有被阻塞的查詢 (可能單獨執行很快,但和別的請求一起,由於有鎖等待,耗時很長)

(3) 有沒有死鎖 (開發人員/使用者口中說的」死鎖」 通常是阻塞/等待,資料庫死鎖通常很少讓使用者感覺到等待,一般是請求被中斷,因為被kill掉了)

(4) 有沒有等待 (一般指各種資源的等待,等待和阻塞的交集就是鎖等待)

(5) 有沒有缺失的/未被使用的/效率不高的索引,以及索引碎片

(6) 有沒有過期的統計資訊

(7) 有沒有資料庫檔案的爭用 (比如:日誌檔案,tempdb爭用)

(8) 有沒有消耗cpu較大、io讀寫較多的查詢 (通常io消耗大的,也就是記憶體消耗大的查詢)

.其他

(1). 如果有部署高可用的策略,會有映象、複製、日誌傳送、集群狀態的監控;

(2). 某些業務資料有嚴格的一致性要求,業務資料的校驗,最好也做在監控的告警裡面;

(3). 對於資料庫/例項的選項、引數設定,鏈結伺服器等物件的可用性,通常在每年/每季度的health check裡檢查過就可以了,如果不放心,當然也可以放到監控的告警中來。

.如何部署監控?

1.不要選擇依賴性的指令碼/命令

以監視服務是否啟動為例,指令碼如下:

(1) sql擴充套件儲存過程

--

引數1: querystate 檢查服務狀態/ start啟動服務/ stop停掉服務

--引數2: 服務名

exec master.dbo.xp_servicecontrol '

querystate

', '

mssqlserver

'exec master.dbo.xp_servicecontrol '

querystate

', '

sqlserveragent

'exec master.dbo.xp_servicecontrol '

querystate

', '

sqlbrowser

'exec master.dbo.xp_servicecontrol '

querystate

', '

netlogon

'exec xp_servicecontrol n'

stop

', n'

sqlserveragent

'exec xp_servicecontrol n'

start

',n'

sqlserveragent

'

(2) sql呼叫作業系統命令

if

object_id('

tempdb..#tmp_started_services

') is

notnull

drop

table

#tmp_started_services

create

table #tmp_started_services (started_services varchar(255

))insert

into

#tmp_started_services(started_services)

exec master..xp_cmdshell '

net start

'select

*from

#tmp_started_services

where

ltrim(rtrim(started_services)) like

'sql%

'

如果sql server沒啟動,這些指令碼根本就跑不了,又怎麼監控呢?

也許,又會有這麼乙個思路,伺服器正常時,發出郵件通知,如果沒有收到郵件就說明伺服器不正常了,可如果有很多伺服器時,怎麼知道誰沒發郵件呢?

2.部署在專門的一台/多台監控機上

伺服器狀態監控,不管使用第三方工具,還是使用自定義指令碼,都建議部署在專門的監控機上,遠端監視目標機器。

因為:如果伺服器down了或者故障了,可能本機的程式/指令碼就無法執行了,又怎麼監控呢?

最後

基於上面的監控列表,還需要將監測工作自動化,並在發現問題時告警。

0 SQL Server監控清單

一.伺服器 1.狀態監控 1 伺服器是否可訪問?2 相應的資料庫服務是否啟用?3 作業系統事件日誌中的錯誤或告警 4 磁碟可用空間 伺服器狀態監控,不管使用第三方工具,還是使用自定義指令碼,都建議部署在專門的一台 多台監控機上,因為如果伺服器down了或者故障了,任何本機的程式 指令碼可能就無法執行...

SQL Server監控清單

一.伺服器 1.狀態監控 1 伺服器是否可訪問?2 相應的資料庫服務是否啟用?3 作業系統事件日誌中的錯誤或告警 4 磁碟可用空間 伺服器狀態監控,不管使用第三方工具,還是使用自定義指令碼,都建議部署在專門的一台 多台監控機上,因為如果伺服器down了或者故障了,任何本機的程式 指令碼可能就無法執行...

免費的SQL Server監控工具

sql 資料庫監控 研發實踐 檢測和監控網路上的sql伺服器。spiceworks公司的免費的sql server監控工具來檢視定製的部件和訪問伺服器的健康細節。spiceworks還在自動檢索網路上的sql資料庫 sql server 2005及更高版本 的資訊。衛生檢查,每分鐘執行一次,以確保資...