IBM TivoliMonitoring产品简称ITM,当前版本为6.5,该产品作为IBM软件产品的基础架构设施软件面向IT基础设施,云计算环境,虚拟化环境等都提供了全面的监控方法和独特的监控技术,IBM提供了常规的各式监控代理程序来解决各种通用性监控脚本,默认提供了包括操作系统代理、数据库代理、ERP代理、应用服务器代理等通用代理,为了解决更多复杂的、深入的、自定义的监控需求,ITM也提供了Universal Agent的通用Agent功能,并且提供了Universal Agent Builder开发环境来完成复杂功能的开发与测试。UniversalAgent基于Eclipse环境构建、使用C/C++,JAVA作为编程语言,利用SNMP V3,WMI等多种协议方式来进行编程。
在我们的开发需求中,需要对Windows环境的终端服务进行定制化监控、监控该服务的运行状态、依赖性服务、运行日志情况、警告及错误日志信息等。我们利用Universal Agent通用代理解决方案使用脚本数据提供程序来监控终端服务。
开发环境准备
Universal Agent 需求:
l 本UA部署环境要求具备 ITM 6.1 TEMS and TEPS环境,其中TEMS和TEPS数据库环境仅限于DB2\SQLSERVER\ORACLE环境,对于6.5环境中的MySQL环境不支持。
l Universal Agent 6.1 软件,Universal Agent Builder 6.1环境。Eclipse 3.6。
监控操作系统的开发节点:
以下操作系统的终端服务经过了本开发的测试验证:
Windows2003Enterprise Edition
Windows2008 Enterprise Edition
Windows2008 R2 SP1 Enterprise Edition
l 操作系统启用 cscript command 脚本命令解释器
MDL文件定义头文件
MSTermServ.MDL |
If desired, change the monitored system’s interval time in //Name line as the following.
Example: //Name TSLogOnUser K 1200 Interval=180 //Source Script cscript GetUserTXT.vbs //Source Script cscript GetTSuser.vbs |
安装及部署
按照ITM的部署手册部署如下顺序的终端服务解决方案 TerminalService Agent
l 安装部署ITM的TEMS
l 安装部署ITM的TEPS.
l 在每一个监控目标节点服务器上部署UA组件
l 在开发机上部署UA Builder以及JDK环境、Eclipse环境。
TEMS, TEPS配置事项
TEPS和TEMS的数据源请使用统一数据源,如Oracle,TEPS和TEMS可以部署在不同的服务器上,但是在开发环境中,可以部署在同一台服务器上。
1. 将UA解决方案传输FTP到TEMS服务器,如D:\UAS。
2. 讲开发定义库文件kum_TS.zip复制到 TEMS和 TEPS服务器上,并解压。如下图:
3. 运行UA开发支持工具包。Windows环境使用setupwin32.exe,AIX环境使用setupAIX.bin,
4. 确认安装路径
5. 定义安装TEMS和TEPS, Tivoli Enterprise monitoringServer和 TivoliEnterprise Portal Server信息被安装器部署为桌面系统
6. 定义IBM Tivoli Universal Agent for Terminal Service安装,配置好环境变量
7. 下一步,重启ITM服务,其中会按照顺序启动TEPS和 TEMS
8. 完成安装后,ITM将会出现TerminalService Agent workspaces.的选择项。
配置UA
l 解压 kum_TS.zip到一个临时目录
l 拷贝 MSTermServ.MDL到 "<ITMHOME>\TMAITM6\metafiles"目录.
l 拷贝全部.vbs 文件到 "<ITMHOME>\TMAITM6\scripts"目录.
l 打开 DOS 窗口.
l 导航至 "<ITMHOME>\TMAITM6\"
l 从目录 "<ITMHOME>\TMAITM6\ 运行如下命令,以导入MDL头文件。:
"kumpconimport MSTermServ.MDL"
1. 在TEP登陆的配置文件中,修改如下参数
"CustomizedNodeName:MSTERMSERV00" under the Universal Agent node.
开发过程
以下是定义数据结构的过程中对Windows Terminal Services Universal Agent.的终端服务的定义和Metrics接口定义。以下是整个定义表的内容。
Metrics 属性数据结构
Metrics |
Attribute Group |
描述 |
TSSystemName |
OSINFO |
运行终端服务的机器名 |
Caption |
OSINFO |
捕获操作 |
CurrentTimeZone |
OSINFO |
当前服务器的时区 |
RegisteredUser |
OSINFO |
注册的系统用户 |
MaxProcessMemorySize |
OSINFO |
最大处理内存尺寸 |
NumberOfProcesses |
OSINFO |
最大处理器尺寸 |
Manufacturer |
OSINFO |
定义的功能信息遍历 |
OSType |
OSINFO |
操作系统类型 |
Version |
OSINFO |
操作系统版本 |
ServicePack |
OSINFO |
操作系统补丁级别 |
NumberOfUsers |
OSINFO |
用户数量 |
TSPort |
OSINFO |
终端服务的默认端口 |
ID |
TSLogOnUser |
行ID |
UserName |
TSLogOnUser |
登录到服务器的用户名 |
SessionName |
TSLogOnUser |
登录到服务器的会话名 |
UserID |
TSLogOnUser |
用户ID信息 |
Stat |
TSLogOnUser |
Display every session stat logging on the server by terminal service |
IdleETime |
TSLogOnUser |
Idle time of each session |
LogOnDate |
TSLogOnUser |
Log on date |
ID |
TSProcess |
Display row id number |
UserName |
TSProcess |
User name logging on the server by terminal service |
SessionName |
TSProcess |
Session name logging on the server by terminal service |
UserID |
TSProcess |
User id information |
PID |
TSProcess |
Process id information of logging on the sever. |
ProcessImage |
TSProcess |
Process image information of logging on the server. |
Name |
TSsessionIO |
Session name of sessions logged onto the server by terminal service. |
InputAsyncFrameError |
TSsessionIO |
Input asyncframe error information |
InputAsyncOverflow |
TSsessionIO |
Input async over flow information |
InputAsyncOverrun |
TSsessionIO |
Input async over run information |
InputAsyncParityError |
TSsessionIO |
Input async parity error information |
InputBytes |
TSsessionIO |
Input bytes |
InputCompressedBytes |
TSsessionIO |
Input compressed bytes for each running session |
InputCompressFlushes |
TSsessionIO |
Input compress flushes information |
InputCompressionRatio |
TSsessionIO |
Input compression ratio |
InputErrors |
TSsessionIO |
Input error information |
InputFrames |
TSsessionIO |
Input frames information. |
InputTimeouts |
TSsessionIO |
Input timeouts information |
InputTransportErrors |
TSsessionIO |
Input transport errors information |
InputWaitForOutBuf |
TSsessionIO |
Input wait for out buffer information |
InputWdBytes |
TSsessionIO |
wd bytes |
InputWdFrames |
TSsessionIO |
wd frames information |
HandleCount |
TSsessionIO |
handle count information |
OutputAsyncFrameError |
TSsessionIO |
Output async frame error info |
OutputAsyncOverflow |
TSsessionIO |
Output async over flow info |
OutputAsyncOverrun |
TSsessionIO |
Async over run info |
OutputAsyncParityError |
TSsessionIO |
Async parity error info |
OutputBytes |
TSsessionIO |
Output bytes info |
OutputCompressedBytes |
TSsessionIO |
Output compressed bytes info |
OutputCompressFlushes |
TSsessionIO |
Output compress flushes info |
OutputCompressionRatio |
TSsessionIO |
Output compression ratio info |
OutputErrors |
TSsessionIO |
Output error |
OutputFrames |
TSsessionIO |
Output frames info |
OutputTimeouts |
TSsessionIO |
Output timeouts info |
OutputTransportErrors |
TSsessionIO |
Output transport error info |
OutputWaitForOutBuf |
TSsessionIO |
Output wait for output buffer info |
OutputWdBytes |
TSsessionIO |
Output WD bytes info |
OutputWdFrames |
TSsessionIO |
Output WD frame info |
PageFaultsPersec |
TSsessionIO |
Page faults percent information. |
PageFileBytes |
TSsessionIO |
Page file bytes |
PageFileBytesPeak |
TSsessionIO |
Page file bytes peak |
PercentPrivilegedTime |