zoukankan      html  css  js  c++  java
  • vmware虚拟机监控数据

    在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,不过这样不用考虑数据库相关问题。

    1

     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<PerfCounterInfo> perfCounterList = new List<PerfCounterInfo>();
    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<PerfMetricId> perfMetricIdList = new List<PerfMetricId>();
    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 }
  • 相关阅读:
    第二次作业
    java第一次上机练习
    java第一次作业
    第四周上机作业
    第三周作业
    第一次上机作业
    第一次作业
    3.19第三周上机作业
    第一周课下作业
    2020.3.23 java第三次作业
  • 原文地址:https://www.cnblogs.com/yuefei/p/3746080.html
Copyright © 2011-2022 走看看