资源描述
1 功能概述
l 基于运维规程,结合具体的网络资源型号,将维护作业任务实例化;
l 自动执行维护作业任务,将运维人员从大量的重复劳动中解放出来;
l 以矩阵方式图形化展示检查结果,便于运维人员发现问题。提供即时检查功能,便于运维人员排查、解决、验证问题;
l 基于检查结果,对资源维护情况打分,便于考核、督促运维人员的维护工作;
l 通过健康档案、历史查询等,便于运维人员掌握网络资源的运行情况、故障发生时间、持续时间等;
l 通过维护文档功能,将厂商提供的维护方法、运维人员总结的运维经验固化在系统中,以实现运维知识的积累、共享,并减少人员流动对运维工作的影响。
l 支持的网络资源类型包括:网络设备、主机、数据库、应用;
l 常用的维护作业任务包括:
n CPU利用率、内存利用率、CEF占用率
n ARP告警、系统告警、板卡crash、软件进程运行状况、主备引擎
n 磁盘状态、风扇、电源、温度、版本信息、硬件序号、MAC地址空间
n QoS丢包、传输误码、端口状况、交换矩阵
n NTP时钟、异常LOG、上联中继、STP状态
n BGP协议、路由超限、LDP协议、LDP规范、PIM邻居、链路Metric、ISIS中继、单点隐患
1.1 资源范围:
支持对主机、应用、设备等进行巡检;
1.2 前台功能介绍
主要操作流程如下:
巡检项配置à巡检模板配置à巡检资源组配置à维护巡检计划à资源巡检结果矩阵à巡检计划完成情况
l 巡检项配置:
n 将维护作业任务定义成巡检项,定义:巡检项名称、编码、检查周期、描述;
n 将巡检项分类,便于图形化、灵活展现巡检结果;
n 修改维护文档,将运维知识、运维经验固化在系统中。
n 对于已经实例化的巡检项,将关联显示对于的资源类型;
l 巡检模板配置:
n 结合网络资源型号,将巡检项实例化,定义:巡检方式(Telnet/SSH、SNMP、SQL)、巡检命令、巡检逻辑、打分规则等;
l 巡检资源组配置
n 将需检查的网络资源划分成不同的资源组,划分条件为:资源型号、所属节点、资源标签等条件
l 维护巡检计划
n 定义计划名称、检查周期(可空。如果配置的话,则按统一的检查周期执行所有的巡检项)、计划起始时间、结束时间、资源组;
n 配置巡检项
将巡检计划、资源组、巡检项三者关联在一起。配置完成后,在巡检计划、资源组、巡检项之间建立起对应关系。对于某巡检计划、某资源组中的网络资源,只有存在对应关系的巡检项才会执行。
l 资源巡检结果矩阵
n 监视资源运行情况
n 以巡检项结果矩阵的方式图形化展示巡检结果。
n 可查看巡检结果详细信息、监控档案、历史信息、维护文档等
l 巡检计划完成情况
n 查询巡检历史信息。
1.2.1 配置巡检项
根据巡检内容,配置巡检项。
查询巡检项:
增加巡检项:
1、 巡检项主要信息为:名称、检查周期。
2、 网管要求巡检项的名称必须是唯一的
设置巡检项检查周期:
修改巡检项:
1.2.2 配置巡检模板
对于需巡检的资源,按资源型号进行分类。若对某资源型号,需执行某巡检项,则对这样一个资源型号和巡检项的组合,需要定义一个巡检模板。
巡检模板需按照PERL语法进行编写,已预置了一些巡检函数,详见§2。巡检模板中主要包括如下内容:1)获取资源状态信息,支持的巡检方式包括:数据库、Telnet/SSH、SNMP等巡检方式;2)巡检结果判断逻辑,得到巡检结果;3)保存巡检结果。
为便于编写巡检模板,提供模板内容检查功能;
查询巡检模版:
增加巡检模版:
1、 巡检模版主要信息为:模版名称、巡检项、资源型号、模版内容。
2、 资源型号与资源类型联动
3、 资源类型下拉框仅用于过滤资源型号,不用于配置巡检模版的相关信息。
4、 配置完模版内容后点击“检查模版”按钮,进行模版内容检查,检查结果出现在模版检查提示信息文本框中。
修改巡检模版:
1、只允许修改模版名称、模版内容
1.2.3 配置资源组
支持按资源类型、资源型号和TAG等条件定义资源组;资源组其实是一个资源集合,集合中的元素是符合上述条件的资源;
查询资源组:
新增资源组:
1、 资源组主要信息为:节点、资源组名称、资源范围。
2、 网管要求资源组的名称必须是唯一的
3、 点击“添加”、“删除”按钮,配置资源组中的资源范围。
选择资源组中的资源范围:
1、 点击“选择”按钮,选择资源标签。
选择资源标签:
修改维护资源组:
查看资源组内的资源详细信息:
1.2.4 配置巡检计划
根据用户巡检范围、巡检频度等需求,配置巡检计划,主要包括:名称、检查周期(优先级比巡检项的检查周期高)、资源组、起始结束时间等;
对巡检计划,巡检后台程序根据巡检计划的资源组定位需巡检的资源,并根据资源型号定位巡检项,进而定位到巡检模板,并执行该模板;
查询巡检计划:
1、 将用户具有配置权限的节点记为用户节点;仅当用户节点涵盖某巡检计划的全部资源组对应的节点时,用户才有权限对此巡检计划进行维护
新增资源巡检计划:
1、 巡检计划主要内容为巡检计划名称、检查周期(优先级比巡检项的检查周期高)、资源组、起始结束时间。
2、 网管要求巡检计划名称必须是唯一的
3、 可点击“设置”、“清空”按钮,设置检查周期。
设置检查周期:
修改维护巡检计划:
1.2.5 查询巡检结果
1.2.5.1 列表形式
提供日历风格的巡检结果查询页面;并可人工确认巡检结果;
查询巡检计划:
1、 提供日历风格页面,显示巡检计划信息。点击年月两侧的按钮,可跳转到其它年月。
2、 查询时要按照用户的节点进行过滤(仅当用户节点涵盖某巡检计划的全部资源组对应的节点时,用户才有权限查看此巡检计划)
3、 每日默认最多显示5个巡检计划,多与5个巡检计划,单元格中会出现下拉展开按钮。
巡检计划执行情况:
1、点击日历中的某一巡检计划,查看该巡检计划执行情况,显示根据该计划检查的资源数,异常及采集失败资源数。
巡检计划执行情况详细信息:
1、 巡检计划执行情况页面,右键可查看某一巡检计划执行情况的详细信息,显示出根据巡检计划检查的设备的详细情况。
2、 ‘S’:正常 ;‘E’:异常 ;‘U’:不确定 ;‘F’:采集失败。
巡检结果确认:
1、选件计划执行情况详细信息页面,选中某一行记录,点击“确认巡检结果”按钮,进行相关的确认工作。
1.2.5.2 矩阵形式
1.2.6 巡检报表
以报表形式展现巡检结果。模板类型名称为:Rcheck报表-资源巡检报表
2 采集原理
在采集机上执行,执行结果保存在数据库中。
采集机负责的资源范围:根据资源分组表ResGroup (coltype = 'PERF')确定
巡检计划:
根据资源巡检计划表的起始/结束时间来确定
巡检项、巡检资源的范围:
根据资源巡检计划、资源巡检计划巡检项关联表、巡检资源组、巡检资源组定义等数据表来确定:
巡检模板范围:由巡检模板定义表来确认
巡检模板执行周期:由巡检项定义、资源巡检计划等数据表来确定。
巡检模板执行原理:
巡检支持网管的三种资源:设备/主机/应用
支持三种巡检方式:telnet/ssh、snmp、sql
对设备/主机一般采用telnet/ssh方式。
对普通的网管应用,一般需直接读取网管数据库中的应用性能信息,
对于数据库应用,一般采用sql方式。
究竟采用哪种方式,取决于模板内容。
l 若模板内容中出现函数cmd _show,则需建立telnet/ssh连接,执行相应的命令
l 若模板内容中出现函数cmd_sql,则与资源建立sql连接,执行sql查询
l 若模板内容中出现函数cmd_snmp,则与资源建立SNMP连接,执行snmp命令
后台程序:
巡检调度程序:RCheckTaskDispatch.pl
可通过cron定时调用,定时执行巡检模板;
也可接受前台即时调用。
巡检结果按日汇总程序:RCheckTaskSumD.pl
B06
自动巡检模块调试与维护
录制视频教程(演示所有前台功能使用,后台调用的程序,日志文件,数据文件,和数据库表)
1.自动巡检前台功能介绍
2.自动巡检的设计采集原理
3.典型案例介绍自动巡检的产品应用过程
4.通过一个实际指标的例子演示如何定制满足用户对于某个巡检指标的采集需求
5.巡检模板的语法说明,常用模板语句演示
6.常见维护问题及处理
3 实际案例
3.1 整体考虑
以矩阵形式展示结果时,采用一个资源组一个矩阵的形式。
l 为使矩阵整齐好看,避免出现稀疏矩阵的情况,需先根据要巡检的资源、巡检项情况,尽量把巡检项重合度比较大的资源分在一个资源组中;
l 可以把若干巡检项,组织成一个巡检项组。在显示结果时,巡检项组可折叠/展开。
3.2 新增一个检查项目
因各地项目用的比较多的是对设备的巡检,以检查设备cpu利用率为例。
3.2.1 确定设备型号及检查规则
设备型号:CISCO路由器
检查规则:
命令及返回结果:
Cisco87#sh proc cpu | i CPU utilization
CPU utilization for five seconds: 4%/0%; one minute: 2%; five minutes: 5%
异常判断方法建议:
将输出结果中标红的域与阀值(设置为50%)进行对比,大于阀值则异常。
周期建议:每天一次
只看五分钟的统计
3.2.2 设置巡检项:
3.2.3 配置巡检模板
模板内容:
exec_cmd('sh proc cpu | i CPU utilization');
if ($CMD_ERROR ne '')
{
writelog("\n!!! CardCPU check error:$CMD_ERROR");
return -1;
}
SetParmDefault();
SetCheckRowsByRowFeature(
'INC-FEATURE=for five seconds' #行特征为存在” for five seconds”字符串
);
AddCheckRowsCondition(
'CONDITION=$COLUMN_VALUE[11] < 50', #第11列的值不能大于50%
'ERROR_TYPE=1',
'RESULT_TYPE=E'
);
ParseResult(2); #使用第2种分析方式分析,即行特征查找方式分析
SetRCheckLog();
return 1;
3.2.4 配置资源组
3.2.5 配置巡检计划
增加巡检计划
配置巡检项
3.2.6 调试
在巡检模板配置页面,对指定的模板,右键à调试
弹出如下页面:
在页面中选择一个设备,并点击调试按钮:
调用后台程序登录设备执行指定的模板,显示调试结果如下:
3.2.7 查询巡检结果:
3.2.7.1 矩阵形式
查看详细信息
在此页面上可以即时采集、查询历史、修改维护文档等
3.2.7.2 列表形式
日历入口
查询详细信息:
4 巡检函数说明及示例
4.1 交互式模板语法说明
《ITEView 开通平台模板设计(讨论稿).doc》
上面的资料是交互式模板的定义交互式模板的语法说明。
第9节是开通平台内置函数的说明,包括:cmd_cfg(),cmd_show(),writelog(),logfile(),regmatch(),regextract(),regextractarr(),split(),sprintf(),systime(),settaskpara(),gettaskpara()
4.2 基本巡检函数
4.2.1 Hash变量
定义语法:my %hashName;
Hash使用:
1. 赋值
%new_hash = %old_hash;
my %last_name = (
"fred" => "flintstone",
"dino" => undef,
"barney" => "rubble",
"betty" => "rubble",
);
2. 访问hash元素
$hash{$some_key}
$family_name{"fred"} = "flintstone";
3. 针对hash每个元素的循环
while ( ($key, $value) = each %hash ) {
print "$key => $value\n";
}
4.2.2 时间范围比较
功能说明:判断时间time是否属于某时间范围[当前时间,当前时间-timeInterval];
函数语法:$result = isTimeBetween(time, timeInterval),参数说明:time,指定时间;time_interval,时间范围的跨度。time的格式是yyyymmddhh24miss。timeInterval为数字,单位为分钟;
返回结果:0,不属于;1,属于;
4.2.3 读取资源监控指标当前值信息
功能说明:读取资源监控指标的当前性能值和记录时间;
函数语法:%curInfo=getResMoniCurInfo(DataItemID)。参数说明:DataItemID指资源监控指标编码,如B_CardTempreature,B_BMC_DSKAvgQueue等;
返回结果:包括监控指标当前性能值、记录时间的二级Hash,一级Hash的key是资源参数的取值,二级key是time、item,分别对应记录时间和性能值;示意如下:
失败时:返回空hash
数据库值:
select * from resmonicurinfo where RESID = 'CIR01098'
RESID RESPARA DATAITEMID VALUE RECORDTIME
CIR01098 1 InSpeed 222222 2009-3-4 21:05:33
例子:
%curhash = getResMoniCurInfo("InSpeed");
if ($CMD_ERROR ne '')
{
writelog("failure:getResMoniCurInfo");
logCheckResult2DB("F","failure:$CMD_ERROR");
return -1;
}
my $result;
while(my ($key,$value) = each %curhash)
{
writelog( "key:$key,value:$value\n");
while(my ($key2,$value2) = each %{$curhash{$key}})
{
$result .= "key2:$key2,value2:$value2\n";
writelog( "key2:$key2,value2:$value2\n");
}
}
logCheckResult2DB("S",$result);
return 0;
返回值:
key2:time,value2:20090304210533
key2:item,value2:222222
4.2.4 存储巡检结果
功能说明:将巡检结果存入网管数据库的资源巡检计划执行日志(RCheckResCheckLog)表中;
函数语法:logCheckResult2DB(checkResult, detailLog)函数,参数说明:checkResult指检查结果(如正常、异常等),detailLog指检查详细日志内容,如巡检项的性能值等信息;
返回结果:无
4.2.5 采集应用监控指标
函数说明:调用应用对应的采集程序,直接分析检查结果文件,返回各监控指标及其性能值;
函数语法:%result=colAppVarVal(),参数说明:无参数(调用时补充参数:资源标识,资源分组,例如:APP00037,01. PRS00000),默认值为当前应用;查询ResColProgCfg表,根据资源型号标识、操作类型(Opertype=PERFCOL)查询出采集程序(ProgramName字段),并同步调用此程序(以应用标识作为调用参数),返回值为0(成功),或者1(失败)。解析结果文件(含指定应用标识的最新的结果文件),返回各监控指标及其性能值;由于拨测程序部署在Windows采集机上,因此需要考虑程序的Windows平台移植问题。
返回值:监控指标性能值Hash,以监控指标编码为key(itemname),value为(指标对应的值)失败返回空hash
资源分组:
"appcolinfo_03.PRS00000"
APP00086;;APP_RDBMS_SYBASE;;rocommunity<*>-1<*>ss;;snmpport<*>-1<*>8161;;hostip<*>-1<*>192.168.6.21;;
APP00087;;APP_RDBMS_SQLSERVER;;rocommunity<*>-1<*>public;;snmpport<*>-1<*>8161;;hostip<*>-1<*>192.168.6.78;;
APP00088;;APP_RDBMS_ORACLE;;rocommunity<*>-1<*>public;;snmpport<*>-1<*>8161;;hostip<*>-1<*>192.168.6.21;;
%curhash=colAppVarVal();
if ($CMD_ERROR ne '')
{
writelog("failure:colAppVarVal");
logCheckResult2DB("F","failure:$CMD_ERROR");
return -1;
}
my $result;
while(my ($key,$value) = each %curhash)
{
$rssult .= "key:$key,value:$value\n";
//ItemName:B_OnlineSession Value:45
//ItemName:B_LockNum Value:2
}
writelog( "result:$result\n");
logCheckResult2DB("C",$result);
return 0;
日志:
key:B_LockNum,value:2
key:B_TbSpaceUsedRatio,value:70.13
key:B_DBValid,value:1
key:B_APPStatus,value:0
key:B_OnlineSession,value:45
key:B_BlockLockNum,value:0
4.2.6 读取SNMP信息
函数说明:读取指定资源的snmp信息。
函数语法:@valList = cmd_snmp(OID,[SNMPCollInfo,序号]),参数说明:OID指SNMP对象的ID。SNMPCollInfo是应用采集配置项编码,序号是正整数,如1,2,3...。SNMPCollInfo的取值格式如下。需要根据参数中的序号,从中提取出需要的值,用于建立SNMP连接;
community1::IP1;;comm2::IP2...
返回结果:OID下的全部对象的取值,数组@Result
Result是一个2维数组,维度1是输入的oid,维度2为oid对应的表index,值为value
例子:
@snmp = cmd_snmp('1.3.6.1.2.1.1.1');//sysDescr//1.3.6.1.2.1.2.2.1.1 (ifIndex)
if ($CMD_ERROR ne '')
{
writelog("failure:cmd_snmp");
logCheckResult2DB("F","failure:$CMD_ERROR");
return -1;
}
logCheckResult2DB("S","sysDescr:$snmp[0][0]\n");
writelog( "sysDescr:$snmp[0][0]\n");
return 0;
返回值:
sysDescr:Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-TELCO-M), Version 12.3(13a), RELEASE SOFTWARE (fc2)
Technical Support:
Copyright (c) 1986-2005 by cisco Systems, Inc.
Compiled Mon 25-Apr-05
4.2.7 执行SQL命令
函数说明:在数据库应用上执行sql语句;
函数语法:@valList = cmd_sql(sqlString,[JDBCCollInfo,序号]),参数说明:sqlString指标准的sql语句,如select * from appinfo;JDBCCollInfo是应用采集配置项编码,序号是正整数,如1,2,3...。JDBCCollInfo取值格式如下。需要根据参数中的序号,从中提取出需要的值,用于建立JDBC连接;
UserName1::Pass1::URL1;;UserName2::Pass2::URL2;;..
返回结果:@valList是一个一维数组。每个元素是一个hash变量引用。对于select语句,hash的key为数据表字段名称,hash的value是相应字段的取值;
例子:
@array = cmd_sql("select DEVICENAME from device where deviceid = 'DEV01223'");
if ($CMD_ERROR ne '')
{
writelog("failure:cmd_sql");
logCheckResult2DB("F","failure:$CMD_ERROR");
return -1;
}
logCheckResult2DB("S","DEVICENAME:$array[0]->{DEVICENAME}\n");
writelog( "DEVICENAME:$array[0]->{DEVICENAME}\n");
return 0;
4.3 高级巡检函数
针对Telnet方式,对巡检函数进行了封装,简化巡检模板的编写。详见文档
5 常见问题说明
5.1 搭建环境说明
http://192.168.6.45:2003/nms/loginSample.jsp
http://192.168.6.64:2000/nms/loginSample.jsp
5.2 模板调试方法说明
前台有语法检查选项,根据模板检查提示信息修改模板语法。
5.3 常见问题
1. 增加模板后,默认为无效状态。需人工将其启用。
2. 在页面上可查看详细日志信息,可以用排查问题。
3. 报表问题:
如果在页面上找不到报表模板,需执行如下sql,启用巡检报表
INSERT INTO RptTempletType (TEMPLETTYPECODE,
TEMPLETTYPENAME,
RPTTIMETYPE,
TEMPLETTYPEPROP)
SELECT TEMPLETTYPECODE,
TEMPLETTYPENAME,
RPTTIMETYPE,
TEMPLETTYPEPROP
FROM RptTempletTypelib
WHERE templettypename = 'Rcheck报表-资源巡检报表'
展开阅读全文