zabbix_export: version: '5.2' date: '2022-02-07T17:39:15Z' groups: - name: 'Discovered hosts' - name: Templates/Applications - name: 'Templates/Server hardware' templates: - template: 'HPE OneView' name: 'HPE OneView' description: | Version: 1.0 Homepage: https://github.com/cskollar/zabbix-oneview Author: Csaba Kollar Zabbix template for HPE OneView (especially for Synergy frames). It uses native Zabbix features and functions and doesn't require any external scripts or plugins. Queries are implemented through the official OneView REST API. Usage: 1. Import the template file (it contains 3 templates) 2. Set the proper host group in the main template ("HPE OneView" -> enclosure AND server discovery -> host prototype -> groups) 3. Create a host for the OneView appliance (eg.: composer1.local.tld) Link the main template ("HPE OneView") to the host 4. Assign user macros to the host User macros: {$ONEVIEW_HOST} - host or IP address of the composer (OneView appliance) {$ONEVIEW_USER} - OneView username {$ONEVIEW_PASS} - OneView password groups: - name: Templates/Applications applications: - name: 'OneView appliance' items: - name: 'Get alerts' type: SCRIPT key: oneview.get.alerts trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(),resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Alerts req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/rest/alerts?query=%22alertState%20EQ%20%27Active%27%20OR%20alertState%20EQ%20%27Locked%27%22'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); result = resp.members.map(function(m) { return { id: m.uri.replace("\/rest\/alerts\/",""), description: m.description, severity: m.severity }; }); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'OneView appliance' parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Get enclosures' type: SCRIPT key: oneview.get.enclosures delay: 5m history: '0' trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(),resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Enclosures req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/rest/enclosures'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); result = resp.members.map(function(m) { return { uri: m.uri, uuid: m.uuid, name: m.name }; }); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'OneView appliance' parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Get logical enclosures' type: SCRIPT key: oneview.get.logicalenclosures delay: 5m history: '0' trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(),resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Logical Enclosures req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/rest/logical-enclosures'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); result = resp.members.map(function(m) { return { uri: m.uri, name: m.name }; }); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'OneView appliance' parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Get servers' type: SCRIPT key: oneview.get.servers delay: 5m history: '0' trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Servers req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/rest/server-hardware'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); result = resp.members.map(function(m) { return { uri: m.uri, name: m.name.replace(", "," - "), model: m.model }; }); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'OneView appliance' parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' discovery_rules: - name: 'Alert discovery' type: DEPENDENT key: oneview.alerts.discovery delay: '0' lifetime: '0' item_prototypes: - name: 'OneView alert[{#ALERT_ID}] - {#ALERT_DESC}' type: DEPENDENT key: 'oneview.alert.severity[{#ALERT_ID}]' delay: '0' trends: '0' value_type: CHAR applications: - name: 'OneView appliance' preprocessing: - type: JSONPATH parameters: - '$[?(@.["id"]=="{#ALERT_ID}")].["severity"].first()' master_item: key: oneview.get.alerts trigger_prototypes: - expression: '{last()}<>"OK"' name: 'OneView alert: {#ALERT_DESC}' opdata: '{#ALERT_SEVERITY}' priority: HIGH master_item: key: oneview.get.alerts lld_macro_paths: - lld_macro: '{#ALERT_DESC}' path: $.description - lld_macro: '{#ALERT_ID}' path: $.id - lld_macro: '{#ALERT_SEVERITY}' path: $.severity - name: 'Enclosure discovery' type: DEPENDENT key: oneview.enclosures.discovery delay: '0' host_prototypes: - host: 'Enclosure {#ENCLOSURE_NAME}' name: 'Enclosure {#ENCLOSURE_NAME}' group_links: - group: name: 'Discovered hosts' templates: - name: 'HPE OneView Enclosure' macros: - macro: '{$ENCLOSURE_URI}' value: '{#ENCLOSURE_URI}' master_item: key: oneview.get.enclosures lld_macro_paths: - lld_macro: '{#ENCLOSURE_NAME}' path: '$.["name"]' - lld_macro: '{#ENCLOSURE_URI}' path: '$.["uri"]' - lld_macro: '{#ENCLOSURE_UUID}' path: '$.["uuid"]' - name: 'Logical enclosure discovery' type: DEPENDENT key: oneview.logicalenclosures.discovery delay: '0' host_prototypes: - host: 'Logical Enclosure {#LOGICAL_ENCLOSURE_NAME}' name: 'Logical Enclosure {#LOGICAL_ENCLOSURE_NAME}' group_links: - group: name: 'Discovered hosts' templates: - name: 'HPE OneView Logical Enclosure' macros: - macro: '{$LOGICAL_ENCLOSURE_URI}' value: '{#LOGICAL_ENCLOSURE_URI}' master_item: key: oneview.get.logicalenclosures lld_macro_paths: - lld_macro: '{#LOGICAL_ENCLOSURE_NAME}' path: '$.["name"]' - lld_macro: '{#LOGICAL_ENCLOSURE_URI}' path: '$.["uri"]' - name: 'Server discovery' type: DEPENDENT key: oneview.server.discovery delay: '0' host_prototypes: - host: '{#SERVER_MODEL} - {#SERVER_NAME}' name: '{#SERVER_MODEL} - {#SERVER_NAME}' group_links: - group: name: 'Discovered hosts' templates: - name: 'HPE OneView Server' macros: - macro: '{$SERVER_URI}' value: '{#SERVER_URI}' master_item: key: oneview.get.servers lld_macro_paths: - lld_macro: '{#SERVER_MODEL}' path: '$.["model"]' - lld_macro: '{#SERVER_NAME}' path: '$.["name"]' - lld_macro: '{#SERVER_URI}' path: '$.["uri"]' macros: - macro: '{$ONEVIEW_HOST}' - macro: '{$ONEVIEW_PASS}' - macro: '{$ONEVIEW_USER}' - template: 'HPE OneView Enclosure' name: 'HPE OneView Enclosure' groups: - name: 'Templates/Server hardware' applications: - name: 'Enclosure appliance modules' - name: 'Enclosure FAN' - name: 'Enclosure interconnect modules' - name: 'Enclosure manager modules' - name: 'Enclosure power' - name: 'Enclosure PSU' items: - name: 'Enclosure power interconnect bays' type: DEPENDENT key: oneview.enclosure.interconnectbayspower delay: '0' units: W applications: - name: 'Enclosure power' preprocessing: - type: JSONPATH parameters: - $.interconnectBayWatts master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure power fans and management modules' type: DEPENDENT key: oneview.enclosure.mgmtpower delay: '0' units: W applications: - name: 'Enclosure power' preprocessing: - type: JSONPATH parameters: - $.fansAndManagementDevicesWatts master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure power allocated' type: DEPENDENT key: oneview.enclosure.powerallocated delay: '0' units: W applications: - name: 'Enclosure power' preprocessing: - type: JSONPATH parameters: - $.powerAllocatedWatts master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure power available' type: DEPENDENT key: oneview.enclosure.poweravailable delay: '0' units: W applications: - name: 'Enclosure power' preprocessing: - type: JSONPATH parameters: - $.powerAvailableWatts master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure power capacity' type: DEPENDENT key: oneview.enclosure.powercapacity delay: '0' units: W applications: - name: 'Enclosure power' preprocessing: - type: JSONPATH parameters: - $.powerCapacityWatts master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure serial number' type: DEPENDENT key: oneview.enclosure.serialnumber delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.serialNumber master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure power server bays' type: DEPENDENT key: oneview.enclosure.serverbayspower delay: '0' units: W applications: - name: 'Enclosure power' preprocessing: - type: JSONPATH parameters: - $.deviceBayWatts master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure status' type: DEPENDENT key: oneview.enclosure.status delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.status master_item: key: oneview.get.enclosure.parameters triggers: - expression: '{last()}<>"OK"' name: 'Enclosure status problem' opdata: 'status: {ITEM.LASTVALUE1}' priority: HIGH - name: 'Enclosure support state' type: DEPENDENT key: oneview.enclosure.supportstate delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.supportState master_item: key: oneview.get.enclosure.parameters triggers: - expression: '{last()}<>"Enabled"' name: 'Enclosure support state problem' opdata: 'support state: {ITEM.LASTVALUE1}' priority: WARNING - name: 'Get enclosure parameters' type: SCRIPT key: oneview.get.enclosure.parameters delay: 5m history: '0' trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Enclosure req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/{$ENCLOSURE_URI}'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } result = JSON.parse(resp); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' discovery_rules: - name: 'Enclosure appliance bays discovery' type: DEPENDENT key: enclosure.appliance.disovery delay: '0' filter: conditions: - macro: '{#ENCLOSURE_APPLIANCE_PRESENCE}' value: ^Absent$ operator: NOT_MATCHES_REGEX formulaid: A item_prototypes: - name: 'Enclosure appliance bay{#ENCLOSURE_APPLIANCE_BAY} {#ENCLOSURE_APPLIANCE_MODEL} power state' type: DEPENDENT key: 'appliance.power.bay[{#ENCLOSURE_APPLIANCE_BAY}]' delay: '0' trends: '0' value_type: TEXT applications: - name: 'Enclosure appliance modules' preprocessing: - type: JSONPATH parameters: - '$.applianceBays[?(@.bayNumber=="{#ENCLOSURE_APPLIANCE_BAY}")].poweredOn.first()' master_item: key: oneview.get.enclosure.parameters trigger_prototypes: - expression: '{last()}<>"true"' name: 'Enclosure Appliance module power state problem in BAY{#ENCLOSURE_APPLIANCE_BAY}' opdata: 'power state: {ITEM.LASTVALUE1}' priority: AVERAGE - name: 'Enclosure appliance bay{#ENCLOSURE_APPLIANCE_BAY} {#ENCLOSURE_APPLIANCE_MODEL} presence' type: DEPENDENT key: 'appliance.presence.bay[{#ENCLOSURE_APPLIANCE_BAY}]' delay: '0' trends: '0' value_type: TEXT applications: - name: 'Enclosure appliance modules' preprocessing: - type: JSONPATH parameters: - '$.applianceBays[?(@.bayNumber=="{#ENCLOSURE_APPLIANCE_BAY}")].devicePresence.first()' master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure appliance bay{#ENCLOSURE_APPLIANCE_BAY} {#ENCLOSURE_APPLIANCE_MODEL} status' type: DEPENDENT key: 'appliance.status.bay[{#ENCLOSURE_APPLIANCE_BAY}]' delay: '0' trends: '0' value_type: TEXT applications: - name: 'Enclosure appliance modules' preprocessing: - type: JSONPATH parameters: - '$.applianceBays[?(@.bayNumber=="{#ENCLOSURE_APPLIANCE_BAY}")].status.first()' master_item: key: oneview.get.enclosure.parameters trigger_prototypes: - expression: '{last()}<>"OK"' name: 'Enclosure Appliance module error in BAY{#ENCLOSURE_APPLIANCE_BAY}' opdata: 'Appliance status: {ITEM.LASTVALUE1}' priority: HIGH master_item: key: oneview.get.enclosure.parameters lld_macro_paths: - lld_macro: '{#ENCLOSURE_APPLIANCE_BAY}' path: $.bayNumber - lld_macro: '{#ENCLOSURE_APPLIANCE_MODEL}' path: $.model - lld_macro: '{#ENCLOSURE_APPLIANCE_PRESENCE}' path: $.devicePresence preprocessing: - type: JSONPATH parameters: - $.applianceBays - name: 'Enclosure FAN discovery' type: DEPENDENT key: enclosure.fan.disovery delay: '0' item_prototypes: - name: 'Enclosure FAN bay{#ENCLOSURE_FAN_BAY} presence' type: DEPENDENT key: 'fan.presence.bay[{#ENCLOSURE_FAN_BAY}]' delay: '0' trends: '0' value_type: CHAR applications: - name: 'Enclosure FAN' preprocessing: - type: JSONPATH parameters: - '$.fanBays[?(@.bayNumber=="{#ENCLOSURE_FAN_BAY}")].devicePresence.first()' master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure FAN bay{#ENCLOSURE_FAN_BAY} status' type: DEPENDENT key: 'fan.status.bay[{#ENCLOSURE_FAN_BAY}]' delay: '0' trends: '0' value_type: CHAR applications: - name: 'Enclosure FAN' preprocessing: - type: JSONPATH parameters: - '$.fanBays[?(@.bayNumber=="{#ENCLOSURE_FAN_BAY}")].status.first()' error_handler: DISCARD_VALUE master_item: key: oneview.get.enclosure.parameters trigger_prototypes: - expression: '{last()}<>"OK"' name: 'Enclosure FAN error in BAY{#ENCLOSURE_FAN_BAY}' opdata: 'state: {ITEM.LASTVALUE1}' priority: HIGH master_item: key: oneview.get.enclosure.parameters lld_macro_paths: - lld_macro: '{#ENCLOSURE_FAN_BAY}' path: $.bayNumber preprocessing: - type: JSONPATH parameters: - $.fanBays - name: 'Enclosure interconnect bays discovery' type: DEPENDENT key: enclosure.interconnect.disovery delay: '0' filter: conditions: - macro: '{#ENCLOSURE_INTERCONNECT_URI}' value: '^(?![nN][uU][lL]{2}$)\s*\S.*' formulaid: A item_prototypes: - name: 'Interconnect bay{#ENCLOSURE_INTERCONNECT_BAY} model' type: SCRIPT key: 'get.interconnect.model.bay[{#ENCLOSURE_INTERCONNECT_BAY}]' delay: 5m trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Enclosure req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/{#ENCLOSURE_INTERCONNECT_URI}'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } result = JSON.parse(resp); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'Enclosure interconnect modules' preprocessing: - type: JSONPATH parameters: - $.model parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Interconnect bay{#ENCLOSURE_INTERCONNECT_BAY} name' type: SCRIPT key: 'get.interconnect.namel.bay[{#ENCLOSURE_INTERCONNECT_BAY}]' delay: 5m trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Enclosure req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/{#ENCLOSURE_INTERCONNECT_URI}'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } result = JSON.parse(resp); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'Enclosure interconnect modules' preprocessing: - type: JSONPATH parameters: - $.name parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Interconnect bay{#ENCLOSURE_INTERCONNECT_BAY} serial number' type: SCRIPT key: 'get.interconnect.serianNumber.bay[{#ENCLOSURE_INTERCONNECT_BAY}]' delay: 5m trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Enclosure req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/{#ENCLOSURE_INTERCONNECT_URI}'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } result = JSON.parse(resp); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'Enclosure interconnect modules' preprocessing: - type: JSONPATH parameters: - $.serialNumber parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Interconnect bay{#ENCLOSURE_INTERCONNECT_BAY} status' type: SCRIPT key: 'get.interconnect.status.bay[{#ENCLOSURE_INTERCONNECT_BAY}]' delay: 5m trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Enclosure req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/{#ENCLOSURE_INTERCONNECT_URI}'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } result = JSON.parse(resp); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); applications: - name: 'Enclosure interconnect modules' preprocessing: - type: JSONPATH parameters: - $.status parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' trigger_prototypes: - expression: '{last()}<>"OK"' name: 'Enclosure Interrconnect module error in BAY{#ENCLOSURE_APPLIANCE_BAY}' opdata: 'Interconnect status: {ITEM.LASTVALUE1}' priority: HIGH master_item: key: oneview.get.enclosure.parameters lld_macro_paths: - lld_macro: '{#ENCLOSURE_INTERCONNECT_BAY}' path: $.bayNumber - lld_macro: '{#ENCLOSURE_INTERCONNECT_URI}' path: $.interconnectUri preprocessing: - type: JSONPATH parameters: - $.interconnectBays - name: 'Enclosure manager bays discovery' type: DEPENDENT key: enclosure.manager.disovery delay: '0' filter: conditions: - macro: '{#ENCLOSURE_MANAGER_PRESENCE}' value: ^Absent$ operator: NOT_MATCHES_REGEX formulaid: A item_prototypes: - name: 'Enclosure manager bay{#ENCLOSURE_MANAGER_BAY} {#ENCLOSURE_MANAGER_MODEL} link status' type: DEPENDENT key: 'manager.linkstatus.bay[{#ENCLOSURE_MANAGER_BAY}]' delay: '0' trends: '0' value_type: TEXT applications: - name: 'Enclosure manager modules' preprocessing: - type: JSONPATH parameters: - '$.managerBays[?(@.bayNumber=="{#ENCLOSURE_MANAGER_BAY}")].linkPortStatus.first()' master_item: key: oneview.get.enclosure.parameters trigger_prototypes: - expression: '{last()}<>"OK"' name: 'Enclosure Manager module link error in BAY{#ENCLOSURE_MANAGER_BAY}' opdata: 'link status: {ITEM.LASTVALUE1}' priority: HIGH - name: 'Enclosure manager bay{#ENCLOSURE_MANAGER_BAY} {#ENCLOSURE_MANAGER_MODEL} status' type: DEPENDENT key: 'manager.status.bay[{#ENCLOSURE_MANAGER_BAY}]' delay: '0' trends: '0' value_type: CHAR applications: - name: 'Enclosure manager modules' preprocessing: - type: JSONPATH parameters: - '$.managerBays[?(@.bayNumber=="{#ENCLOSURE_MANAGER_BAY}")].status.first()' master_item: key: oneview.get.enclosure.parameters trigger_prototypes: - expression: '{last()}<>"OK"' name: 'Enclosure Manager module error in BAY{#ENCLOSURE_MANAGER_BAY}' opdata: 'state: {ITEM.LASTVALUE1}' priority: HIGH master_item: key: oneview.get.enclosure.parameters lld_macro_paths: - lld_macro: '{#ENCLOSURE_MANAGER_BAY}' path: $.bayNumber - lld_macro: '{#ENCLOSURE_MANAGER_MODEL}' path: $.model - lld_macro: '{#ENCLOSURE_MANAGER_PRESENCE}' path: $.devicePresence preprocessing: - type: JSONPATH parameters: - $.managerBays - name: 'Enclosure PSU discovery' type: DEPENDENT key: enclosure.psu.disovery delay: '0' item_prototypes: - name: 'Enclosure PSU bay{#ENCLOSURE_PSU_BAY} model' type: DEPENDENT key: 'psu.model.bay[{#ENCLOSURE_PSU_BAY}]' delay: '0' trends: '0' value_type: CHAR applications: - name: 'Enclosure PSU' preprocessing: - type: JSONPATH parameters: - '$.powerSupplyBays[?(@.bayNumber=="{#ENCLOSURE_PSU_BAY}")].model.first()' master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure PSU bay{#ENCLOSURE_PSU_BAY} presence' type: DEPENDENT key: 'psu.presence.bay[{#ENCLOSURE_PSU_BAY}]' delay: '0' trends: '0' value_type: TEXT applications: - name: 'Enclosure PSU' preprocessing: - type: JSONPATH parameters: - '$.powerSupplyBays[?(@.bayNumber=="{#ENCLOSURE_PSU_BAY}")].devicePresence.first()' master_item: key: oneview.get.enclosure.parameters - name: 'Enclosure PSU bay{#ENCLOSURE_PSU_BAY} status' type: DEPENDENT key: 'psu.status.bay[{#ENCLOSURE_PSU_BAY}]' delay: '0' trends: '0' value_type: CHAR applications: - name: 'Enclosure PSU' preprocessing: - type: JSONPATH parameters: - '$.powerSupplyBays[?(@.bayNumber=="{#ENCLOSURE_PSU_BAY}")].status.first()' master_item: key: oneview.get.enclosure.parameters trigger_prototypes: - expression: '{last()}<>"OK"' name: 'Encloure PSU error in BAY{#ENCLOSURE_PSU_BAY}' opdata: 'state: {ITEM.LASTVALUE1}' priority: HIGH master_item: key: oneview.get.enclosure.parameters lld_macro_paths: - lld_macro: '{#ENCLOSURE_PSU_BAY}' path: $.bayNumber preprocessing: - type: JSONPATH parameters: - $.powerSupplyBays - template: 'HPE OneView Logical Enclosure' name: 'HPE OneView Logical Enclosure' groups: - name: 'Templates/Server hardware' items: - name: 'Get logical enclosure parameters' type: SCRIPT key: oneview.get.logicalenclosure.parameters delay: 5m history: '0' trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Enclosure req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/{$LOGICAL_ENCLOSURE_URI}'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } result = JSON.parse(resp); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Logical enclosure consistency state' type: DEPENDENT key: oneview.logicalenclosure.consistency delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.state master_item: key: oneview.get.logicalenclosure.parameters - name: 'Logical enclosure status' type: DEPENDENT key: oneview.logicalenclosure.status delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.status master_item: key: oneview.get.logicalenclosure.parameters - template: 'HPE OneView Server' name: 'HPE OneView Server' groups: - name: 'Templates/Server hardware' items: - name: 'Get server parameteres' type: SCRIPT key: oneview.get.server.parameters delay: 5m history: '0' trends: '0' value_type: TEXT params: | try { var result = [], req = new CurlHttpRequest(), resp; req.AddHeader('content-type: application/json'); req.AddHeader('x-api-version: 3000'); //GET Token resp = req.Post('https://{$ONEVIEW_HOST}/rest/login-sessions',value); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } resp = JSON.parse(resp); token = resp.sessionID; //GET Server req.AddHeader('auth: '+token); resp = req.Get('https://{$ONEVIEW_HOST}/{$SERVER_URI}'); if (req.Status() != 200) { throw 'Response code: '+req.Status(); } result = JSON.parse(resp); //DELETE token resp = req.Delete('https://{$ONEVIEW_HOST}/rest/login-sessions'); if (req.Status() != 204) { throw 'Response code: '+req.Status(); } } catch (error) { Zabbix.Log(4, 'OneView api error: '+error); result = { failed: error }; } //RESULT return JSON.stringify(result); parameters: - name: password value: '{$ONEVIEW_PASS}' - name: userName value: '{$ONEVIEW_USER}' - name: 'Server ILO state' type: DEPENDENT key: oneview.server.ilostate delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.mpState master_item: key: oneview.get.server.parameters triggers: - expression: '{last()}<>"OK"' name: 'Server management processor state problem' opdata: 'ILO state: {ITEM.LASTVALUE1}' priority: HIGH - name: 'Server operating system' type: DEPENDENT key: oneview.server.operatingsystem delay: '0' trends: '0' value_type: TEXT preprocessing: - type: JSONPATH parameters: - $.operatingSystem master_item: key: oneview.get.server.parameters - name: 'Server position' type: DEPENDENT key: oneview.server.position delay: '0' preprocessing: - type: JSONPATH parameters: - $.position master_item: key: oneview.get.server.parameters - name: 'Server power state' type: DEPENDENT key: oneview.server.powerstate delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.powerState master_item: key: oneview.get.server.parameters triggers: - expression: '{last()}="Off"' name: 'Server is powered off' opdata: 'power state: {ITEM.LASTVALUE1}' priority: INFO - name: 'Server serial number' type: DEPENDENT key: oneview.server.serialnumber delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.serialNumber master_item: key: oneview.get.server.parameters - name: 'Server name' type: DEPENDENT key: oneview.server.servername delay: '0' trends: '0' value_type: TEXT preprocessing: - type: JSONPATH parameters: - $.serverName master_item: key: oneview.get.server.parameters - name: 'Server status' type: DEPENDENT key: oneview.server.status delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.status master_item: key: oneview.get.server.parameters triggers: - expression: '{last()}<>"OK"' name: 'Server status problem' opdata: 'status: {ITEM.LASTVALUE1}' priority: HIGH - name: 'Server support state' type: DEPENDENT key: oneview.server.supportstate delay: '0' trends: '0' value_type: CHAR preprocessing: - type: JSONPATH parameters: - $.supportState master_item: key: oneview.get.server.parameters triggers: - expression: '{last()}<>"Enabled"' name: 'Server support state problem' opdata: 'support state: {ITEM.LASTVALUE1}' priority: WARNING