16 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.vmware.com/apis/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:

  • Nom: mètriques VMware
  • Tipus: Script
  • Clau: vmware.metrics
  • Tipus d'informació: Text
  • Script: copieu i enganxeu l'script proveït aquí sota
  • Caducitat: 10
  • Període d'emmagatzematge de l'històric: No deseu pas històric
  • Actiu : sense 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;

Une fois l'élément configuré, appuyez sur le bouton Test, puis appuyez sur Obtenir la valeur.

Copiez le XML reçu dans n'importe quel formateur XML et trouvez la métrique souhaitée.

Exemple de XML pour une métrique :

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

Utilisez XPath pour extraire le chemin du compteur du XML reçu. Pour l'exemple ci-dessus, le XPath sera :

champ xPath valeur
group //groupInfo[../key=6]/key cpu
counter //nameInfo[../key=6]/key usagemhz
rollup //rollupType[../key=6] average

Le chemin du compteur de performances résultant dans ce cas est : cpu/usagemhz[average]