16 Aangepaste prestatie teller items aanmaken voor VMware

Overzicht

Het VMware-prestatie teller pad heeft de group/counter[rollup] formaat waarbij:

  • group - de prestatie teller groep, bijvoorbeeld cpu
  • counter - de naam van de prestatie teller, bijvoorbeeld usegemhz
  • rollup - het type prestatie teller rollup, bijvoorbeeld gemiddeld

Dus het bovenstaande voorbeeld zou het volgende teller pad geven: cpu/usegemhz[gemiddelde]

De beschrijvingen van de prestatie teller items, de namen van de tellers en de rollup typen zijn te vinden in VMware documentatie.

Het is mogelijk om interne namen te verkrijgen en aangepaste prestatie teller items te maken met behulp van een script item in Zabbix.

Configuratie

  1. Maak een uitgeschakelde Script-item aan op de hoofd-VMware-host (waar het eventlog[] item aanwezig is) met de volgende parameters:

  • Naam: VMware-metingen
  • Type: Script
  • Sleutel: vmware.metrics
  • Type informatie: Tekst
  • Script: kopieer en plak het script hieronder
  • Timeout: 10
  • Bewaarperiode voor geschiedenis: Bewaar geen geschiedenis
  • Ingeschakeld: niet aangevinkt

Script

try {
           Zabbix.log(4, 'vmware-metingen 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.GEBRUIKERSNAAM}</urn:userName>\
                   <urn:password>{$VMWARE.WACHTWOORD}</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-metingen=' + 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-oproep mislukt: '+error);
           result = {};
       }
       
       return result;

Zodra het item is geconfigureerd, druk op de Test knop en vervolgens op Waardeveld ophalen.

Kopieer de ontvangen XML naar een XML-formatter en zoek de gewenste metriek op.

Een voorbeeld van XML voor één metriek:

<PerfCounterInfo xsi:type="PerfCounterInfo">
           <key>6</key>
           <nameInfo>
               <label>Gebruik in MHz</label>
               <summary>CPU-gebruik in megahertz tijdens het 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>gemiddeld</rollupType>
           <statsType>rate</statsType>
           <level>1</level>
           <perDeviceLevel>3</perDeviceLevel>
       </PerfCounterInfo>

Gebruik XPath om het tellerpad uit de ontvangen XML te extraheren. Voor het bovenstaande voorbeeld zal de XPath zijn:

veld xPath waarde
groep //groupInfo[../key=6]/key cpu
teller //nameInfo[../key=6]/key usagemhz
rollup //rollupType[../key=6] gemiddeld

Het resulterende prestatiemeterpad is in dit geval: cpu/usagemhz[gemiddeld]