Search in sources :

Example 6 with PerfCounterInfo

use of com.vmware.vim25.PerfCounterInfo in project opennms by OpenNMS.

the class VmwareConfigBuilder method generateData.

private void generateData(String rrdRepository) throws Exception {
    serviceInstance = new ServiceInstance(new URL("https://" + hostname + "/sdk"), username, password);
    performanceManager = serviceInstance.getPerformanceManager();
    PerfCounterInfo[] perfCounterInfos = performanceManager.getPerfCounter();
    for (PerfCounterInfo perfCounterInfo : perfCounterInfos) {
        perfCounterInfoMap.put(perfCounterInfo.getKey(), perfCounterInfo);
    }
    System.out.println("Generating configuration files for '" + serviceInstance.getAboutInfo().getFullName() + "' using rrdRepository '" + rrdRepository + "'...");
    final StringBuilder buffer = new StringBuilder();
    buffer.append("Configuration file generated for:\n\n");
    buffer.append("Full name.......: " + serviceInstance.getAboutInfo().getFullName() + "\n");
    buffer.append("API type........: " + serviceInstance.getAboutInfo().getApiType() + "\n");
    buffer.append("API version.....: " + serviceInstance.getAboutInfo().getApiVersion() + "\n");
    buffer.append("Product name....: " + serviceInstance.getAboutInfo().getLicenseProductName() + "\n");
    buffer.append("Product version.: " + serviceInstance.getAboutInfo().getLicenseProductVersion() + "\n");
    buffer.append("OS type.........: " + serviceInstance.getAboutInfo().getOsType() + "\n");
    versionInformation = buffer.toString();
    String[] arr = serviceInstance.getAboutInfo().getApiVersion().split("\\.");
    if (arr.length > 1) {
        apiVersion = arr[0];
        if (Integer.valueOf(apiVersion) < 4) {
            apiVersion = "3";
        }
    }
    ManagedEntity[] hostSystems, virtualMachines;
    virtualMachines = new InventoryNavigator(serviceInstance.getRootFolder()).searchManagedEntities("VirtualMachine");
    if (virtualMachines != null) {
        if (virtualMachines.length > 0) {
            for (ManagedEntity managedEntity : virtualMachines) {
                if ("poweredOn".equals(((VirtualMachine) managedEntity).getRuntime().getPowerState().toString())) {
                    lookupMetrics("default-VirtualMachine" + apiVersion, managedEntity.getMOR().getVal());
                    break;
                }
            }
        } else {
            System.err.println("No virtual machines found");
        }
    }
    hostSystems = new InventoryNavigator(serviceInstance.getRootFolder()).searchManagedEntities("HostSystem");
    if (hostSystems != null) {
        if (hostSystems.length > 0) {
            for (ManagedEntity managedEntity : hostSystems) {
                if ("poweredOn".equals(((HostSystem) managedEntity).getRuntime().getPowerState().toString())) {
                    lookupMetrics("default-HostSystem" + apiVersion, managedEntity.getMOR().getVal());
                    break;
                }
            }
        } else {
            System.err.println("No host systems found!");
        }
    }
    saveVMwareDatacollectionConfig(rrdRepository);
    saveVMwareDatacollectionInclude();
    saveVMwareGraphProperties();
}
Also used : ManagedEntity(com.vmware.vim25.mo.ManagedEntity) PerfCounterInfo(com.vmware.vim25.PerfCounterInfo) ServiceInstance(com.vmware.vim25.mo.ServiceInstance) URL(java.net.URL) InventoryNavigator(com.vmware.vim25.mo.InventoryNavigator)

Example 7 with PerfCounterInfo

use of com.vmware.vim25.PerfCounterInfo in project opennms by OpenNMS.

the class VmwareViJavaAccess method queryPerformanceValues.

/**
 * This method queries performance values for a given managed entity.
 *
 * @param managedEntity the managed entity to query
 * @return the perfomance values
 * @throws RemoteException
 */
public VmwarePerformanceValues queryPerformanceValues(ManagedEntity managedEntity) throws RemoteException {
    VmwarePerformanceValues vmwarePerformanceValues = new VmwarePerformanceValues();
    int refreshRate = getPerformanceManager().queryPerfProviderSummary(managedEntity).getRefreshRate();
    PerfQuerySpec perfQuerySpec = new PerfQuerySpec();
    perfQuerySpec.setEntity(managedEntity.getMOR());
    perfQuerySpec.setMaxSample(Integer.valueOf(1));
    perfQuerySpec.setIntervalId(refreshRate);
    PerfEntityMetricBase[] perfEntityMetricBases = getPerformanceManager().queryPerf(new PerfQuerySpec[] { perfQuerySpec });
    if (perfEntityMetricBases != null) {
        for (int i = 0; i < perfEntityMetricBases.length; i++) {
            PerfMetricSeries[] perfMetricSeries = ((PerfEntityMetric) perfEntityMetricBases[i]).getValue();
            for (int j = 0; perfMetricSeries != null && j < perfMetricSeries.length; j++) {
                if (perfMetricSeries[j] instanceof PerfMetricIntSeries) {
                    long[] longs = ((PerfMetricIntSeries) perfMetricSeries[j]).getValue();
                    if (longs.length == 1) {
                        PerfCounterInfo perfCounterInfo = getPerfCounterInfoMap().get(perfMetricSeries[j].getId().getCounterId());
                        String instance = perfMetricSeries[j].getId().getInstance();
                        String name = getHumanReadableName(perfCounterInfo);
                        if (instance != null && !"".equals(instance)) {
                            vmwarePerformanceValues.addValue(name, instance, longs[0]);
                        } else {
                            vmwarePerformanceValues.addValue(name, longs[0]);
                        }
                    }
                }
            }
        }
    }
    return vmwarePerformanceValues;
}
Also used : PerfMetricIntSeries(com.vmware.vim25.PerfMetricIntSeries) PerfCounterInfo(com.vmware.vim25.PerfCounterInfo) PerfMetricSeries(com.vmware.vim25.PerfMetricSeries) VmwarePerformanceValues(org.opennms.netmgt.collectd.vmware.vijava.VmwarePerformanceValues) PerfQuerySpec(com.vmware.vim25.PerfQuerySpec) PerfEntityMetricBase(com.vmware.vim25.PerfEntityMetricBase) PerfEntityMetric(com.vmware.vim25.PerfEntityMetric)

Example 8 with PerfCounterInfo

use of com.vmware.vim25.PerfCounterInfo in project CloudStack-archive by CloudStack-extras.

the class PerfCounterInfoMapper method lookup.

public PerfCounterInfo[] lookup(String groupName, String counterName, PerfSummaryType rollupType) {
    assert (groupName != null);
    assert (counterName != null);
    Map<String, List<PerfCounterInfo>> groupMap = _mapCounterInfos.get(groupName);
    if (groupMap == null)
        return null;
    List<PerfCounterInfo> counterInfoList = groupMap.get(counterName);
    if (counterInfoList == null)
        return null;
    if (rollupType == null) {
        return counterInfoList.toArray(new PerfCounterInfo[0]);
    }
    for (PerfCounterInfo info : counterInfoList) {
        if (info.getRollupType() == rollupType)
            return new PerfCounterInfo[] { info };
    }
    return null;
}
Also used : PerfCounterInfo(com.vmware.vim25.PerfCounterInfo) List(java.util.List) ArrayList(java.util.ArrayList)

Example 9 with PerfCounterInfo

use of com.vmware.vim25.PerfCounterInfo in project cloudstack by apache.

the class VmwareResource method getVmStats.

private HashMap<String, VmStatsEntry> getVmStats(List<String> vmNames) throws Exception {
    VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext());
    HashMap<String, VmStatsEntry> vmResponseMap = new HashMap<String, VmStatsEntry>();
    ManagedObjectReference perfMgr = getServiceContext().getServiceContent().getPerfManager();
    VimPortType service = getServiceContext().getService();
    PerfCounterInfo rxPerfCounterInfo = null;
    PerfCounterInfo txPerfCounterInfo = null;
    List<PerfCounterInfo> cInfo = getServiceContext().getVimClient().getDynamicProperty(perfMgr, "perfCounter");
    for (PerfCounterInfo info : cInfo) {
        if ("net".equalsIgnoreCase(info.getGroupInfo().getKey())) {
            if ("transmitted".equalsIgnoreCase(info.getNameInfo().getKey())) {
                txPerfCounterInfo = info;
            }
            if ("received".equalsIgnoreCase(info.getNameInfo().getKey())) {
                rxPerfCounterInfo = info;
            }
        }
    }
    int key = ((HostMO) hyperHost).getCustomFieldKey("VirtualMachine", CustomFieldConstants.CLOUD_VM_INTERNAL_NAME);
    if (key == 0) {
        s_logger.warn("Custom field " + CustomFieldConstants.CLOUD_VM_INTERNAL_NAME + " is not registered ?!");
    }
    String instanceNameCustomField = "value[" + key + "]";
    final String numCpuStr = "summary.config.numCpu";
    final String cpuUseStr = "summary.quickStats.overallCpuUsage";
    final String guestMemUseStr = "summary.quickStats.guestMemoryUsage";
    final String memLimitStr = "resourceConfig.memoryAllocation.limit";
    final String memMbStr = "config.hardware.memoryMB";
    final String allocatedCpuStr = "summary.runtime.maxCpuUsage";
    ObjectContent[] ocs = hyperHost.getVmPropertiesOnHyperHost(new String[] { "name", numCpuStr, cpuUseStr, guestMemUseStr, memLimitStr, memMbStr, allocatedCpuStr, instanceNameCustomField });
    if (ocs != null && ocs.length > 0) {
        for (ObjectContent oc : ocs) {
            List<DynamicProperty> objProps = oc.getPropSet();
            if (objProps != null) {
                String name = null;
                String numberCPUs = null;
                double maxCpuUsage = 0;
                String memlimit = null;
                String memkb = null;
                String guestMemusage = null;
                String vmNameOnVcenter = null;
                String vmInternalCSName = null;
                double allocatedCpu = 0;
                for (DynamicProperty objProp : objProps) {
                    if (objProp.getName().equals("name")) {
                        vmNameOnVcenter = objProp.getVal().toString();
                    } else if (objProp.getName().contains(instanceNameCustomField)) {
                        if (objProp.getVal() != null)
                            vmInternalCSName = ((CustomFieldStringValue) objProp.getVal()).getValue();
                    } else if (objProp.getName().equals(guestMemusage)) {
                        guestMemusage = objProp.getVal().toString();
                    } else if (objProp.getName().equals(numCpuStr)) {
                        numberCPUs = objProp.getVal().toString();
                    } else if (objProp.getName().equals(cpuUseStr)) {
                        maxCpuUsage = NumberUtils.toDouble(objProp.getVal().toString());
                    } else if (objProp.getName().equals(memLimitStr)) {
                        memlimit = objProp.getVal().toString();
                    } else if (objProp.getName().equals(memMbStr)) {
                        memkb = objProp.getVal().toString();
                    } else if (objProp.getName().equals(allocatedCpuStr)) {
                        allocatedCpu = NumberUtils.toDouble(objProp.getVal().toString());
                    }
                }
                maxCpuUsage = (maxCpuUsage / allocatedCpu) * 100;
                new VirtualMachineMO(hyperHost.getContext(), oc.getObj());
                if (vmInternalCSName != null) {
                    name = vmInternalCSName;
                } else {
                    name = vmNameOnVcenter;
                }
                if (!vmNames.contains(name)) {
                    continue;
                }
                ManagedObjectReference vmMor = hyperHost.findVmOnHyperHost(name).getMor();
                assert (vmMor != null);
                ArrayList<PerfMetricId> vmNetworkMetrics = new ArrayList<PerfMetricId>();
                // get all the metrics from the available sample period
                List<PerfMetricId> perfMetrics = service.queryAvailablePerfMetric(perfMgr, vmMor, null, null, null);
                if (perfMetrics != null) {
                    for (int index = 0; index < perfMetrics.size(); ++index) {
                        if (((rxPerfCounterInfo != null) && (perfMetrics.get(index).getCounterId() == rxPerfCounterInfo.getKey())) || ((txPerfCounterInfo != null) && (perfMetrics.get(index).getCounterId() == txPerfCounterInfo.getKey()))) {
                            vmNetworkMetrics.add(perfMetrics.get(index));
                        }
                    }
                }
                double networkReadKBs = 0;
                double networkWriteKBs = 0;
                long sampleDuration = 0;
                if (vmNetworkMetrics.size() != 0) {
                    PerfQuerySpec qSpec = new PerfQuerySpec();
                    qSpec.setEntity(vmMor);
                    PerfMetricId[] availableMetricIds = vmNetworkMetrics.toArray(new PerfMetricId[0]);
                    qSpec.getMetricId().addAll(Arrays.asList(availableMetricIds));
                    List<PerfQuerySpec> qSpecs = new ArrayList<PerfQuerySpec>();
                    qSpecs.add(qSpec);
                    List<PerfEntityMetricBase> values = service.queryPerf(perfMgr, qSpecs);
                    for (int i = 0; i < values.size(); ++i) {
                        List<PerfSampleInfo> infos = ((PerfEntityMetric) values.get(i)).getSampleInfo();
                        if (infos != null && infos.size() > 0) {
                            int endMs = infos.get(infos.size() - 1).getTimestamp().getSecond() * 1000 + infos.get(infos.size() - 1).getTimestamp().getMillisecond();
                            int beginMs = infos.get(0).getTimestamp().getSecond() * 1000 + infos.get(0).getTimestamp().getMillisecond();
                            sampleDuration = (endMs - beginMs) / 1000;
                            List<PerfMetricSeries> vals = ((PerfEntityMetric) values.get(i)).getValue();
                            for (int vi = 0; ((vals != null) && (vi < vals.size())); ++vi) {
                                if (vals.get(vi) instanceof PerfMetricIntSeries) {
                                    PerfMetricIntSeries val = (PerfMetricIntSeries) vals.get(vi);
                                    List<Long> perfValues = val.getValue();
                                    Long sumRate = 0L;
                                    for (int j = 0; j < infos.size(); j++) {
                                        // Size of the array matches the size as the PerfSampleInfo
                                        sumRate += perfValues.get(j);
                                    }
                                    Long averageRate = sumRate / infos.size();
                                    if (vals.get(vi).getId().getCounterId() == rxPerfCounterInfo.getKey()) {
                                        //get the average RX rate multiplied by sampled duration
                                        networkReadKBs = sampleDuration * averageRate;
                                    }
                                    if (vals.get(vi).getId().getCounterId() == txPerfCounterInfo.getKey()) {
                                        //get the average TX rate multiplied by sampled duration
                                        networkWriteKBs = sampleDuration * averageRate;
                                    }
                                }
                            }
                        }
                    }
                }
                vmResponseMap.put(name, new VmStatsEntry(NumberUtils.toDouble(memkb) * 1024, NumberUtils.toDouble(guestMemusage) * 1024, NumberUtils.toDouble(memlimit) * 1024, maxCpuUsage, networkReadKBs, networkWriteKBs, NumberUtils.toInt(numberCPUs), "vm"));
            }
        }
    }
    return vmResponseMap;
}
Also used : PerfCounterInfo(com.vmware.vim25.PerfCounterInfo) DynamicProperty(com.vmware.vim25.DynamicProperty) HashMap(java.util.HashMap) HostMO(com.cloud.hypervisor.vmware.mo.HostMO) ArrayList(java.util.ArrayList) VmStatsEntry(com.cloud.agent.api.VmStatsEntry) PerfEntityMetricBase(com.vmware.vim25.PerfEntityMetricBase) ObjectContent(com.vmware.vim25.ObjectContent) PerfMetricIntSeries(com.vmware.vim25.PerfMetricIntSeries) PerfMetricSeries(com.vmware.vim25.PerfMetricSeries) PerfMetricId(com.vmware.vim25.PerfMetricId) VirtualMachineMO(com.cloud.hypervisor.vmware.mo.VirtualMachineMO) VmwareHypervisorHost(com.cloud.hypervisor.vmware.mo.VmwareHypervisorHost) VimPortType(com.vmware.vim25.VimPortType) PerfSampleInfo(com.vmware.vim25.PerfSampleInfo) PerfQuerySpec(com.vmware.vim25.PerfQuerySpec) ManagedObjectReference(com.vmware.vim25.ManagedObjectReference) PerfEntityMetric(com.vmware.vim25.PerfEntityMetric)

Aggregations

PerfCounterInfo (com.vmware.vim25.PerfCounterInfo)9 PerfEntityMetric (com.vmware.vim25.PerfEntityMetric)5 PerfMetricIntSeries (com.vmware.vim25.PerfMetricIntSeries)5 PerfQuerySpec (com.vmware.vim25.PerfQuerySpec)4 ManagedObjectReference (com.vmware.vim25.ManagedObjectReference)3 PerfEntityMetricBase (com.vmware.vim25.PerfEntityMetricBase)3 PerfMetricSeries (com.vmware.vim25.PerfMetricSeries)3 ManagedEntity (com.vmware.vim25.mo.ManagedEntity)3 ArrayList (java.util.ArrayList)3 PerfMetricId (com.vmware.vim25.PerfMetricId)2 VimPortType (com.vmware.vim25.VimPortType)2 ServiceInstance (com.vmware.vim25.mo.ServiceInstance)2 URL (java.net.URL)2 RemoteException (java.rmi.RemoteException)2 HashMap (java.util.HashMap)2 List (java.util.List)2 VmwarePerformanceValues (org.opennms.netmgt.collectd.vmware.vijava.VmwarePerformanceValues)2 VmStatsEntry (com.cloud.agent.api.VmStatsEntry)1 HostMO (com.cloud.hypervisor.vmware.mo.HostMO)1 VirtualMachineMO (com.cloud.hypervisor.vmware.mo.VirtualMachineMO)1