15 Creación de nombres personalizados de contadores de rendimiento para VMware

Descripción general

La ruta del contador de rendimiento de VMware tiene el formato group/counter[rollup] donde:

  • group - el grupo del contador de rendimiento, por ejemplo cpu
  • counter - el nombre del contador de rendimiento, por ejemplo usagemhz
  • rollup - el tipo de resumen del contador de rendimiento, por ejemplo average

Así, el ejemplo anterior daría la siguiente ruta de contador: cpu/usagemhz[average]

Las descripciones de los grupos de contadores de rendimiento, los nombres de los contadores y los tipos de resumen se pueden encontrar en la documentación de VMware.

Es posible obtener nombres internos y crear nombres personalizados de contadores de rendimiento utilizando una métrica de script en Zabbix.

Configuración

  1. Cree un item de tipo Script deshabilitado en el host principal de VMware (donde está presente el item eventlog[]) con los siguientes parámetros:

  • Name: VMware metrics
  • Type: Script
  • Key: vmware.metrics
  • Type of information: Text
  • Script: copie y pegue el script proporcionado a continuación
  • 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;

Una vez configurado el item, haga clic en el botón Test y luego en Get value.

Copie el XML recibido en 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>

Use XPath para extraer la ruta del contador del XML recibido. Para el ejemplo anterior, el XPath será:

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

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