16 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:

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

Entonces, el ejemplo anterior daría la siguiente ruta contraria: cpu/usagemhz[promedio]

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

Es posible obtener nombres internos y crear nombres de contadores de rendimiento personalizados utilizando el elemento de secuencia de comandos en Zabbix.

Configuración

  1. Cree un elemento de secuencia de comandos deshabilitado en el host principal de VMware (donde está presente el elemento 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
  • Período de almacenamiento del historial: No conservar el historial
  • 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 la métrica esté configurada, 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]