SQL Server監控報警架構_如何添加報警

 

1、數據庫郵件報警介紹

數據庫郵件是從SQL Server數據庫引擎發送電子郵件企業解決方案,使用簡單傳輸協議(SMTP)發送郵件。發送郵件進程與數據庫的進程隔離,所以可不用擔憂影響數據庫服務器。數據庫

數據庫郵件發送要求聯網,考慮數據庫服務器的安全性,不能將全部服務器的外網開啓;處理以下圖所示:一、監控服務器輪詢每一個SQL數據庫服務器;二、將獲取的數據在監控服務器上集中處理,三、而後經過監控服務器的郵件服務發送郵件。安全

 

2、郵件模塊處理

筆者發送的郵件內容以下所示,可分爲個部分:一、發送主體(發生者);二、發送主題;三、郵件內容(報警開頭,報警內容,報警解釋);四、郵件結尾,每一個部分的都須要HTML腳本的實現。服務器

2.1 發送主體

發送主體即爲郵件發送者,主體名稱在配置郵件服務的時候制定。在執行郵件發送時必需要指定發送,同時可經過msdb.dbo.sysmail_profile系統表查看郵件主體名稱;以下郵件測試,指定郵件發送主體SQLmonitor。ide

2.2 發送主題

發送主題可瞭解爲郵件的分類,現有主題分類與說明以下。測試

郵件主題字體

分類說明spa

JobError Monitor3d

做業失敗報警code

Block Monitororm

阻塞報警

SSISError Monitor

輪詢失敗報警

Identity Monitor

自增加報警

T_Space Monitor

大表監控報警

AG Monitor

AlwayOn高可用監控報警

LoginError Monitor

登陸失敗報警

Cpu Monitor

Cpu報警

Disk Monitor

磁盤報警

User Connection Monitor

用戶鏈接數報警

AbnormityLogin Monitor

異經常使用戶登陸報警

JobTimeout Monitor

做業超時報警

   

 

2.3 郵件內容

郵件內容由三部分組成,分別爲報警開頭,報警內容,報警解釋。

此三部分的內容可自定義格式,只要向M_MailFormart表添加以下數據:subject爲報警主題,可定位此爲哪一種郵件;Formart爲報警表格的列名,用逗號隔開;Desc爲報警解釋,若要換行用逗號隔開便可。

2.3.1 報警開頭

報警開頭包括三大塊;"DBA"大字體凸顯,郵件主題:經過集中處理時添加主題內容,監控時間:當前監控時間。

2.3.2 報警內容

報警內容主要格式是表格,表格包括列名稱和列內容。

列名稱:由M_MailFormart表的Formart字段控制。經過逗號分隔每一個列名稱。

列內容:列內容由報警處理腳本用戶自定義插入,須要注意的是,用戶自定義是要與列名稱統一 。

因爲表格是以HTML腳本控制,<tr></tr>表示表格的每行,<td></td>表示行中的列。例如要表示2行3列可書寫爲:

<tr><td>內容1</td><td>內容2</td><td>內容3</td></tr>

<tr><td>內容1</td><td>內容2</td><td>內容3</td></tr>

爲了郵件輸出的美觀,必須設置表格格式,筆者定義'<td width=100 valign=top style="border:solid lightgrey 1.0pt;border-top:none;height:18pt;font-size:8.0pt;font-family:微軟雅黑;color:black"></td>'

  • width=100valign=top: 寬度100;向上對齊
  • border:solid lightgrey 1.0pt; border-top:none: 1pt的灰色邊框,去除上邊框
  • height:18pt;font-size:8.0pt;font-family:微軟雅黑;color:black : 字體大小8pt,微軟雅黑,黑色

2.3.3 報警解釋

郵件解釋描述了報警機制,報警如何處理等方面,此定義經過M_MailFormart表指定,須要換行經過逗號指定便可。

2.4 郵件結尾

郵件結尾只是申明此郵件,已經寫定。

3、郵件發送列表

上述說明了將全部服務器的信息收集到監控服務器,而後統一分析處理,例如阻塞,做業失敗等等。將處理完成的信息插入到郵件發送配置表M_SendMailItem中。

表中記錄了郵件的各個信息,郵件報警經過獲取該表信息,肯定是否發送報警和報警內容等等。

字段名稱

字段解釋

MessageID

自增ID

MessageType

報警類型Error,Info

Message

報警內容

ServerName

服務器名稱

JobCode

做業code;若非做業則爲主題名稱

JobName

做業名稱;若非做業則爲主題名稱

Stepid

做業步驟;若非做業則NULL

CreateDate

新建時間

SendDate

發送時間

SendStatu

發送狀態:S成功 F未發送 W不發送

SubJect

郵件主題

SenderName

發送主體

Recipients

發送人

CopyRecipients

抄送人

BodyFormat

發送格式HTML

Importance

發送等級

ServerType

服務器類型

 

4、報警流程

做業名稱爲:[報警]JK136009YW 發送報警郵件;每分鐘執行一次,經過執行spb_M_SendMial發送報警,該存儲過程的處理流程以下所示。

5、如何添加郵件報警

5.1方式一:自定義郵件主題

(1)添加郵件格式M_MailFormart

若須要自定義郵件主題和列名稱以及郵件的描述,可向下表插入相關信息。

1 INSERT INTO [dbo].[M_MailFormart] ([Subject],[Formart],[Desc],[Inserttime])
2 VALUES (<Subject>,<Formart>,<Desc>,<Inserttime>)

(2)添加郵件內容M_SendMailItem

上述已經說明了郵件內容格式,M_MailFormart郵件格式表中的Subject內容必定要與M_sendmailitem郵件信息表的Subject對應上,且表格列名稱要與郵件內容對應上。

以下定義了四列,也要在M_MailFormart的ForMart字段定義四列。添加完後郵件就會發送。

 1 /*郵件內容定義*/
 2 DECLARE @body VARCHAR(MAX)
 3 SET @body=
 4   '<tr>'+
 5   '<td width=80 style="height:18pt"></td>'+
 6   '<td width=100  valign=top style="border:solid lightgrey 1.0pt;border-top:none;height:18pt;font-size:8.0pt;font-family:微軟雅黑;color:black">'+列1內容+'</td>'+
 7   '<td width=100  valign=top style="border:solid lightgrey 1.0pt;border-top:none;height:18pt;font-size:8.0pt;font-family:微軟雅黑;color:black">'+列2內容+'</td>'+
 8   '<td width=100  valign=top style="border:solid lightgrey 1.0pt;border-top:none;height:18pt;font-size:8.0pt;font-family:微軟雅黑;color:black">'+列3內容+'</td>'+
 9   '<td width=100  valign=top style="border:solid lightgrey 1.0pt;border-top:none;height:18pt;font-size:8.0pt;font-family:微軟雅黑;color:black">'+列n內容+'</td>'+
10   '<td width=80 style="height:18pt"></td>'+
11   '</tr>'
12 /*添加郵件記錄*/
13 INSERT INTO SQLMONITOR.dbo.m_sendmailitem
14             (messagetype,
15              message,
16              servername,
17              jobcode,
18              jobname,
19              stepid,
20              createdate,
21              senddate,
22              sendstatu,
23              subject,
24              sendername,
25              recipients,
26              copyrecipients,
27              bodyformat,
28              importance,
29              servertype)
30  SELECT 'Info',
31         @body,                 
32         '服務器名稱',
33         '主題內容',
34         '主題內容',
35         NULL,
36         GETDATE(),
37         NULL,
38         'F',
39         '主題內容',
40         'SqlMonitor',
41         REPLACE(Stuff((SELECT DISTINCT ';' + email
42                               FROM   dbdmonitor.dbo.memberlist m WITH (NOLOCK)
43                               WHERE  id > 9000AND m.issendmail = 'T'
44                               FOR XML PATH('')),1,1,''),'''','''''' ) AS recipients,
45         NULL,
46         'HTML',
47         'Normoal',
48         'P'
報警郵件內容腳本

如下爲用戶異常登陸自定義的郵件內容。

5.2方式二:經過做業失敗添加郵件

若以爲郵件自動格式添加麻煩,可經過已經有的格式添加郵件信息。以做業失敗爲主題的報警,可直接調用存儲過程spb_AutoGetJobError添加報警信息。

1 EXECUTE [dbo].[spb_AutoGetJobError]
2 @jobcode='TEST'--報警做業Jobcode,若沒有做業,則可隨便填寫。
3 ,@Messages='TEST'--報警內容
4 ,@Flag=0 --報警類型,默認0:Error 1:Warning 其餘:Info

測試結果以下圖所示:報警主題是做業失敗,報警格式是做業報警格式,在Error Message中顯示了須要報警的信息。

相關文章
相關標籤/搜索