上节回顾:https://www.cnblogs.com/dotnetcrazy/p/11029323.html
4.6.6.SQLServer监控脚本示意:https://github.com/lotapp/BaseCode/tree/master/database/SQL/SQLServer
PS:这些脚本都是我以前用SQLServer手写的,参考即可(现在用MySQL,下次也整理一下)
之前写SQLServer监控系列文章因为换环境断篇了,只是简单演示了下基础功能,现在准备写MySQL监控相关内容了,于是补了下:
SQLServer性能优化之---数据库级日记监控:https://www.cnblogs.com/dunitian/p/6022967.html
在说监控前你可以先看下数据库发邮件:https://www.cnblogs.com/dunitian/p/6022826.html
应用:一般就是设置个定时任务,把耗时SQL信息或者错误信息通过邮件的方式及时预警
好处就太多了,eg:客户出错如果是数据库层面,那瞬间就可以场景重放(PS:等客户找会降低业绩)
以往都是程序的try+catch来捕获错误,但数据库定时任务之类的出错程序是捕获不到的,所以就需要数据库层面的监控了
PS:开发的时候通过SQLServer Profiler来监控
先说说本质吧:SQLServer2012的XEVENT机制已经完善,eg:常用的扩展事件error_reported就可以在错误的时候通过邮件来通知管理员了
PS:扩展事件性能较高,而且比较轻量级
PS:SQLServer的监控大体思路三步走:发邮件,事件监控,定时执行
4.6.6.1 发送邮件这个之前讲过,这边就再说下SQL的方式:
1.配置发件人邮箱这个配置一次即可,以后使用就可以直接通过配置名发邮件:
--开启发邮件功能 exec sp_configure 'show advanced options',1 reconfigure with override go exec sp_configure 'database mail xps',1 reconfigure with override go --创建邮件帐户信息 exec msdb.dbo.sysmail_add_account_sp @account_name ='dunitian', -- 邮件帐户名称 @email_address ='xxx@163.com', -- 发件人邮件地址 @display_name ='SQLServer2014_192.168.36.250', -- 发件人姓名 @MAILSERVER_NAME = 'smtp.163.com', -- 邮件服务器地址 @PORT =25, -- 邮件服务器端口 @USERNAME = 'xxx@163.com', -- 用户名 @PASSWORD = '邮件密码或授权码' -- 密码(授权码) GO --数据库配置文件 exec msdb.dbo.sysmail_add_profile_sp @profile_name = 'SQLServer_DotNetCrazy', -- 配置名称 @description = '数据库邮件配置文件' -- 配置描述 go --用户和邮件配置文件相关联 exec msdb.dbo.sysmail_add_profileaccount_sp @profile_name = 'SQLServer_DotNetCrazy', -- 配置名称 @account_name = 'dunitian', -- 邮件帐户名称 @sequence_number = 1 -- account 在 profile 中顺序(默认是1) go 2.发生预警邮箱同样我只演示SQL的方式,图形化的方式可以看我以前写的文章:
-- 发邮件测试 exec msdb.dbo.sp_send_dbmail @profile_name = 'SQLServer_DotNetCrazy', --配置名称 @recipients = 'xxx@qq.com', --收件邮箱 @body_format = 'HTML', --内容格式 @subject = '文章标题', --文章标题 @body = '邮件内容<br/><h2>This is Test</h2>...' --邮件内容效果:
3.邮件查询相关主要用途其实就是出错排查:
-- 查询相关 select * from msdb.dbo.sysmail_allitems --查看所有邮件消息 select * from msdb.dbo.sysmail_mailitems --查看邮件消息(更多列) select * from msdb.dbo.sysmail_sentitems --查看已发送的消息 select * from msdb.dbo.sysmail_faileditems --失败状态的消息 select * from msdb.dbo.sysmail_unsentitems --看未发送的消息 select * from msdb.dbo.sysmail_event_log --查看记录日记 4.6.6.2.监控实现会了邮件的发送,那下面就是监控了
1.图形化演示不推荐使用图形化的方式,但可以来理解扩展事件的监控
1.新建一个会话向导(熟悉后可以直接新建会话)
2.设置需要捕获的扩展事件
3.这边捕获的全局字段和左边SQL是一样的(截图全太麻烦了,所以偷个懒,后面会说怎么生成左边的核心SQL)