Archive for the ‘MOM,SCOM’ Category

MOM监视服务器进程

今天来写一个用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里边跑了。

欢迎交流。

MOM监视BizTalk文件夹队列

之前写过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是需要监控的文件夹路径。

欢迎交流~

VBScript 发送电子邮件

实现用VBScript发送电子邮件很简单。下边用到的CDO是微软协作数据对象库,用于实现到自定义应用程序的消息传送和协作功能。

我们利用微软CDO对象用以下代码实现使用SMTP协议发送电子邮件:

Set objEmail = CreateObject("CDO.Message")

Call SendMail()

Sub SendMail
objEmail.From = "发件人地址" '发件人
objEmail.To = "收件人地址" '收件人
objEmail.Subject = "电子邮件主题" '电子邮件主题主题
objEmail.Textbody = "电子邮件内容" '电子邮件内容
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "SMTP服务器地址" 'SMTP服务器地址
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "用户名" '用户名
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "密码" '密码
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 '明文验证
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 'SMTP端口号
objEmail.Configuration.Fields.Update
objEmail.Send
End Sub

当然,如果你的SMTP服务器可以匿名,那么用户名、密码、明文验证都可以省略了,估计现在除了自己搭服务器,没有哪个会让匿名。如果你看谁不爽可以尝试用这个发垃圾邮件。

解决MOM报警邮件乱序

MOM在产生报警邮件的时候发现中文邮件会产生乱序,这是MOM的一个已知bug。具体情况如下:

严重性: 严重错误' + char(0x0d) + char(0x0a) + N'状态: 新建' + char(0x0d) + char(0x0a) + N'来源: ASP.NET Applications: Sessions Active: __Total__' + char(0x0d) + char(0x0a) + N'名称: test Active Sessin' + char(0x0d) + char(0x0a) + N'描述: ASP.NET Applications: Sessions Active: __Total__ 值 = 123' + char(0x0d) + char(0x0a) + N'域: WORKGROUP' + char(0x0d) + char(0x0a) + N'代理: Computer+ char(0x0d) + char(0x0a) + N'时间: 8/23/2007 16:01:00' + char(0x0d) + char(0x0a) + N'所有者: ' + char(0x0d) + char(0x0a) + N'

正常的应该是

严重性: 严重错误
状态: 新建
来源: ASP.NET Applications: Sessions Active: __Total__
名称: test Active Sessin
描述: ASP.NET Applications: Sessions Active: __Total__ 值 = 123
域: WORKGROUP
代理: Computer
时间: 8/23/2007 16:01:00
所有者: 

遇到这样的问题需要修改Onepoint数据库的表。在数据库具体执行如下查询:

Use Onepoint

Declare @myvar nvarchar(3200) set @myvar = 'Severity: $%AlertLevel%52 $

' + 'Status: $%ResolutionState%53 $

' + 'Source: $50 $

' + 'Name: $62 $

' + 'Description: $63 $

' + 'Domain: $56 $

' + 'Agent: $55 $

' + 'Time: $54 $

' + 'Owner: $51 $

' + '(view with $AlertURL$)'

update Configuration set DataValue = @myvar where DataName = 'EmailMessage'

执行以上查询之后重启MOM应用和数据库服务器。

MOM2005部署手记

做系统管理员的应该都知道MOM这个东西,全称是Microsoft Operations Manager,微软出的一个功能强大的监控服务器产品,可以二次开发,潜力无限,尽管现在已经改名叫SCOM了,不过换汤不换药,我现在要部署的是微软MOM 2005 SP1 中文版。,SCOM暂时没找到有正式版都是120天试用,这个MOM 2005 SP1 中文版是微软内部版本,没有所谓过期一说。有需要的可以联系我,我的电邮是wayne[小老鼠]waynecn.com。为了维护软件版权,即日起不再提供MOM2005相关软件。

Read the rest of this entry »