使用VMware VSphere WebService SDK进行开发 (六)——检测告警信息
欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
欢迎跳转到本文的原文链接:https://honeypps.com/backend/vmware-vsphere-webservice-sdk-warn-info/
获取告警信息相对而言比较简单点,这里先陈述告警信息的pojo类,作为存储告警信息的源头(省略getter和setter方法):
public class AlarmItem
{//对象private String ObjectName;//状态private ManagedEntityStatus overallStatus;//名称private String alarmName;//触发时间private Date time;//确认时间private Date acknowledgedTime;//确认者private String acknowledgedByUser;//是否被确认private Boolean acknowledged;}
以获取主机告警信息为例:
public static List<AlarmItem> getHostAlarms(String hostName) throws Exception{List<AlarmItem> ansList = null;ManagedObjectReference hostmor = getHostByHostName(hostName);ansList = getAlarms(hostmor);return ansList;}
这里先根据主机名称获取主机的对象(HostSystem),相关代码可以参考前面的相关文章。
接下去就是获取告警的方法getAlarms(ManagedObjectReference mor):
private static List<AlarmItem> getAlarms(ManagedObjectReference mor) throws Exception{List<AlarmItem> ansList = new ArrayList<AlarmItem>();List<AlarmState> list = vimPort.getAlarmState(alarmManager, mor);for(AlarmState alarmState : list){if(alarmState.getOverallStatus().toString().equals("YELLOW") || alarmState.getOverallStatus().toString().equals("RED")){AlarmItem alarmItem = new AlarmItem();ManagedObjectReference alarm = alarmState.getAlarm();if(alarm!=null){PropertyFilterSpec alarmFilterSpec = createAlarmFilterSpec(alarm);ArrayList<PropertyFilterSpec> listpfs = new ArrayList<PropertyFilterSpec>();listpfs.add(alarmFilterSpec);List<ObjectContent> listobjcont = retrievePropertiesAllObjects(listpfs);if(listobjcont != null){ObjectContent oc = (ObjectContent) listobjcont.get(0);AlarmInfo alarmInfo = (AlarmInfo) oc.getPropSet().get(0).getVal();alarmItem.setAlarmName(alarmInfo.getName());}}alarmItem.setAcknowledged(alarmState.isAcknowledged());alarmItem.setAcknowledgedByUser(alarmState.getAcknowledgedByUser());alarmItem.setAcknowledgedTime(DateConvert.convertToDate(alarmState.getAcknowledgedTime()));alarmItem.setOverallStatus(alarmState.getOverallStatus());alarmItem.setTime(DateConvert.convertToDate(alarmState.getTime()));alarmItem.setObjectName(getObjectName(alarmState.getEntity()));ansList.add(alarmItem);}}return ansList;}
private static PropertyFilterSpec createAlarmFilterSpec(ManagedObjectReference eventHistoryCollectorRef){PropertySpec propSpec = new PropertySpec();propSpec.setAll(new Boolean(false));propSpec.getPathSet().add("info");propSpec.setType(eventHistoryCollectorRef.getType());ObjectSpec objSpec = new ObjectSpec();objSpec.setObj(eventHistoryCollectorRef);objSpec.setSkip(new Boolean(false));PropertyFilterSpec spec = new PropertyFilterSpec();spec.getPropSet().add(propSpec);spec.getObjectSet().add(objSpec);return spec;}private static String getObjectName(ManagedObjectReference mor) throws Exception{String objectName = null;PropertySpec propSpec = new PropertySpec();propSpec.setAll(new Boolean(false));propSpec.getPathSet().add("name");propSpec.setType(mor.getType());ObjectSpec objSpec = new ObjectSpec();objSpec.setObj(mor);objSpec.setSkip(new Boolean(false));PropertyFilterSpec spec = new PropertyFilterSpec();spec.getPropSet().add(propSpec);spec.getObjectSet().add(objSpec);ArrayList<PropertyFilterSpec> listpfs = new ArrayList<PropertyFilterSpec>();listpfs.add(spec);List<ObjectContent> listobjcont = retrievePropertiesAllObjects(listpfs);if(listobjcont != null){ObjectContent oc = (ObjectContent) listobjcont.get(0);objectName = (String) oc.getPropSet().get(0).getVal();}return objectName;}
这样就可以获取相关的主机告警信息。
对于其他的,比如虚拟机的告警信息就可以这样:
public static List<AlarmItem> getVmAlarms(String vmName) throws Exception{List<AlarmItem> ansList = null;ManagedObjectReference hostmor = getVmByVmName(vmName);ansList = getAlarms(hostmor);return ansList;}
对于其他的譬如vCenter, Cluster, Datacenter的告警就不一一赘述了,相信看得懂上面代码的小伙伴一定能很快的自己写出实现的方法。
这个系列暂时到此为止,如有意见或者建议的小伙伴记得在下方留言哦~
欢迎跳转到本文的原文链接:https://honeypps.com/backend/vmware-vsphere-webservice-sdk-warn-info/
欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
使用VMware VSphere WebService SDK进行开发 (六)——检测告警信息相关推荐
- 使用VMware VSphere WebService SDK进行开发 (一)——基本信息阐述
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 使用VMware VSphere WebService SDK进行开发 (七)——获取数据中心、集群、主机、虚拟机的目录结构
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 使用VMware VSphere WebService SDK进行开发 (二)——获取虚拟机cpu的使用情况
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 使用VMware VSphere WebService SDK进行开发 (五)——根据虚拟机的名称获取对应主机的IP地址
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 使用VMware VSphere WebService SDK进行开发 (四)——获取集群(Cluster, ComputeResource)的相关信息
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- VMware vSphere开发(1)安装配置VMware vSphere Web Services SDK的运行环境
一.准备 使用VMware vSphere Web Services SDK开发Java Web-service客户端应用,需要使用到java SDK和Java Web Service开发工具,如下: ...
- VMware vSphere Web Services SDK编程指南(二)-Java 开发设置
Java 开发设置 这节说明如何设置开发java客户端的开发环境. 主要包括以下内容: ■ Java 开发的各项要求 ■ java 开发设置 ■ 生成存根和编译类文件 ■ 运行 SimpleClien ...
- VMware vSphere Web Services SDK编程指南(一)-SDK简介
vSphere Web Services SDK 简介 VMware vSphere® Web Services SDK 包含了与VMware vSphere API一起工作所需的所有组件,如 WSD ...
最新文章
- linux xxd查看二进制文件命令
- python2 与 python3 语法区别
- TortoiseSVN操作
- 不在 sudoers 文件中。此事将被报告_快餐包装中检出致癌物质?麦当劳、汉堡王回应!...
- 美团饿了么:严禁诱导强迫骑手注册个体工商户
- Since WWDC released the first developer
- 迹中元素可交换性的证明tr(AB)=tr(BA)
- UOS (deepin)刻录u盘安装系统
- k2p华硕系统怎么设置_双频路由器怎么设置网速快(k2p刷华硕怎么设置网速好)
- 路由与交换技术(交换机中的冗余链路管理)
- pythonurllib爬虫教学_Python学习教程:这里是Python爬虫的起点,抢占资源啦
- 通过CSS样式缩放图片导致图片模糊的解决方案
- Nginx Web 基础入门
- 数据库PostrageSQL-证书认证
- 十大老牌黑客之:米特尼克
- 源生的html属性js,使用源生JS自定义动画(支持多个属性)
- 两数之差的补码等于被减数的补码与减数相反数的补码。_二进制的原码、反码、补码...
- 新概念英语第一册 (2)
- 有哪些投资小的生意(盘点四个投资小风险低的生意)
- 重装系统win10安装教程