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 cpucounter- de naam van de prestatie teller, bijvoorbeeld usegemhzrollup- 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
- 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]