15 Creación de nombres de contadores de rendimiento personalizados para VMware

Descripción general

La ruta del contador de rendimiento de VMware tiene el formato grupo/contador[rollup] donde:

  • grupo: el grupo de contadores de rendimiento, por ejemplo cpu
  • contador: el nombre del contador de rendimiento, por ejemplo usagemhz
  • rollup: el tipo de resumen del contador de rendimiento, por ejemplo average

De modo que, para el ejemplo anterior daría la siguiente ruta del contador: cpu/usagemhz[average]

Las descripciones del grupo de contadores de rendimiento, los nombres de los contadores y los tipos se pueden encontrar en la documentación de VMware.

Es posible obtener nombres internos y crear nombres de contadores de rendimiento personalizados utilizando métricas de script en Zabbix.

Configuración

  1. Cree una métrica de secuencia de comandos deshabilitada en el equipo principal de VMware (donde está presente la métrica eventlog[]) con los siguientes parámetros:

  • Nombre: métricas de VMware
  • Tipo: Guión
  • Clave: vmware.metrics
  • Tipo de información: Texto
  • Script: copie y pegue el script proporcionado a continuación
  • Tiempo de espera: 10
  • Historial: No almacenar
  • Habilitado: sin marcar

Script

try {
           Zabbix.log(4, 'vmware metrics script');
       
           var result, resp,
           req = new HttpRequest();
           req.addHeader('Content-Type: application/xml');
           req.addHeader('SOAPAction: "urn:vim25/6.0"');
       
           login = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:vim25">\
           <soapenv:Header/>\
           <soapenv:Body>\
               <urn:Login>\
                   <urn:_this type="SessionManager">SessionManager</urn:_this>\
                   <urn:userName>{$VMWARE.USERNAME}</urn:userName>\
                   <urn:password>{$VMWARE.PASSWORD}</urn:password>\
               </urn:Login>\
           </soapenv:Body>\
       </soapenv:Envelope>'
           resp = req.post("{$VMWARE.URL}", login);
           if (req.getStatus() != 200) {
               throw 'Response code: '+req.getStatus();
           }
       
           query = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:vim25">\
       <soapenv:Header/>\
           <soapenv:Body>\
               <urn:RetrieveProperties>\
                   <urn:_this type="PropertyCollector">propertyCollector</urn:_this>\
                   <urn:specSet>\
                       <urn:propSet>\
                          <urn:type>PerformanceManager</urn:type>\
                          <urn:pathSet>perfCounter</urn:pathSet>\
                       </urn:propSet>\
                       <urn:objectSet>\
                          <urn:obj type="PerformanceManager">PerfMgr</urn:obj>\
                       </urn:objectSet>\
                   </urn:specSet>\
               </urn:RetrieveProperties>\
           </soapenv:Body>\
       </soapenv:Envelope>'
           resp = req.post("{$VMWARE.URL}", query);
           if (req.getStatus() != 200) {
               throw 'Response code: '+req.getStatus();
           }
           Zabbix.log(4, 'vmware metrics=' + resp);
           result = resp;
       
           logout = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:vim25">\
           <soapenv:Header/>\
           <soapenv:Body>\
               <urn:Logout>\
                   <urn:_this type="SessionManager">SessionManager</urn:_this>\
               </urn:Logout>\
           </soapenv:Body>\
       </soapenv:Envelope>'
       
           resp = req.post("{$VMWARE.URL}",logout);         
           if (req.getStatus() != 200) {
               throw 'Response code: '+req.getStatus();
           }
       
       } catch (error) {
           Zabbix.log(4, 'vmware call failed : '+error);
           result = {};
       }
       
       return result;

Una vez que el elemento esté configurado, presione el botón Probar, luego presione Obtener valor.

Copie el XML recibido a cualquier formateador XML y busque la métrica deseada.

Un ejemplo de XML para una métrica:

<PerfCounterInfo xsi:type="PerfCounterInfo">
           <key>6</key>
           <nameInfo>
               <label>Usage in MHz</label>
               <summary>CPU usage in megahertz during the interval</summary>
               <key>usagemhz</key>
           </nameInfo>
           <groupInfo>
               <label>CPU</label>
               <summary>CPU</summary>
               <key>cpu</key>
           </groupInfo>
           <unitInfo>
               <label>MHz</label>
               <summary>Megahertz</summary>
               <key>megaHertz</key>
           </unitInfo>
           <rollupType>average</rollupType>
           <statsType>rate</statsType>
           <level>1</level>
           <perDeviceLevel>3</perDeviceLevel>
       </PerfCounterInfo>

Utilice XPath para extraer la ruta del contador del XML recibido. Para el ejemplo anterior, el XPath será:

campo xPath valor
grupo //groupInfo[../key=6]/key CPU
contador //nameInfo[../key=6]/key usagemhz
rollup //rollupType[../key=6] promedio

La ruta del contador de rendimiento resultante en este caso es: cpu/usagemhz[average]