设为首页 收藏本站
查看: 1098|回复: 0

[经验分享] Nginx不仅可以作为强大的web服务器,而且nginx还可以按多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。 Nginx的负载均衡通过ng

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-23 10:24:21 | 显示全部楼层 |阅读模式
sql server定时任务监控

由于原来一直在用的zabbix监控系统,没有监控业务中数据是否运行(且设备端口有限,没办法进行端口检测),可以监控磁盘,应用(打开情况),所以做了以下设计。

可以进行分组检测,设置检测是否可用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
USE [checkTheServer]
--检测联通性,并获取设备上的特定参数,防止错误,导致定时任务中断。
GO

/****** Object:  StoredProcedure [dbo].[sp_checkconnect4]    Script Date: 09/15/2015 19:15:06 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

Create proc [dbo].[sp_checkconnect4]
@servername varchar(50),@ip varchar(50),@dbuser varchar(50),@passwd varchar(50),@db varchar(50),@tab varchar(50),
@local_time datetime output,
@folio_time datetime output,
@now_time datetime output,
@rtn int output
as  
DECLARE @sqls nvarchar(4000)
begin try  
  set @sqls='select top 1 @a=local_time,@aa=folio_time,@aaa=GETDATE() from openrowset(''SQLOLEDB'','''+@ip+''';'''+@dbuser+''';'''+@passwd+''','+@db+'.dbo.'+@tab+') order by ID desc;'
  exec sp_executesql @sqls,N'@a datetime output,@aa datetime output,@aaa datetime output',@local_time output,@folio_time output,@now_time output
  set @rtn=1
end try  
begin catch
  set @rtn=@@ERROR
  insert into dbo.willSendMail values(@servername+'连接失败',ERROR_NUMBER())
end catch
GO




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
--版本3
USE checkTheServer
GO
DECLARE @serverid int,@servername varchar(50),@ip varchar(50),@dbuser varchar(50),@passwd varchar(50),@db varchar(50),@tab varchar(50)
DECLARE @time_lag int,@report_time int,@checktime datetime,@checktime_var varchar(20)
DECLARE @sqls nvarchar(4000),@rtn int,@folio_time datetime,@local_time datetime,@now_time datetime,@jobs int,@log_updown int,@logfile int,@telblack int

DECLARE contact_cursor CURSOR FOR
select serverid,servername,ip,dbuser,passwd,db,tab,checktime,time_lag,report_time from dbo.servermessage where enable='1'and servergroup='1'

--清空发邮件的表
truncate table dbo.willSendMail
   
OPEN contact_cursor
FETCH NEXT FROM contact_cursor
INTO @serverid,@servername,@ip,@dbuser,@passwd,@db,@tab,@checktime,@time_lag,@report_time
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN

  exec sp_checkconnect4 @servername,@ip,@dbuser,@passwd,@db,@tab,@local_time output,@folio_time output,@now_time output,@rtn output
  if(@rtn=1)
  begin
    set @checktime_var=convert(varchar(20),@checktime,120)
    -- Jobs
    set @sqls='select @b=count(*) from openrowset(''SQLOLEDB'','''+@ip+''';'''+@dbuser+''';'''+@passwd+''','+@db+'.dbo.jobs);'
    exec sp_executesql @sqls,N'@b int output',@jobs output
    -- log_updown
    set @sqls='select @c=count(*) from openrowset(''SQLOLEDB'','''+@ip+''';'''+@dbuser+''';'''+@passwd+''','+@db+'.dbo.log_updown) where success<>''1''and fcode<>''chgdate''and fdate>='''+@checktime_var+''';'
    exec sp_executesql @sqls,N'@c int output',@log_updown output
    -- logfile
    set @sqls='select @d=count(*) from openrowset(''SQLOLEDB'','''+@ip+''';'''+@dbuser+''';'''+@passwd+''','+@db+'.dbo.logfile) where fdt>='''+@checktime_var+''' and fmessage like ''%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%'';'
    exec sp_executesql @sqls,N'@d int output',@logfile output
    -- telblack
    set @sqls='select @f=count(*) from openrowset(''SQLOLEDB'','''+@ip+''';'''+@dbuser+''';'''+@passwd+''','+@db+'.dbo.telblack) where fdt>='''+@checktime_var+''';'
    exec sp_executesql @sqls,N'@f int output',@telblack  output
    --
    if(@jobs!=0)
    begin
      insert into dbo.willSendMail values(@servername+'有未处理的命令列表(数量)',@jobs);
    end
    if(@log_updown!=0)
    begin
      insert into dbo.willSendMail values(@servername+'有未处理的升降级日志(数量)',@log_updown);
    end
    if(@telblack!=0)
    begin
      insert into dbo.willSendMail values(@servername+'有未处理的无码长话(数量)',@telblack);
    end
    if(@logfile!=0)
    begin
      insert into dbo.willSendMail values(@servername+'有操作日志(数量)',@logfile);
    end

    if (abs(DATEDIFF(minute ,@local_time,@now_time))>@time_lag)
    begin
      insert into dbo.willSendMail values(@servername+'插入时间与系统时间间隔过大(分钟)',DATEDIFF(minute ,@local_time,@now_time));
    end

    if (abs(DATEDIFF(minute ,@folio_time,@local_time))>@report_time)
    begin
      insert into dbo.willSendMail values(@servername+'PBX时间错误(分钟)',DATEDIFF(minute ,@folio_time,@local_time));
    end

    insert into record(serverid,servername,folio_time,local_time,jobs,log_updown,logfile,telblack)values(@serverid,@servername,@folio_time,@local_time,@jobs,@log_updown,@logfile,@telblack);
    -- This is executed as long as the previous fetch succeeds.
  end
  FETCH NEXT FROM contact_cursor
  INTO @serverid,@servername,@ip,@dbuser,@passwd,@db,@tab,@checktime,@time_lag,@report_time
END
CLOSE contact_cursor
DEALLOCATE contact_cursor
  if((select top 1 1 from dbo.willSendMail)=1 )
  begin
    insert into dbo.willSendMail values('邮件已发送',0);
     
    --可以再邮件中以html的方式显示表格
    set @Sqls=(select '<tr><th>'+CAST(content AS varchar) + '</th><th>'+ CAST(status AS varchar) +'</th></tr>' from dbo.willSendMail FOR XML PATH(''))
    set @Sqls='<table border="1" cellspacing="0" bordercolor="black">'+REPLACE(REPLACE(@Sqls,'&gt;','>'),'&lt;','<')+'</table>'
     
    EXEC msdb.dbo.sp_send_dbmail @profile_name='148-alarm',
                             @recipients='13662580487@163.com',  
                             @subject= '例行检查',  
                             @body = @Sqls,
                             @body_format = 'HTML';
  end
GO



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-142529-1-1.html 上篇帖子: SQL Server 统计信息维护策略的选择 下篇帖子: Sql Server 2014 双节点群集无法切到其中一节点解决 web服务器 而且 健康
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表