SQL Server数据库监控 - 如何告警

发表于:2014-10-14 11:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张骞    来源:51Testing软件测试网采编

  常用的告警方式大致有:短信、邮件、应用程序 (beep提示,图标提示,升窗提示等),可是不能一直坐在电脑前看着应用程序,或者用脚本部署监控,根本没有程序界面,所以通常用短信、邮件两种方式告警。
  一. 告警方式
  1. 短信
  用程序发短信的方式一般有这两种:
  (1) 硬件
  需要1张SIM卡,1个SIM卡读卡设备 (比如:短信猫),然后把设备连接到电脑,应用程序根据设备的软件接口,传参并发送短信。记得把SIM卡设备放在信号好,无干扰的地方;
  如果有大量短信要发,1张SIM卡是不够用的,而且发送过度频繁,可能被运营商视为恶意短信,把SIM卡号加入黑名单,那么就需要多张SIM卡甚至多个读卡设备。
  显示号码为当前SIM卡号码,大多供应商都支持DLL、HTTP等多种接口,当然也可以基于接口二次开发。
  DLL接口方法参考:SmsManager.sendTextMessage(…)
  (2) 第三方短信接口
  有多种接口形式提供,比如:Web Service形式,HTTP形式,还有邮件接口:往1380013900@xxx.com发个短小的邮件,这个邮件会以短信的形式转发到手机上,等等。只要往接口传参数,告诉它发给谁,发什么内容,就可以了。
  显示号码为某个SIM卡号码,或者为固定号码 (如:106开头的),这取决于短信平台和运营商的实现方式,因为运营商发短信是不要卡的,直接可以发给目标号码,而且可以显示为固定的某个号码。
  Web Service接口地址参考:http://123.456.789.000/SmsManager.asmx?wsdl
  Http接口地址参考:http://api.abc.xyz/sms/send.html
  2. 邮件
  凡是实现了SMTP协议的组件,都可以发送邮件。
  在Windows环境下,有系统自带的组件CDO (Collaboration Data Objects,以前叫OLE Messaging 或者Active Messaging),是MAPI库的COM封装。不管是自己开发程序,使用VBS,还是SQL Server的SQL Mail/Database Mail,通常都是调用的这个组件。
  SMTP协议要求的参数大致如下:
  SMTP Hostname: SMTP服务器名,如mail.test.com或者IP
  SMTP Port: SMTP服务端口,25
  SMTP Username: 通过SMTP发送邮件用来验证的用户名, 如果不要求身份验证,留空
  SMTP Password: 通过SMTP发送邮件用来验证的密码, 如果不要求身份验证,留空
  二. 选择告警方式并配置
  1. 短信
  不管是选择硬件,还是第三方接口,都需要一个程序来调用,可以是监控工具、脚本、甚至数据库
  (1)  监控工具/应用程序中,通常都留有短信接口的配置,配置接口地址即可;
  (2) 在脚本中配置,Windows环境通常要借助OLE Automation;
  OLE Automation后来改名叫Automation,是Windows上基于COM,用于脚本语言实现进程间通讯的机制,脚本如:VBS, SQL, Powershell,不包括BAT(BAT可以调用VBS)。
  SQL Server中使用OLE Automation调用Web Service短信接口如下:
exec sp_configure 'show advanced options', 1;
RECONFIGURE;
exec sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE;
declare @text_message nvarchar(180)
,@phone_number nvarchar(15)
,@soap_object  int
,@status       int
,@output       nvarchar(255)
set @text_message = N'Testing Mail'
set @phone_number = N'138000139000'
--Create MSSOAP.SoapClient object
exec @status=sp_OACreate 'MSSOAP.SoapClient', @soap_object out
--SmsManager is Web Service name
exec @status = sp_OAMethod @object, 'mssoapinit', null, 'http://123.456.789.000/SmsManager.asmx?wsdl', 'SmsManager'
--SendTextMessage is webservice method
exec @status = sp_OAMethod @object, 'SendTextMessage', @output OUT, @phone_number, @text_message
if @status <> 0
begin
exec sp_OAGetErrorInfo @soap_object
select @soap_object
end
else
begin
select @output
end
--Destroy MSSOAP.SoapClient object
exec @status = sp_OADestroy @soap_object
GO
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号