This is a translation of the original English documentation page. Help us make it better.

15 Creació de noms de comptadors de rendiment personalitzats per VMware

Vista general

La ruta del comptador de rendiment VMware té el format group/counter[rollup] on:

  • group - el grup de comptadors de rendiment; per exemple, cpu
  • counter - el nom del comptador de rendiment; per exemple, usagemhz
  • rollup - el tipus de comptador de rendiment; per exemple, mitjana

Per tant, els exemples de sobre donaran la ruta del comptador següents: cpu/usagemhz[average]

Les descripcions dels grups de comptadors de rendiment, els noms de comptadors i els tipus de comptador són a la [documentació VMware] (https://developer.broadcomvmware.com/xapis/vsphere-web-services-api/latest/968).

És possible obtindre els noms interns i crear els noms de comptadors de rendiment personalitzats emprant un element d'script dins de Zabbix.

Configuració

  1. Crear un element d'script desactivat sobre l'equip VMware principal (on l'element eventlog[] és present) amb els paràmetres següents:

  • Name: VMware metrics
  • Type: Script
  • Key: vmware.metrics
  • Type of information: Text
  • Script: copy and paste the script provided below
  • Timeout: 10
  • History: Do not store
  • Enabled: unmarked

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;

Un cop l'element sigui configurat, premeu el botó Prova, i després premeu Recuperar valor.

Copieu l'XML rebut a qualsevol formatador d'XML i trobeu la mètrica esperada.

Un exemple d'un XML per 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>

Empreu XPath per extreure la ruta del comptador de l'XML rebut. A l'exemple anterior, XPath ha d'ésser:

camp xPath valor
grup //groupInfo[../key=6]/key cpu
comptador //nameInfo[../key=6]/key usagemhz
rollup //rollupType[../key=6] mitjana

El resultat de la ruta del comptador de rendiment en aquest cas és: cpu/usagemhz[average]