设为首页 收藏本站
查看: 748|回复: 0

[经验分享] vmware虚拟机监控数据

[复制链接]

尚未签到

发表于 2015-4-7 18:14:06 | 显示全部楼层 |阅读模式
  在vsphere产品中内建一个监控所有虚机包括主机资源的插件,叫做vcenter servcie status,这个插件的主要功能是记录当前虚拟机资源的cpu、硬盘、内存和网络等相关信息。通过它可以查看24小时、周年月性能情况。而微软则需要另外安装scom产品。
  那么,它究竟是如何工作的,如何记录数据的,24小时的数据你可以看到sql server客户端daily后缀的视图,我们可以看到它是每5分钟一个点,它的记录24小时以内的数据,那么每5分钟插入一段数据,再删除一段过期数据,每周的数据在weekly后缀的视图可以看到,它记录的是每隔半小时的点,以此类推月年的数据间隔越长。vsphere所采用的是utc时间,比中国所在东八区格林威治时间晚8个小时。不过在api中时间为格林威治时间,不用作转换。
  当然我们可以直接通过sql语句去拿vsphere的数据获取性能数据,这样绕过api更直接快捷灵活,不过这里可能要手动配置vshpere数据库连接,通过api没有发现有接口可以拿到odbc的连接,那么通过第二种方法,就是通过api,貌似有点复杂,效率上肯定要低于直接sql,不过这样不用考虑数据库相关问题。
DSC0000.png
  



1 private void GetPerformance()
2 {
3     DateTime edt = DateTime.Now;
4     DateTime sdt = DateTime.Now.AddHours(-24);
5     ManagedObjectReference pmMor = util.getConnection().ServiceContent.perfManager;
6     ManagedObjectReference vmMor = util.getServiceUtil().getEntityByName("VirtualMachine", "linux13");
7
8     //---拉取系统监控项目---
9     List perfCounterList = new List();
10     PerfCounterInfo[] perfCounterInfos = (PerfCounterInfo[])util.getServiceUtil().GetDynamicProperty(pmMor, "perfCounter");
11     perfCounterInfos.ToList().ForEach(x =>
12     {
13         if (x.groupInfo.key.Equals("cpu") && x.nameInfo.key.Equals("usage") && x.rollupType == PerfSummaryType.average)
14         {
15             perfCounterList.Add(x);
16             return;
17         }
18     });
19     //---当前虚拟机条件内所有监控类型---
20     List perfMetricIdList = new List();
21     PerfMetricId[] perfMetricIds = util.getConnection().Service.QueryAvailablePerfMetric(pmMor, vmMor, sdt, true, edt, true, 300, true);
22     perfMetricIds.ToList().ForEach(x =>
23     {
24         if (perfCounterList.Where(item => item.key.Equals(x.counterId)).Count() > 0)
25         {
26             perfMetricIdList.Add(x);
27         }
28     });
29     PerfQuerySpec spec = new PerfQuerySpec()
30     {
31         metricId = perfMetricIdList.ToArray(),
32         entity = vmMor,
33         startTime = sdt,
34         endTime = edt,
35         startTimeSpecified = true,
36         endTimeSpecified = true,
37         //---时间间隔5分钟---
38         intervalId = 300,
39         intervalIdSpecified = true,
40     };
41      PerfEntityMetricBase[] metrics = util.getConnection().Service.QueryPerf(pmMor, new PerfQuerySpec[] { spec });
42 }
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-54720-1-1.html 上篇帖子: How to resize the ubuntu root partition of vmware workstation 下篇帖子: VMware虚拟机中调整Linux分区大小手记(转发)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表