之前对VBS的认知一直停留在MOM上,主要为了解放人力去监控服务器。做SA和DBA天天被服务器搞到头大是很郁闷的,尤其又是在业余级的机房。最近和同事研究了一下VBS,发现这东西真是强大。几乎现在我能想到需要实现的东西全部都可以用这个来做。用VBS好处第一:相对简单。有VB基础上手更快。第二:易于调试。直接可以修改源码然后双击运行,省了编译。第三:就是扩展很强大。这点我觉得很适合我,在用VBS之前,我一直被北京总部一个往全国各分支机构下发补丁包的网页搞得很烦。因为这网页有更新只能靠你去手动刷新浏览器,有时候手头的活儿多了也不可能一天天总盯着这网页来刷。最恶心的是发布更新包又很具有时效性,晚一阵更新可能就会对生产网络运行造成影响。于是我们想到了用VBS来做一个脚本来读这个网页,设定每5分钟,如果网页有更新就通过企业Email或者OA来发通知,目前来看效果不错。目前我有一个很罪恶的想法,就是利用VBS来做一些关键字的监控。嗯,我要做做实验。
今天来写一个用MOM监视服务器进程的VBS脚本,这个脚本的原理是监视当前服务器的进程表中是否有你想要监视的进程名,然后做一个判断,用这个脚本来监视JAVA小程序还有一些类似于ServerU的东西还是很好用的。
Const EVENT_TYPE_SUCCESS = 0
Const EVENT_TYPE_ERROR = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4
Const EVENT_TYPE_AUDITSUCCESS = 8
Const EVENT_TYPE_AUDITFAILURE = 16
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Calc.exe'")
If colMonitoredProcesses.count = 0 Then
CreateEvent 100,EVENT_TYPE_ERROR,"进程监视","进程意外退出!"
Else
CreateEvent 200,EVENT_TYPE_SUCCESS,"进程监视","进程正常!"
End If
Sub CreateEvent(intEventNumber,intEventType,strEventSource,strEventMessage)
Set objEvent = ScriptContext.CreateEvent()
objEvent.EventSource = strEventSource
objEvent.EventNumber = intEventNumber
objEvent.EventType = intEventType
objEvent.Message = strEventMessage
ScriptContext.Submit objEvent
End Sub
以上脚本中的Calc.exe就是你想要监控的进程名子,为了使这个脚本可以实现重用,你也可以把这个进程做为一个传入MOM的参数,这样就不必每次都复制一个同样的规则在MOM里边跑了。
欢迎交流。
之前写过VBS监控队列的脚本。在MOM里边监控队列和VBS可以说是大同小异的,只需要在开头定义好事件,然后在加上把事件传给MOM的函数就好。以下是例子,这个MOM脚本的目的是监控文件的文件数然后根据设定的阀值把相应事件传给MOM:
Const EVENT_TYPE_SUCCESS = 0
Const EVENT_TYPE_ERROR = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4
Const EVENT_TYPE_AUDITSUCCESS = 8
Const EVENT_TYPE_AUDITFAILURE = 16
Const CountMax = 1
Set fso=createobject("Scripting.FileSystemObject")
Set objFolder=fso.GetFolder("C:\I386\")
If objFolder.Files.count >= CountMax Then
CreateEvent 100,EVENT_TYPE_ERROR,"队列轮询","发生积压!"& objFolder.Files.count &""
Else
CreateEvent 200,EVENT_TYPE_SUCCESS,"队列轮询","正常!"
End If
Sub CreateEvent(intEventNumber,intEventType,strEventSource,strEventMessage)
Set objEvent = ScriptContext.CreateEvent()
objEvent.EventSource = strEventSource
objEvent.EventNumber = intEventNumber
objEvent.EventType = intEventType
objEvent.Message = strEventMessage
ScriptContext.Submit objEvent
End Sub
其中CountMax是阀值,这个阀值其实可以做为参数传进来,我会在以后说。而接下来的C:\I386是需要监控的文件夹路径。
欢迎交流~
DBA遇到的烦心事有一项就是清理SQL日志,尽管搭配MOM会有一个预警,但是也不能一天24小时都盯着MOM。于是学会观察数据库日志的增长速度来适时的收缩日志就很必要了。
DUMP TRANSACTION 数据库名称 with NO_LOG
BACKUP LOG 数据库名 with NO_LOG
DBCC SHRINKFILE (数据库日志逻辑名) with NO_INFOMSGS
with NO_INFOMSGS的目的是在DBCC SHRINKFILE运行之后不返回信息性消息。如果不加这句话,在执行查询之后会返回“DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。”
我直接把这组SQL查询做进了数据库维护计划,但是网上说经常DBCC会让数据库的查询效率下降,我还没有验证这个。
今天对于我来说真的是惊心动魄的一天。原因是由于昨天晚上给单位系统升级,在今天早上使用的时候被发现有一个致命的问题会影响到整个大连地区乃至半个辽宁省的进出口通关业务。我当时接到同事打来的电话当时脑袋就轰的一下,真有一种被大棒敲晕的感觉。于是手忙脚乱的解决问题,好在同事经验丰富发现了问题所在,于是全部生产环境电脑迅速第一时间重新打补丁,给每个业务现场轮流打电话通知。可以说我当时的脑袋就是一片空白,我知道如果发生事故就一定会是致命的。
我早知道承担这个升级的任务就是有很大风险的,因为升级一定是在业务非繁忙时段,一般是晚上到凌晨,但是升级之后又不能第一时间测试成功与否,因为我们这套系统是全国联网,只有在北京的机房全部完成升级之后才能恢复全国联网通信,而且我们各地只能等到第二天业务现场使用有问题才会反映,所以必须保证完全没有问题,否则就一定是大问题。
上班以来第一次感觉到头上顶着这么大的压力,当全部客户端重新打上新补丁之后便不停地给各个现场打电话询问系统是否好用,有没有什么问题,当得知这回没问题之后,悬着的一颗心终于落了地,一看表都要到九点半了。事后还是接到了大领导的电话,询问系统发生的问题,我们实话实说,好在领导没有发脾气。万幸万幸。
以后他妈的再升级的时候一定多掐自己脸几下,一定要清醒清醒。
很纠结今天要不要更新这篇文章,后来想想有些话不说出来实在对不起自己,说出来就算发泄了,发泄了也就舒服了。在单位中午吃完饭我习惯和同事去22楼打台球,其实我对台球本来开始也没啥兴趣,只是觉得中午无聊才玩玩,打得很烂,全当放松,直到我遇到了他,这个装逼犯。他可能觉得我打得不好,所以就不应该占台子不应该玩台球,一进台球室他第一件事就是要我手里的台球杆,还说是自己的杆。“把杆儿给我”,这是我连续两天两次听到他对我说的唯一一句话。操你大爷的,我和你又不熟,让你一次就像给你脸了似的,反而你还好大不乐意,好像我抱你家孩子跳井了。就算你台球玩得好,可你也装的太大了吧?一个游戏至于这么认真吗?更何况都是一个单位的同事。下午回到办公室,查了员工名册我才知道他叫什么在什么部门。反正我总相信那一条,人总有求人的时候,别不给自己留后路,得瑟大劲儿了离倒霉就不远了。我以后也有脸了,再也不会去22楼找不自在。像这套号儿的装逼犯你他妈别犯我手里,到时候有你好看!
做系统管理员的应该都知道MOM这个东西,全称是Microsoft Operations Manager,微软出的一个功能强大的监控服务器产品,可以二次开发,潜力无限,尽管现在已经改名叫SCOM了,不过换汤不换药,我现在要部署的是微软MOM 2005 SP1 中文版。,SCOM暂时没找到有正式版都是120天试用,这个MOM 2005 SP1 中文版是微软内部版本,没有所谓过期一说。有需要的可以联系我,我的电邮是wayne[小老鼠]waynecn.com。为了维护软件版权,即日起不再提供MOM2005相关软件。
Read the rest of this entry »
今天继续研究了一天部署MOM 2005 SP1的过程。经过不断的重装、上网搜索遇到的问题,解决了几个比较恶心人的问题,总算完成了部署。刚才总结了下但是没写完,明天发上来吧。之前完全没想到部署微软的这个东西会遇到这么多问题,以为简单的安装,下一步就搞定了,自己一试验发现不是这么回事儿,部署成功与否和各个组件的版本有很大关系。