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:

  • 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

Entonces, 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 secuencia de comandos en Zabbix.

Configuración

  1. Cree una métrica de script 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
  • 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 configurada la métrica, 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
group //groupInfo[../key=6]/key cpu
counter //nameInfo[../key=6]/key usagemhz
rollup //rollupType[../key=6] average

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