1接口说明
通过北向网管获取性能数据的接口,主要用PerformanceManagementMgr_I。
获取当前:getAllCurrentPMData
获取历史:getHistoryPMData
Common_IHolder commonHolder = new Common_IHolder();
emsSession.getManager("PerformanceManagement", commonHolder);
PerformanceManagementMgr_I pmMgr = PerformanceManagementMgr_IHelper.narrow(commonHolder.value);
//当前
pmMgr.getAllCurrentPMData(pmTPSelectList, pmParameters, 100, pmDataList, pmIt);
//历史
pmMgr.getHistoryPMData(destination, userName, password, pmTPSelectList, pmParameters, startTime, endTime, forceUpload);
2当前性能getAllCurrentPMData
void getAllCurrentPMData(
mtnm.tmforum.org.performance.PMTPSelect_T[] pmTPSelectList,
java.lang.String[] pmParameters,
int how_many,
mtnm.tmforum.org.performance.PMDataList_THolder pmDataList,
mtnm.tmforum.org.performance.PMDataIterator_IHolder pmIt
) throws mtnm.tmforum.org.globaldefs.ProcessingFailureException;
可以看到请求参数中,可能有疑问的就是pmTPSelectList和pmParameters了。
2.1pmTPSelectList
下面是一个例子,指定managedElement,按照15分钟的频率获取当前性能
//性能监视对象名称,不可以为空
NameAndStringValue_T kVFirst = new NameAndStringValue_T("EMS", "Huawei/NCE");
NameAndStringValue_T kVSecond = new NameAndStringValue_T("ManagedElement", managedElement);
NameAndStringValue_T[] name = {kVFirst, kVSecond};
//周期列表(为空表示查所有支持的周期);BITS仅支持15min。
//String[] granularityList = new String[0];//为空
//String[] granularityList = {"24h"};
//String[] granularityList = {"15min","24h"};
String[] granularityList = {"15min"};
//层速率列表,可以为空
short[] layerRateList = new short[0];
//性能监视位置列表,可以为空
String[] pMLocationList = new String[0];
PMTPSelect_T pmtpTemp = new PMTPSelect_T(name, layerRateList, pMLocationList, granularityList);
PMTPSelect_T[] pmTPSelectList = {pmtpTemp};
2.2pmParameters
改参数指定监视哪些性能,该参数,可以为空
例如如下监控这部分性能
//String[] pmParameters = new String[0];//为空
String[] pmParameters = new String[8];
pmParameters[0] = "PMP_SM_EB";
pmParameters[1] = "PMP_SHDSL_LINEATTN";
pmParameters[2] = "PMP_RPL_MAX";
pmParameters[3] = "PMP_RPL_MIN";
pmParameters[4] = "PMP_RPL";
pmParameters[5] = "PMP_TPL_MAX";
pmParameters[6] = "PMP_TPL_MIN";
pmParameters[7] = "PMP_TPL";
具体想知道这个pmParameters 能支持哪些参数,具体见如下这个文件
拉到底,看到所支持的性能,大概有2400种,这里我就不挨个列出来了
2.3pmDataList
查询返回的对象,这个没啥好解释的,加上@Data注解,就可以打印或者get了,转json什么的
3历史性能getHistoryPMData
3.1ftp参数
下述的destination、userName、password、startTime、endTime这里不在重复说明,这几个参数和历史告警一样的写法。
华为北向网管NCE开发教程(7)历史告警采集
区别于,destination支持文件格式,这里我使用txt文件
支持文件:.pfm/.txt/.dat/.log/.xlsx/.csv/.xls/.xml/*.zip 中的一种
3.2pmTPSelectList、pmParameters
pmTPSelectList和pmParameters和上述的当前性能一样写法,这里也不在重复说明。
需要注意forceUpload
文档中说,0从NEC查询,1从网元查询,1:true,0:false。这里我们使用ture,网元的数据只有上传NCE以后,才能从NCE查询到,因此如果从NCE,不一定查询到数据
void getHistoryPMData(
java.lang.String destination,
java.lang.String userName,
java.lang.String password,
mtnm.tmforum.org.performance.PMTPSelect_T[] pmTPSelectList,
java.lang.String[] pmParameters,
java.lang.String startTime,
java.lang.String endTime,
boolean forceUpload
) throws mtnm.tmforum.org.globaldefs.ProcessingFailureException;
3.3文件传输订阅
这里参考订阅通知,没有订阅通知也不影响,主要就是没有订阅通知,不知道报错与否,也不知道什么时候生成文件。
华为北向网管NCE开发教程(6)消息订阅
4注意事项
4.1生成文件是无内容
生成在FTP的文件,只有列名,无实际数据
我当时遇到的时因为时间问题造成的,时间间隔长,就会出现,因此我后来实现,就是每次获取历史数据,只获取一天或者两天以内的,只要时间一拉长,就会出现空文件夹,我猜测,可能时间间隔太长,数据量太多,导致北向网管写数据的时候可能有些问题吧,因此就写了个空文件。
比如下面这个,我从22年6月5到24年6月5,全都是空内容
//String startTime = "20220605000000.0";
//String endTime = "20240606000000.0";
比如下面这个,我从24年1月1到24年6月5,大部分都是空,偶尔几个文件存在点数据
//String startTime = "20240101000000.0";
//String endTime = "20240606000000.0";
比如下面这个,我从24年6月5到24年6月6,就都有数据了
//String startTime = "20220605000000.0";
//String endTime = "20240606000000.0";
5解析性能数据,txt为例
这是txt的内容
这是文档给的xlsx示例
上述两种文件格式,其实都是一样解析思路,下面是我的解析思路
1、读取行
txt. \n切割为行
xlsx:读取excel行
2、读取列
txt. \t切割为列
xlsx:读取excel列
3、合并相同
txt.某个\t到\t合并
xlsx:某列到某列合并
简单一点说,就是把这个文件的内容读取出来,当然了,你要是偷懒,也可以不合并,顶多就是每一行的数据,前面的这一大串是一样的。