最近一直没有更新这部分的内容,会利用五一时间完成vcenter这一个系列。

这里先给大家一本关于vijava开发的书,比较实用。

地址:http://pan.baidu.com/s/1gfkl9mj。密码:t1y3

有网友评论要数据存储读写速度及延迟之后时间的实现。今天就先介绍关于java实现实时监控vcenter状态的内容,包括CPU、内存、网络、存储等。

在看这篇前如果还是新手,建议先看下我的第一篇  http://www.cnblogs.com/xiaodige/p/6721517.html(vijava基本连接和数据中心信息获取)

先说一下我之前是怎么发现,CPU、内存、网络、存储等可以监控的内容。我用vsphere client连接vcenter查看客户端所能监控的属性.

建议大家在实现功能前,先看下官方文档关于性能监控的知识。贴上连接vcenter6.0的官方文档连接。http://pubs.vmware.com/vsphere-60/index.jsp

比如要监控虚拟机的性能信息:首先得保证虚拟机开机,选择“性能选项”,点击“图标选项”,这样就能看到它所支持的性能监控信息。下面贴图:

下图左边就是该对象具体能监控的信息,右边就是具体性能,使用率啊等等。

做性能监控这块,如果不知道具体能监控对象的哪些属性就打开客户端看看。下面就贴上具体的java实现代码。

package com.iking.vmware.performance;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.iking.vmware.bean.PerformanceManage;
import com.iking.vmware.bean.VsphereConst;
import com.iking.vmware.connection.ConnectedVimServiceBase;
import com.iking.vmware.vim25.PerfCounterInfo;
import com.iking.vmware.vim25.PerfEntityMetric;
import com.iking.vmware.vim25.PerfEntityMetricBase;
import com.iking.vmware.vim25.PerfMetricId;
import com.iking.vmware.vim25.PerfMetricIntSeries;
import com.iking.vmware.vim25.PerfMetricSeries;
import com.iking.vmware.vim25.PerfQuerySpec;
import com.iking.vmware.vim25.PerfSampleInfo;
import com.iking.vmware.vim25.mo.Folder;
import com.iking.vmware.vim25.mo.HostSystem;
import com.iking.vmware.vim25.mo.InventoryNavigator;
import com.iking.vmware.vim25.mo.ManagedEntity;
import com.iking.vmware.vim25.mo.PerformanceManager; /**
* @description 监控统计vcenter所有对象性能数据
* @date 2017年2月9日11:46:35
* @version 1.1
* @author DiWk
*/
public class PerformanceCounter {
private ConnectedVimServiceBase cs = null; public ConnectedVimServiceBase getCs() {
return cs;
} public void setCs(ConnectedVimServiceBase cs) {
this.cs = cs;
} /**
* @description 根据属性名称、类型、对象、采集间隔获取所有的性能数据
* @date 2017年2月8日14:37:58
* @return PerformanceMap 性能数据map对象
* @version 1.1
* @author DiWk
*/
public Map<String, PerformanceManage> getPerfData(String nameInfo, List<String> groupInfo, ManagedEntity mo,
Integer interval) {
Map<String, PerformanceManage> PerformanceMap = null; Date date = new Date();
Date sTime = new Date(date.getTime() - 24 * 60 * 60 * 1000); Calendar calBegin = Calendar.getInstance();
calBegin.setTime(sTime); Calendar calEnd = Calendar.getInstance();
calEnd.setTime(date); try {
PerformanceMap = new HashMap<String, PerformanceManage>();
if (mo != null) {
PerformanceManager performanceManager = cs.si.getPerformanceManager();
PerfCounterInfo[] cInfo = performanceManager.getPerfCounter(); Map<Integer, PerfCounterInfo> counters = new HashMap<Integer, PerfCounterInfo>(); for (PerfCounterInfo pcInfo : cInfo) {
counters.put(new Integer(pcInfo.getKey()), pcInfo);
} PerfMetricId[] listpermeid = performanceManager.queryAvailablePerfMetric(mo, null, null, interval); ArrayList<PerfMetricId> mMetrics = new ArrayList<PerfMetricId>();
if (listpermeid != null) {
for (int index = 0; index < listpermeid.length; ++index) {
if (counters.containsKey(new Integer(listpermeid[index].getCounterId()))) {
mMetrics.add(listpermeid[index]);
}
}
} PerfQuerySpec qSpec = new PerfQuerySpec();
qSpec.setEntity(mo.getMOR());
qSpec.setMetricId(listpermeid);
qSpec.setStartTime(calBegin);
qSpec.setEndTime(calEnd);
qSpec.setIntervalId(interval);
qSpec.setFormat("normal"); PerfQuerySpec[] arryQuery = { qSpec }; PerfEntityMetricBase[] pValues = performanceManager.queryPerf(arryQuery); if (pValues == null || pValues.length <= 0) {
return null;
}
PerfSampleInfo[] listperfsinfo = ((PerfEntityMetric) pValues[0]).getSampleInfo();
for (int i = 0; i < pValues.length; i++) {
PerfMetricSeries[] listpems = ((PerfEntityMetric) pValues[i]).getValue(); for (int vi = 0; vi < listpems.length; ++vi) {
PerfCounterInfo pci = (PerfCounterInfo) counters
.get(new Integer(listpems[vi].getId().getCounterId())); if (pci != null) {
for (String Info : groupInfo) {
PerformanceManage performanceManage = new PerformanceManage();
performanceManage.setStartTime(listperfsinfo[0].getTimestamp().getTime());
performanceManage
.setEndTime((listperfsinfo[listperfsinfo.length - 1]).getTimestamp().getTime());
if (pci.getNameInfo().getKey().equalsIgnoreCase(nameInfo)
&& pci.getGroupInfo().getKey().equalsIgnoreCase(Info)) {
if (listpems[vi] instanceof PerfMetricIntSeries) {
PerfMetricIntSeries val = (PerfMetricIntSeries) listpems[vi];
long[] lislon = val.getValue(); List<Long> asList = new ArrayList<Long>();
for (Long k : lislon) {
asList.add(k);
}
performanceManage.setPerformanceValues(asList);
PerformanceMap.put(Info, performanceManage);
}
}
}
}
}
} }
} catch (Exception e) {
e.printStackTrace();
}
return PerformanceMap;
} /** main测试方法 */
public static void main(String[] args) throws Exception {
PerformanceCounter performanceCounter2 = new PerformanceCounter();
ConnectedVimServiceBase cs = new ConnectedVimServiceBase();
cs.connect("192.168.1.253", "administrator@vsphere.local", "Iking!@#456");
performanceCounter2.setCs(cs);
Folder rootFolder = cs.si.getRootFolder();
HostSystem dataCenter = (HostSystem) new InventoryNavigator(rootFolder)
.searchManagedEntity(VsphereConst.HOSTSYSTEM, "192.168.1.254");
List<String> listNm = new ArrayList<String>();
listNm.add("datastore");
Map<String, PerformanceManage> perfData = performanceCounter2.getPerfData("write", listNm, dataCenter, 20);
PerformanceManage performanceManage = perfData.get("datastore");
List<Long> performanceValues = performanceManage.getPerformanceValues();
System.out.println(performanceValues.toString());
}
}

上面就是通过Java代码实现对vcenter性能的实时监控,相信大家结合官方文档和我分享的电子书一定能实现自己想要的效果。

关于数据存储并没有历史信息的监控,只有实时信息的监控。所以当我统计数据存储的历史信息时,我是累加了所有的虚拟机、主机关于数据存储的数据。我知道这不是一个很好的方法,但是目前没想到更好的。希望和网友分享学习。

Vmware Vsphere WebService之vijava 开发(二)一性能信息的采集(实时监控)的更多相关文章

  1. Vmware Vsphere WebService之vijava 开发一-vcenter连接、及集群信息获取

    开始是通过java代码调用vsphere提供的原始接口,从而控制vcenter的操作.当第一个版本做完之后发现代码执行的速度特别慢,后来在网上看到有人用vijava(对vsphere原始接口封装)编程 ...

  2. Vmware Vsphere WebService SDK开发(第一讲)-基本知识学习

    刚开始这方面开发的时候,不知道如何下手,能够查到的资料特别少,而且看到很多网友和我一样也在找这方面的资料.接下来的一段时间我就结合自己所参与的项目,完成关于Vmware Vsphere WebServ ...

  3. Vmware vsphere webservice sdk 连接打开慢的问题

    还在为VimService实例化速度慢的问题烦恼吗?这有一篇文章可以帮你解决问题,英文水平所限,就不翻译了,原文地址http://kb.vmware.com/selfservice/microsite ...

  4. 二十九、rsync+inotity实时监控同步工具

    一.场景应用:                                    客户通过url访问资源(查询,下载等),并发量是非常高的,所以运用负载均衡分担web服务器的压力,在后端连接不同的 ...

  5. VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池

    VMware vSphere 服务器虚拟化之二十五 桌面虚拟化之终端服务池 终端服务池是指由一台或多台微软终端服务器提供服务的桌面源组成的池.终端服务器桌面源可交付多个桌面.它具有以下特征: 1.终端 ...

  6. VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池

    VMware vSphere 服务器虚拟化之二十二桌面虚拟化之创建View Composer链接克隆的虚拟桌面池 在上一节我们创建了完整克隆的自动专有桌面池,在创建过程比较缓慢,这次我们将学习创建Vi ...

  7. VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器

    VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器 View 传输服务器用于管理和简化数据中心与在最终用户本地系统上检出使用的 View 桌面之间的数据传输.必须安 ...

  8. VMware vSphere 服务器虚拟化之二十七桌面虚拟化之View中使用Thinapp软件虚拟化

    VMware vSphere 服务器虚拟化之二十七桌面虚拟化之View中使用Thinapp软件虚拟化 VMware ThinApp 应用程序虚拟化软件是无代理解决方案,通过将应用程序隔离并封装为EXE ...

  9. VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management

    VMware vSphere 服务器虚拟化之二十六 桌面虚拟化之View Persona Management 实验失败告终,启动VMware View Persona Management服务报10 ...

随机推荐

  1. 原生js更改css样式的两种方式

    下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1:css表达式2:css表达式3  &quo ...

  2. 10分钟精通SharePoint - SharePoint升级

    类型: b2b(安装更新)和v2v(跨版本升级) 内容:二进制文件和数据库 过程:   升级前检查 - 检查场内数据,配置和自定义等等 升级准备和计划 - 根据需要和升级检查制定相应计划和准备工作   ...

  3. 阿里云Linux启动tomcat并能外网访问

    问题描述: 先描述一下我的心路历程吧,新买了阿里云服务器,由于需求不是很大,只是为了备案,所以买了个最低配的,而且是Windows server2012的.那现在需要做的是在这个乞丐版的server上 ...

  4. python全栈开发第10天-正则表达式

    正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表通常被用来检索.替换那些符合某个模式 ...

  5. java与xml之间的转换(jaxb)

    使用java提供的JAXB来实现java到xml之间的转换,先创建两个持久化的类(Student和Classroom): Classroom: package com.model; public cl ...

  6. Java常量笔记

    在添加文件名的同时,文件名和内容可以不相同!! 1·Java 常量 常量就是固定不变的量,一旦被定义,它的值就不能被改变. 例实: 书中的代码不全,在这里不补充一下: 书中的源代码: public c ...

  7. linux—粘滞位的设置

    粘滞位(Stickybit),或粘着位,是Unix文件系统权限的一个旗标.最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件.如果不为目录设置粘滞位,任 ...

  8. Android Weekly Notes Issue #250

    Android Weekly Issue #250 March 26th, 2017 Android Weekly Issue #250. 本期内容: 好几篇关于Android O预览版的文章; JU ...

  9. CF766 E. Mahmoud and a xor trip [预处理][树形dp]

    题解: 二营长!你他娘的意大利炮呢? dp[i][j][0]: 从i,跋涉到以i为根的子树的每一个节点,在第j个数位上一共产生了多少个0. dp[i][j][1]: 从i,跋涉到以i为根的子树的每一个 ...

  10. [认证授权] 2.OAuth2(续) & JSON Web Token

    0. RFC6749还有哪些可以完善的? 0.1. 撤销Token 在上篇[认证授权] 1.OAuth2授权中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题,但是只提供了如何 ...