20101113-WLAN网络管理系统详细设计说明书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文档状态:初稿
文档名称:《详细设计说明书》
项目名称:WLAN网络管理系统
项目编号:
项目负责人:
编写: 2010 年 11 月 07 日
审核: 2010 年月日
批准:年月日
开发单位:武汉理工大学·嵌入式系统与网络安全实验室
目录
文档名称:《详细设计说明书》 (1)
项目名称:WLAN网络管理系统 (1)
项目编号: (1)
项目负责人: (1)
0.引言 (4)
0.1编写目的 (4)
0.2背景 (4)
0.3基线 (4)
0.4参考资料 (4)
0.5术语与缩写解释 (5)
1. 总体设计 (7)
1.1概述 (7)
1.2 体系结构 (7)
1.2.1 客户端 (8)
1.2.2 服务器端 (8)
1.1.3 设备端 (9)
1.1.4 数据层 (9)
1.3 系统模块设计 (9)
1.4 系统启动方法 (9)
2. 系统功能及数据库设计 (11)
2.1 License控制管理 (11)
2.2 配置管理模块 (11)
2.2.1 功能 (11)
2.2.2 性能 (11)
2.2.3 输入项 (11)
2.2.4 输出项 (12)
2.2.5 流程逻辑 (12)
2.2.6 核心类接口 (15)
2.2.7 数据库设计 (17)
2.3. 性能管理模块 (18)
2.3.1 功能 (18)
2.3.2 性能 (19)
2.3.3 输入项 (19)
2.3.4 输出项 (19)
2.3.5 流程逻辑 (19)
2.3.6核心类接口 (21)
2.3.7 数据库设计 (25)
2.4 故障管理模块 (28)
2.4.1功能 (28)
2.4.2 性能 (29)
2.4.3输入项 (29)
2.4.4 输出项 (29)
2.4.5流程逻辑 (29)
2.4.6 核心类接口 (30)
2.4.7 数据库设计 (32)
2.5 安全管理 (38)
2.5.1功能 (38)
2.5.2 性能 (38)
2.5.3 输入项 (38)
2.5.4 输出项 (38)
2.5.5 流程逻辑 (38)
2.5.6.核心类接口 (41)
2.5.7 数据库设计 (45)
2.6拓扑管理 (55)
2.6.1功能 (55)
2.6.2 性能 (55)
2.6.3输入项 (55)
2.6.4 输出项 (55)
2.6.5流程逻辑 (55)
2.6.6核心类接口 (58)
2.6.7 数据库设计 (60)
2.7 报表统计 (63)
2.8 系统工具 (64)
3. 系统出错处理设计 (65)
4. 系统维护设计 (66)
5. 尚待解决的问题 (67)
0.引言
0.1编写目的
本说明书目的在于明确系统各主要功能的具体实现方法,指导开发人员编码。

本说明书的预期读者为:本项目开发人员,包括系统架构、分析、设计及编码人员。

0.2背景
待开发软件系统的名称:WLAN网络管理系统;
此软件系统任务提出者:武汉虹信通信技术有限责任公司;
此软件系统任务开发者:武汉理工大学嵌入式系统与网络安全实验室;
此软件系统任务用户:武汉虹信通信技术有限责任公司相关运维及管理人员。

0.3基线
《WLAN网络管理系统总体需求说明书》武汉虹信通信技术有限责任公司2010.10.07 《WLAN网络管理系统概要设计说明书》武汉理工大学嵌入式与网络安全实验
2010.10.30
0.4参考资料
《WLAN网络管理系统总体需求说明书》武汉虹信通信技术有限责任公司2010.10.07
《WLAN网络管理系统概要设计说明书》武汉理工大学嵌入式与网络安全实验
2010.10.30
《中国移动WLAN AP设备规范》v3.0.0 中国移动通信
《中国移动WLAN AC设备规范》v3.0.0 中国移动通信
《中国移动WLAN设备网管接口测试规范》v1.0.0 中国移动通信
《中国移动WLAN设备网管接口技术要求》v1.0.0 中国移动通信
《中国移动WLAN设备通用安全功能测试规范》v1.0.0 中国移动通信
《中国移动WLAN设备通用安全功能和配置规范》v1.0.0 中国移动通信
0.5术语与缩写解释
术语、缩写解释
WLAN 无线局域网
CMNET 中国移动互联网
NE 网元设备
AC 接入控制器
AP 接入点
AS 鉴权服务器
MIB 管理信息库
SNMP 简单网络管理协议
SOAP 简单对象访问协议
TCP 传输控制协议
UDP 用户数据报协议
RADIUS 远程拨入用户鉴权
JAVA 一种跨平台的程序设计语言
C++ 一种程序设计语言
SQL 数据库查询和程序设计语言
Oracle 一种高性能的关系型数据库管理系统
JSP 基于WEB应用实现动态交互网页制作提供的技术环境支持Eclipse 应用开发环境
CVS 代码版本控制系统
JDK JAVA开发工具包
Tomcat 一种Web服务器
Web Services 一种服务提供体系
Java Web Start 一种基于JAVA的应用程序部署解决方案
HTTP 超文本传输协议
JNI JAVA本地调用
NMM 网元建模管理
LCM License控制管理
CM 配置管理
PM 性能管理
FM 故障管理
SM 安全管理
TM 拓扑管理
JMX JAVA管理扩展(Java Management Extensions)
1. 总体设计
1.1概述
本详细设计文档主要集中于体系结构以及各模块具体实现方法设计,诸如系统功能、开发环境、运行环境、接入方式、用户界面、系统性能,等等相关描述请参考《WLAN 网络管理系统总体需求说明书》(2010.10.07),在此省略。

1.2 体系结构
本软件系统体系结构基于SUN 公司JMX 架构设计。

JMX 架构分为三层,包括:设备层、代理层、分布式服务层,它定义了Java 编程中的架构、设计模式、API 、应用服务、网络管理和监控方法,提供了一个可伸缩的管理架构。

依据JMX 架构,本系统体系结构设计框图如图1所示。

客户端管理GUI
HTML Adaptor
客户端
JMX
架构
数据层
管理应用构件
拓扑管理日志管理
安全管理
故障管理
性能管理配置管理代理服务
Relationship Service Monitor Service Timer Service
Dynamic Mbean Loading Service (M-Let )
Mbean Server (MBean 服务器)
内嵌机制RMI_IIOP JINI
JTA JDBC
JMS JNDI
Oracle 数据库/XML 文件
附加管理协议API (SNMP Manager API)
SNMP agent (网络设备)
SNMP agent (网络设备)
服务器端
系统后台处理
设备端
图1 系统框架图
1.2.1 客户端
★功能:客户端在功能上负责用户与网络管理系统的图形界面接口,包括网络拓扑图的显示和编辑、事件配置策略、用户登陆和权限分配、性能管理策略配置、性能分析数据查询和浏览、查看实时性能数据曲线、系统故障和告警的显示和查询以及日志管理。

★调用服务的方法和方式:客户端对应于网络管理应用程序,是用户操作的交互接口。

本系统基于Java JMX框架实现,所有的具体操作被封装到JMX MBean,前台客户端采用MBeanServer的invoke方法对MBean进行调用,根据需要有两种调用方法:一是采用本地调用的Adaptor(这个是我们所用到的Html Adaptor),二是基于HTTP的远程调用(这个用来以后扩展)。

前台客户端不能直接引用服务器端的类和方法。

★界面形式:客户端的界面采用传统的Windows界面形式,性能管理、用户视图以及以后扩展的管理功能模块都作为插件无缝集成到客户端和服务器。

★用户访问方式:提供了GUI模式的访问方式,即:用户直接运行管理应用程序;也提供了基于Web测览器的访问模式,也就是用户在任意可以访问到系统的HTTP服务器的终端,运行一个Applet小程序。

1.2.2 服务器端
★功能:服务器端响应用户的策略变化,完成不同的网络管理功能,比如拓扑管理、故障管理、配置管理、性能管理、安全管理、日志管理等。

具体负责所有的网管数据(拓扑图、设备等)的存取,以及访问网络(SNMP、PING等)。

对应于网络管理系统中的服务如下:
◇网络发现服务(Network Discovery)
◇视图服务(Map Service)
◇网络拓扑(Network Topology)
◇故障管理(Fault Management)
◇配置管理(Configuration Management)
◇性能管理(Performance Management)
◇安全管理(Security Management)
◇日志管理(Log Management)
★结构:在这一层有两种服务器存在。

MBean Server作为管理各种资源对象的代理,各种业务处理服务、内嵌机制、资源对象等需要在Server中注册,才可被客户端应用引用。

另外一个服务器是HTTP浏览服务器,用于处理用户通过Internet和Web浏览器访问处理程序的请求。

★附加管理协议API:JMX结构体系通过集成AdventNet SNMP API(AdventNet公司提供的SNMP软件包)实现对被管设备的管理。

系统采用是的Manager/Agent的工作方式。

★ Manager/Agent工作方式:Manager/Agent方式是一种客户机/服务器方式,其中Manager是服务器端,Agent是设备端。

Manager是包含一个或多个SNMP命令产生器和SNMP 通知接收器的应用程序。

它是运行在服务器端(网络管理应用程序也在服务器端)的软件,可以发送含有SNMP的请求给Agent,并接收来自Agent的响应和通知消息。

这种方式下双方的通信直接用TCP/IP传输层的无连接协议UDP进行。

Agent是驻留在被管理设备上的监
听161端口的进程,接收SNMP消息和发送SNMP响应消息,实现对被管理对象的管理。

同时,它还发送通知消息以便紧急情况下主动报警。

1.1.3 设备端
此层是网络管理系统中被管理的网络设备,包括AC、AP设备。

这个设备上安装Agent 实现与服务器的通信。

1.1.4 数据层
★存储模式:本系统采用了两种数据存取机制。

XML文件存取机制用于数据稳定且对存取速度要求较高的情况,对于数据量不断增加的数据采用Oracle数据库系统。

数据库操作基于JDBC及数据库连接池,采用标准SQL语句实现。

数据库支持MYSQL,Oracle等,我们采用的是Oracle数据库系统。

★数据存取接口模式:所有的涉及到数据的操作需要基于接口实现。

★数据采集过程:服务器端通过JMX框架集成AdventNet SNMP API(AdventNet公司提供的SNMP软件包)实现对被管设备(包括AC和AP)的管理,并采集AC和AP设备的MIB库信息,然后通过网络管理系统的后台进程处理存入数据库。

客户端应用程序通过JMX 框架嵌入的JDBC机制对数据库进行访问和数据的处理。

1.3 系统模块设计
本系统用于管理网络中的AC、AP设备,并对网络性能进行监控。

这些AC或AP设备通过SNMP协议与服务器进行通信。

AC和AP设备型号多样,网络规模随时变化,网络管理系统必须具备分布式结构,实现分布式管理体系,且具有可扩展性。

本系统的功能模块可以划分为:
◇后台监控服务
◇自动拓扑分析服务,即拓扑管理
◇基于共有MIB库的设备配置管理、性能管理、故障管理和日志管理
◇用户认证授权,即安全管理
◇集成常用网络管理工具(PING工具、Telnet、Traceroute和MIB浏览器等)。

1.4 系统启动方法
依据JMX架构,构建设备信息、服务程序相关配置文件(XML或properties文件),并设计如图2所示服务器端启动方法,在此方法执行结束后,所有必须的功能模块均已自动开启。

对于客户端,直接通过Web界面进行登录操作(客户端需要安装JRE,软件系统提供自动安装链接)。

开始
License 有效?
保存状态信息到日志
文件
F
输出内存等系统硬件信息
读取配置文件初始化系统信息
获取管理端口(adminport )
并创建Socket
Socket 已连接?
输出服务器正在运行提示,并退出
创建MBeanServer
创建一个HTML Adaptor
将HTML Adaptor 注册到
MBeanServer
启动HTML Adaptor
获取管理域(domain )及日志文件信息
开启数据库连接池(DBPool )
正常开启DBPool?
关闭DBPool
初始化线程池(ThreadPool)
开启RMI 服务
利用配置文件,获取系统类(class )和资源(resource)路径
创建一个Mlet ,并注册到MBeanServer
加载并注册系统控制
进程
读取XML 配置文件,动态加载到MLet (利用loadclass 和getMethod 方法)
初始化并启动所有服务控制模块(利用MBeanServer 的invoke
方法)
T
T
F
T
F
保存启动日志信息
保存日志信息
application.properties
applog.lcf
图2 系统启动方法(服务器端)
2. 系统功能及数据库设计
2.1 License控制管理
License控制管理实现对系统安装和运行的许可限制,其功能设计思路可参考前期概要设计文档,在此省略。

2.2 配置管理模块
2.2.1 功能
配置管理完成WLAN网络及网元的配置,包括网络节点设备部件和端口配置、系统软件配置等。

2.2.2 性能
根据网元类型(AP或AC)、IP范围(包括开始/结束IP地址以及子网掩码)、热点区域等信息批量搜索与系统存在连接的网元。

对于查找到的新网元,通过网元发现加入到系统中(支持批量创建网元),在网元被发现后,将在拓扑图中看到该网元,系统可对该网元进行自定义配置,否则采用默认设置;对于查找到的已存在网元,进行网元信息同步操作;对于未查找到的已存在网元,通过网元删除将网元移出系统。

提供网元列表功能,显示数据库中各网元的名称、IP地址、类型以及该网元和系统的连通情况。

为便于管理,系统应支持网元组管理功能,包括增加、删除网元组以及修改组属性。

网元组是网元、网元组和连接的集合。

在组内可以创建网元,组和连接,从而可以形成基于组的层次结构。

可对网元心跳连接参数进行设置,可设置心跳检测的时间间隔及是否对网元进行心跳连接检测,如果心跳检测显示网元与系统的连接不正常,系统将产生告警。

并自动导入到Excel中(可设置)。

设定心跳检测定时使能开关,并可设定心跳检测定时时间(如凌晨2点)。

提供查询软件版本,并为软件提供升级服务。

文件备份与恢复模块详见安全管理部分,发送服务配置模块详见故障管理部分。

2.2.3 输入项
1.网元信息(包括名称、类型、IP地址、SNMP端口、群组属性、拓扑图中的坐标及与服务器的连接状态等信息)。

2.网元组信息(包括名称、拓扑图中的坐标等信息)。

2.2.4 输出项
1.网元列表(包括名称、IP 地址、类型及与服务器的连接状态)。

2.网元心跳连接信息(包括周期设置及定时信息)。

3.对被管网元的删除、修改。

4.设备管理配置信息。

2.2.5 流程逻辑
2.2.5.1 添加网元及同步网元信息
开始
T
F
确定网元组ID
获取网元信息(包括名称、IP 、类型、坐标等信息)
同步网元 信息?显示无法连接到服务器
T
F
创建并初始化增加网元面板
将网元添加到拓扑对应的网
元组或热点当中
将网元信息写入数据库
用ping 原理检测服务器信息
超时?
将网元信息写入用户操作日志
日志文件
TRACE_INVO
数据表
图3 添加网元及同步网元信息流程图
2.2.5.2 批量搜索网元
开始
用户自定义操作
输入或选择目标组
T
F
搜索?创建并初始化搜索信息面板(包括网元类型、IP 、群组属性及SNMP 端口和版本)
用ping 原理检测网元信息
新建目标组
超时?在拓扑图中显示
目标组存在?
重新设定搜索条件
选择要创建的网元
用户信息输入
创建?用户自定义操作F T
F
T
T
F
图4 批量搜索网元流程图
2.2.5.3 网元查找
开始
按名称查找T
F 创建并初始化网元查找面板
在拓扑图中显示查找到的网元
从拓扑树中装载网元信息(包括名称、IP 、类型、坐标及所属网元组或热点的信息)等待查找
为空?选择查找方式
按IP 地址查找
获取查找内容
显示查找结果
提示输入查找内容
拓扑 定位?T
用户自定义操作
F
图5网元查找流程图
2.2.5.3 网元心跳连接
创建并初始化网元心跳连接面板
重载?
用户自定义操作
设置心跳连接周期
T F
开始
读获取网元心
跳信息
TBL_HEARTBEATSTAT
数据表
NEHeartbeatConf
.xml
打开心跳连接?
将网元心跳连接信息写入
数据库T
F
图6 网元心跳连接流程图
2.2.6 核心类接口
1.AbstractActionHandler.java(添加网元、网元组)
protected void addNE(IltObject parent, IlpPoint point, String title){} void setBackGround() {}
private GroupBase buildDomain(GroupEditor dlg, String type) {} public GroupBase buildDomain(TopoGroupData groupData) {}
public ManagedElement buildManagedElement(TopoNeData neData) {}
protected void addGroup(IltObject parent, String action_type, IlpPoint point) {}
protected void showProperty(IltObject Obj) {}
2. SyncNEActionHandler.java(同步网元信息)
public SyncNEActionHandler(){}
public void handleEvent(UIMenuItemData item, IltObject targetObj){}
public void SynchNE(IltObject targetObj){}
public void syncNE(){}
3. SearchVirtualNEHandler.java VirtualNEFrame.java(批量搜索网元)
VirtualNEFrame(){}
public void refresGroup(){}
public void jbInit(){}
public void OnKeySearchTable(KeyEvent keyEvt){}
public void OnCmbTypeChange(ActionEvent evt){}
public GroupBase getGroupAndCreateIfUnexist(){}
public void OnBtnCreate(){}
public void showCreateResult(List lstResult){}
public void OnBtnSearch(){}
4. SearchNeAction.java UIMOFinder.java(网元查找)
public SearchNeAction() {}
public void handleEvent(UIMenuItemData item) {}
public static void showMOFinder(){}
public UIMOFinder(){}
public void actionPerformed(ActionEvent e){}
public void tableChanged(UTBaseTableChangeEvent event){}
private boolean locateNE(){}
private void refreshButtonStatus(){}
private String getFindText(boolean bNeedPrompt){}
private int getFindBy(){}
5. NeHearbeatAction.java NEHeartbeatPanel.java NeHBConf.java(心跳连接)
public void handleEvent(UIMenuItemData item) {}
public NEHeartbeatPanel(){}
public void OnBtnSave() throws Exception{}
public void reload() throws Exception{}
public void OnBtnReload() throws Exception{}
public void actionPerformed(ActionEvent e){}
public NeHBConf(String neClass, int hbTime, boolean blEnable){}
public void setNEClass(String sNeClass){}
public void setHBTime(int iTime){}
public void setEnable(boolean blEnable){}
2.2.7 数据库设计
2.2.7.1 网元信息配置数据表设计
(1
名称网元信息 - TRACE_INFO
代码TRACE_INFO
(2
是否主键字段名字段描述数据类型长度可空缺省值是名称NAME VARCHAR2(128) 128
网元类型ID NETYPEID NUMBER(2) 2 是
显示名DISPLAYNAME VARCHAR2(128) 128 是
网元类型TYPE VARCHAR2(128) 128 是
IP地址IPADDRESS VARCHAR2(32) 32 是
读群组COMMUNITY VARCHAR2(30) 30 是
写群组WRITECOMMUNITY VARCHAR2(30) 30 是
版本VERSION VARCHAR2(5) 5 是
SNMP端口SNMPPORT NUMBER(5) 5 是
实时状态ALIVESTATUS VARCHAR2(5) 5 是
协议类型PROTOCOLTYPE VARCHAR2(10) 10 是
(3)代码
CREATE TABLE TRACE_INFO (
NETYPEID NUMBER(2),
NAME VARCHAR2(128) NOT NULL ,
DISPLAYNAME VARCHAR2(128),
TYPE VARCHAR2(128),
IPADDRESS VARCHAR2(32),
COMMUNITY VARCHAR2(30),
WRITECOMMUNITY VARCHAR2(30),
VERSION VARCHAR2(5),
SNMPPORT NUMBER(5),
ALIVESTATUS VARCHAR2(5),
PROTOCOLTYPE VARCHAR2(10),
CONSTRAINT PK_TRACE_INFO PRIMARY KEY (NAME)
);
2.2.7.2 网元心跳连接信息数据表设计
(1)说明
名称网元心跳连接信息 - TBL_ HEARTBEATSTATTABLE
代码TBL_HEARTBEATSTAT
是否主
字段名字段描述数据类型长度可空缺省值键
是开启时间BEGTIME NUMBER(19) 19
是操作编码TASKID NUMBER
64
是实例名称INSTANCENAME VARCHAR2(6
4)
255 是实例描述INSTANCEDESC VARCHAR2(2
55)
64 是
网元名称NENAME VARCHAR2(6
4)
网元心跳连接告警APHEARTBEATALARMSENT FLOAT 是
网元心跳周期设置APHEARTBEATCYCCHANGE FLOAT 是
(3)代码
CREATE TABLE TBL_HEARTBEATSTATTABLE (
MSGTIME NUMBER(19) NOT NULL ,
TASKID NUMBER NOT NULL ,
INSTANCENAME VARCHAR2(64) NOT NULL ,
INSTANCEDESC VARCHAR2(255),
NENAME VARCHAR2(64),
APHEARTBEATALARMSENT FLOAT,
APHEARTBEATCYCCHANGE FLOAT,
CONSTRAINT PK_TBL_HEARTBEATSTATTABLE PRIMARY KEY
(BEGTIME,TASKID,INSTANCENAME)
);
2.3. 性能管理模块
2.3.1 功能
系统提供性能管理模块,来采集、分析WLAN网络各网元的性能数据,监测其性能(包括链路可用率、误码率、时延与丢包等),对网络业务运行质量进行分析,以便发现问题,及时处理和调整。

2.3.2 性能
根据用户需求设置监控任务,然后根据设置从数据库中读取相应网元设备信息,通过曲线图的形式动态的展现出来,并且可以对各性能参数设置相应的门限,提供越界报警。

最后根据监控信息形成报表。

2.3.3 输入项
用户配置的监控信息
被监控网元的性能数据信息
2.3.4 输出项
网元性能数据曲线图。

显示网元的性能数据并提供不同级别的告警。

网元性能数据报表。

支持历史监控数据的查询和导出。

2.3.5 流程逻辑
开始
初始化监控类型,网元类型,
监控项
读取任务类型
实时性能管理
配置监控任务(选择监控类型、网元、监控项)设置监控时间、门限、告警级别
开始监控
读取数据库中网元性能数据
曲线图显示
形成报表
配置监控任务(选择监控类型、网元、监控项)
开始监控
读取数据库中网元性能数据
曲线图显示
配置正确?
F
T 配置正确?
T F
历史周期性监控任务管理
报表管理
读取XML 配置文件?
T
F
当前周期性监控任务管理
性能监控管理
周期性监控任务管理
查看报表
删除任务
所有者
日报周报月报PMJobConfig.xml
数据库多级搜索
数据库多级搜索
图7 性能管理流程图
2.3.6核心类接口
1.JobManagePanel.java(初始化监控类型,网元类型和监控项,建立性能监控环境)
public static PerformanceMgr getPMRmi()
public static JobConfParser getJobConfParser()
public static JobConfParser getJobConfParser(boolean blOnlyUser)
public void jbInit()
public InstanceData getInstanceData(PerformanceTask job)
public ManagedElement getCurME()
public PerformanceTask getJobFrmTable(int iRow)
public int getIndexOfJob(int taskID)
public int getIndexOfJob(PerformanceTask job)
public int[] getIndexOfJobs(List lstJob)
public List getInstanceItems(ManagedElement me, String sInstanceRDN) public void envInit(Properties props)
public void updateTableData()
2. PMManagementPanel.java (创建性能监控管理窗口)
public void jbInit()
public void initItemTree()
public void OnAction(String sCmd)
public void mouseClicked(MouseEvent e)
public static Component showPMFrame(JFrame parent)
3. JobInfoDlg.java(创建并配置周期性监控任务)
public void setDefaultHeaderRenderer(JTable table)
public void initResource()
public void jbInit() throws Exception
public void initData() throws Exception
public boolean CheckShresholdData(double maxRaise, double maxClear, double minRaise, double minClear,final String[] p_sMsg)
public void validateShresholdData(PerformanceItem newItem) throws Exception
public PerformanceTask getJobData()
public void refreshMEChildren(InstanceNode meNode)
public int doModal() throws Exception
public void showInstanceTree(boolean blShow)
public static int intervalS2I(String sInterval)
public static String intervalI2S(int iInterval)
public static int almSeverityS2I(String sLevel)
public static String almSeverityI2S(int iLevel)
public PerformanceTask getJobData()
4. ReportMainFrame.java (监控任务报表查询)
public static class CmbItemRender extends DefaultListCellRenderer
public List getVisibleMEs() throws Exception
public void getInstancs(List lstMEorGroup, List lstMoniMOs) throws Exception
public void changeReportMode(int iReportMode)
public static String getMODescription(String sDN)
public List getSelInstanceRDNs()
public void showReport(PerformanceTask task)
5.public class StasticReportPanel extends JPanel implements ActionListener, ComponentListener, TreeSelectionListener (提供日报、周报、月报等报表管理) class DefaultObjectRenderer extends DefaultListCellRenderer
public class FileTreeRenderer extends DefaultTreeCellRenderer
public static String getStringOfTimeForFileTree(Calendar cal, int iReportType)
public static String getStringOfTime(Calendar cal, int iReportType)
public void initMonitorType()
public int getCurrentMonitorType()
public int getCurrentValueType()
public List getVisibleMEs() throws Exception
public void getInstancs(List lstMEorGroup, List lstMoniMOs) throws Exception
public void OnQueryReportFile()
public Map getSelInstanceRDNs()
public void showReport()
6.public class CreateTaskDlg extends JPanel implements TreeExpansionListener (创建并配置实时监控任务)
public void initJobs(JobConfParser jobs)
public String getNeType()
public void refreshMonitorType()
public void showInstanceTree(boolean blShow)
public List getVisibleMEs(String sNeType, String sMonType) throws Exception
public void showInstance(String sNeType, MonitorType nMonType) throws Exception
public void refreshInstanceData() throws Exception
public ManagedElement getCurSelNode()
public MonitorType getMonitorType()
public void refreshMEChildren(InstanceNode meNode)
7.public class JobConfMgr 管理监控任务的配置情况
public static JobConfParser getJobParser() throws RemoteException public static JobConfParser getUsrJobParser() throws RemoteException public static boolean commitChange(JobConfParser newusrparser, ProgressControllerFEIntf progCtrlIntf) throws Exception
public static String handleMOChange(ClassTreeLoader oldUsrMOs, ClassTreeLoader newUsrMOs) throws Exception
public static boolean commiteMOChange() throws Exception
public static boolean recovery(boolean neededLoadTasks)
8.public class PerformanceManager 性能监控任务及报表管理
public PerformanceTask getTaskbyID(int iTaskID)
public PerformanceTaskList queryTasks() throws SQLException
public PerformanceTaskList queryTasks(String user) throws SQLException
public synchronized void changeTask(PerformanceTask task)
public synchronized void clearTaskAlarms(PerformanceTask task)
ublic synchronized void delTask(PerformanceTask task, ManagedElement me)
public synchronized int addTask(PerformanceTask task)
public Map getPerformanceData(TaskDataQuery dataQuery)
public Map getStasticPerformanceData(PMReportFileIndex stasticReport)
public PerformanceDataList GetWeeklyMonthPMStasticData( String filepath , String filename , int ivaluetype)
public PerformanceDataList GetDayPMStasticData( String filepath , String filename)
public List getReportFileList( QueryReportCondition queryCondition )
9.public class ScheduleHandler extends AbstractEventHandler 事件调度
public void handleEvent(ApplicationMessage applicationMessage)
public void runTasks(ArrayList taskList, long scheduleTime)
public void runOnceTask( PerformanceTask task )
public void runTask(PerformanceTask task, long scheduleTime)
public synchronized void SendAlarmAndUpdateState(int monitorItemID, PerformanceTask task,
String neID, String nodeName, String neTypeVersion,
String instanceRDN, String instanceName, int severity,
String AlarmType, String addInfo, String actionType,String alarmid )
public void updateAlarmState(String alarmType, String actionType,int taskID, int itemID, String instanceRDN,int severity)
10.public class StatisticDataCleaner extends Thread 将监控数据写入报表
public void run()
public synchronized static void writeToReadmeFile(String
logfile,String message, String taskname, String monthfile, String yearfile)
public synchronized static void writeToReportFile(String
logfile,String message)
11.public class USRDBProcess extends DbProcess 为监控任务提供数据库操作
public Map getTaskRDNs(Connection conn, int iTaskID)
public void deleteTaskRDNs(Connection conn, int iTaskID)
public void insertTaskRDNs(Connection conn, int iTaskID, Map mapRDNS) public void insertOneTaskRDN(Connection conn, int iTaskID, String sRDN, String sDescUnEncode)
public int addTask(PerformanceTask task)
public void changeTaskState(long taskID, int state)
public void changeTaskUploadState(long taskID, int state)
public void changeTaskNotifyState(long taskID, int state)
public void changeTaskConfirmState(long taskID, int state)
public void delTask(int delTaskID)
public void changeTask(PerformanceTask task)
public ArrayList getItemList(Connection dbCon, long taskID)
public PerformanceTaskList queryTasks(String meRDN)
public PerformanceDataList getPerformanceData(TaskDataQuery dataQuery, String instanceName)
public long [] GetNeededReportTasks(long lastdaytime)
public int [] GetNeededReportMonitors(long lastdaytime)
public int GetTaskMonitorType(long taskid )
public String GetTaskName(long taskid )
public String [][] GetTaskItemNameAndIds(long taskid)
public float [] GetGroupDataResult(long taskid , long lastdaytime , long currentdaytime , String NeName , String InstanceDesc , String groupname )
public void DeleteOldData( long taskid , long datakeeptime )
public void DeleteOldDatabyTime( long monitortype , long datakeeptime )
public float [][] GetDataResult(long taskid , long lastdaytime , long currentdaytime , String NeName , String InstanceDesc)
public ArrayList GetMonitorAllData(int monitortype , long
lastdaytime , long currentdaytime, int beginNum, int maxNum ) public float [][] GetAllItemDataResult(long taskid , long
lastdaytime , long currentdaytime , String NeName , String InstanceDesc) public String [][] GetTaskNeAndInstance( long taskid ,long lastdaytime , long currentdaytime )
public boolean modifyTaskTables(HashMap newTbls, HashMap
onlyNewTbls,
ProgressControllerFEIntf progCtrlIntf)
public boolean backupTaskMetaTables()
public boolean delBakTaskMetaTables()
public boolean recoverTables(String[] needTables, HashMap
needTblSql, String[] delTables, boolean needRecovery,boolean
needDelBakTask)
12.public class USRHandlerRunnable extends PoolRunnable 执行性能监控任务及报表操作
public void handleEvent(ApplicationMessage message)
public Object addTask(CmdMessage msg)
public Object delTask(CmdMessage msg)
public Object suspendTask(CmdMessage msg)
public Object resumeTask(CmdMessage msg)
public Object queryTasks(CmdMessage msg)
public Object queryCurrentTasks(CmdMessage msg)
public Object queryFinishedTasks(CmdMessage msg)
public Object confirmTaskStatus(CmdMessage msg)
public Object changeTask(CmdMessage msg)
public Object getPerformanceData(CmdMessage msg)
public Object QueryReportFile(CmdMessage msg)
public Object QueryStasticReport(CmdMessage msg)
2.3.7 数据库设计
2.3.7.1 性能监控任务数据表设计
名称性能监控任务数据表
代码TBL_PERFORMANCETASK
(2)
是否
字段名字段描述数据类型长度可空缺省值主键
是任务ID TASKID NUMBER
RDNS RDNS VARCHAR2(128) 128 是
监控类型MONITORTYPE NUMBER
间隔时间INTERVALTIME NUMBER
状体STATE NUMBER
月MONTHDAYS NUMBER
周WEEKLYDAYS NUMBER
小时HOURS NUMBER
开始时间STARTTIME NUMBER(19) 19
停止时间STOPTIME NUMBER(19) 19
历史数据可用HISTORYDATAENABLE NUMBER
上次运行时刻LASTRUNTIME NUMBER(19) 19 0
任务名称TASKNAME VARCHAR2(128) 128 是
(3) 代码
CREATE TABLE TBL_PERFORMANCETASK (
TASKID NUMBER NOT NULL ,
RDNS VARCHAR2(128),
MONITORTYPE NUMBER NOT NULL ,
INTERVALTIME NUMBER NOT NULL ,
STATE NUMBER NOT NULL ,
MONTHDAYS NUMBER NOT NULL ,
WEEKLYDAYS NUMBER NOT NULL ,
HOURS NUMBER NOT NULL ,
STARTTIME NUMBER(19) NOT NULL ,
STOPTIME NUMBER(19) NOT NULL ,
HISTORYDATAENABLE NUMBER NOT NULL ,
LASTRUNTIME NUMBER(19) NOT NULL ,
TASKNAME VARCHAR2(128),
CONSTRAINT PK_TBL_PERFORMANCETASK PRIMARY KEY (TASKID)
);
2.3.7.2性能监控对象数据表设计
名称性能监控对象数据表
代码TBL_PMTASKINSTANCE
是否主键字段名字段描述数据类型






缺省值
是任务ID TASKID NUMBER
是对象RDN INSRDN VARCHAR2(512) 512
对象DESC INSDESC VARCHAR2(1024
) 102
4

(3) 代码
CREATE TABLE TBL_PMTASKINSTANCE (
TASKID NUMBER NOT NULL ,
INSRDN VARCHAR2(512) NOT NULL ,
INSDESC VARCHAR2(1024),
CONSTRAINT PK_TBL_PMTASKINSTANCE PRIMARY KEY (TASKID,INSRDN)
)
2.3.7.3监控任务与监控项映射表设计
(1) 说明
名称监控任务与监控项映射表
代码TBL_TASKITEMSMAP
(2) 字段
是否主键字段名字段描述数据类型长度可空缺省值是任务ID TASKID NUMBER
是监控项ID ITEMID NUMBER
(3) 代码
CREATE TABLE TBL_TASKITEMSMAP (
TASKID NUMBER NOT NULL ,
ITEMID NUMBER NOT NULL ,
CONSTRAINT PK_TBL_TASKITEMSMAP PRIMARY KEY (TASKID,ITEMID)
)
2.3.7.4监控任务、监控项与告警映射表设计
(1)
名称监控任务、监控项与告警映射表
代码TBL_TASKITEMSALARMSMAP
(2)
是否主键字段名字段描述数据类型长度可空缺省值任务ID TASKID NUMBER
监控项ID ITEMID NUMBER
告警类型ALARMTYPE NUMBER
告警级别ALARMSEVERITY NUMBER
告警产生ALARMRAISE FLOAT
告警清除ALARMCLEAR FLOAT 是
(3)代码
CREATE TABLE TBL_TASKITEMSALARMSMAP (
TASKID NUMBER NOT NULL ,
ITEMID NUMBER NOT NULL ,
ALARMTYPE NUMBER NOT NULL ,
ALARMSEVERITY NUMBER NOT NULL ,
ALARMRAISE FLOAT NOT NULL ,
ALARMCLEAR FLOAT
);
2.3.7.5监控任务结果数据表设计
名称监控任务结果数据表
代码TBL_ONCETASK_RESULT
(2)
是否主
字段名字段描述数据类型长度可空缺省值

是网元ID NEID VARCHAR2(255) 255
是时间TIME NUMBER(19) 19
是监控项ID ITEMID VARCHAR2(20) 20
任务ID TASKID NUMBER 是
结果RESULT LONG RAW 是
(3) 代码
CREATE TABLE TBL_ONCETASK_RESULT (
TASKID NUMBER,
NEID VARCHAR2(255) NOT NULL ,
TIME NUMBER(19) NOT NULL ,
ITEMID VARCHAR2(20) NOT NULL ,
RESULT LONG RAW,
CONSTRAINT PK_TBL_ONCETASK_RESULT PRIMARY KEY (NEID,TIME,ITEMID)
);
2.4 故障管理模块
2.4.1功能
故障管理模块提供对所有被管理设备上报告警以及系统本身各模块在运行过程中产生告警的处理。

用户通过告警显示信息对告警进行特定的操作,通知网络维护人员对网络故障进行处理。

2.4.2 性能
故障管理模块中对告警信息的处理方式有:告警显示、告警抑制、告警确认、告警清除、告警升级、告警同步、告警通知等子模块组成及历史告警信息的查询、归档、syslog 管理和告警知识库等告警统计功能。

2.4.3输入项
告警信息
2.4.4 输出项
当前告警显示
历史告警显示
告警数据库
历史告警数据库
历史告警统计信息
2.4.5流程逻辑
利用trap 命令收集告警信息
告警信息同步开始
与告警过滤规则匹配?
Syslog 管理
在界面上通过声音,颜色显示不同级别的告警信息
根据用户设定的规则,告警级别判断
当前告警显示
历史告警显示
F
T
根据告警通知设置,通过Email ,SMS 等告警方式通知网络管理者
用户确认告警信息更新告警信息
用户清除告警信息清除告警信息
由网管人员处理告警故障
历史告警统计
历史告警归档
增加告警信息到数据表
增加告警信息到数据表
更新数据表中的告警信息
从数据表中提取告警信
息进行处理TEMPALARM
数据表
ALARM 数据表
ALARM 数据表
HISTORYALARM 数据表
ALARM 数据表ALARM 数据表
图 8 故障告警模块流程
2.4.6 核心类接口
1.public class AlarmSynchronization(告警同步)
public AlarmSynchronization(Frame browser, String title)
2.public class AlarmSuppressing(告警抑制)
public void setSuppressingRules(List suppressingRules)
public List getSuppressingRules()
3.public class SyslogHandler extends AbstractEventHandler(syslog管理)
public void handleEvent(ApplicationMessage message) throws Exception
4.public class SeverityAudioConfig extends JPanel(告警显示方式选择)
public void getTheSettingsFromServer()
public void apply()
public void setDefault()
public void play(String audio)
5.public class SeverityColorChooser extends JPanel implements ActionListener
public void getTheSevColorFromServer()
public Color getTheColor(String str)
public void apply()
public void setDefault()
6.public class AlarmBrowserHandle extends AbstractActionHandler(当前告警显示和历史告警显示)
public void handleEvent(UIMenuItemData item)
7.public class ArchiveHistoryAndEventAlarm implements ChangeListener(历史告警
public ArchiveHistory(Frame browser)
public Component getArchiveHistoryPanel()
public HistoryAlarmStatistics(Frame browser)
private JPanel buildTopologicInfo()
private JPanel buildStaticModeInfo()
private JPanel buildDisplaySet()
private JPanel buildButtonPanel()
public void actionPerformed(ActionEvent ae)
9.public class SendMail(发送邮件)
public SendMail(String smtpServer, String fromMail, String toMail,
String sSubject) throws IOException
public void setFromAddress(String s)
public void setToAddress(String s)。

相关文档
最新文档