From e92f5a2b0330cfe490bf4ef1021da1966dbef01a Mon Sep 17 00:00:00 2001 From: Zack Mutchler <30831476+thezackm@users.noreply.github.com> Date: Wed, 6 Oct 2021 05:57:46 -0700 Subject: [PATCH] feat: adding new idrac entity definition (#323) --- definitions/ext-idrac/definition.yml | 60 ++++++ .../ext-idrac/dell-idrac-dashboard.json | 186 ++++++++++++++++++ definitions/ext-idrac/golden_metrics.yml | 23 +++ definitions/ext-idrac/summary_metrics.yml | 32 +++ 4 files changed, 301 insertions(+) create mode 100644 definitions/ext-idrac/definition.yml create mode 100644 definitions/ext-idrac/dell-idrac-dashboard.json create mode 100644 definitions/ext-idrac/golden_metrics.yml create mode 100644 definitions/ext-idrac/summary_metrics.yml diff --git a/definitions/ext-idrac/definition.yml b/definitions/ext-idrac/definition.yml new file mode 100644 index 000000000..ade1ef241 --- /dev/null +++ b/definitions/ext-idrac/definition.yml @@ -0,0 +1,60 @@ +domain: EXT +type: IDRAC +synthesis: + name: device_name + identifier: device_name + encodeIdentifierInGUID: true + + conditions: + - attribute: provider + value: kentik-idrac + + tags: + src_addr: + entityTagName: device_ip + systemStateAmperageStatusCombined: + multiValue: false + entityTagName: amperage_status + systemStateChassisIntrusionStatusCombined: + multiValue: false + entityTagName: chassis_intrusion_status + systemStateChassisStatus: + multiValue: false + entityTagName: chassis_status + systemStateCoolingDeviceStatusCombined: + multiValue: false + entityTagName: cooling_device_status + systemStateCoolingUnitStatusCombined: + multiValue: false + entityTagName: cooling_unit_status + systemStateCoolingUnitStatusRedundancy: + multiValue: false + entityTagName: cooling_unit_redundancy + systemStateMemoryDeviceStatusCombined: + multiValue: false + entityTagName: memory_device_status + systemStatePowerSupplyStatusCombined: + multiValue: false + entityTagName: power_supply_status + systemStatePowerUnitStatusCombined: + multiValue: false + entityTagName: power_unit_status + systemStatePowerUnitStatusRedundancy: + multiValue: false + entityTagName: power_unit_redundance + systemStateProcessorDeviceStatusCombined: + multiValue: false + entityTagName: processor_device_status + systemStateTemperatureStatisticsStatusCombined: + multiValue: false + entityTagName: temperature_statistics_status + systemStateTemperatureStatusCombined: + multiValue: false + entityTagName: temperature_status + +goldenTags: +- device_ip + +dashboardTemplates: + kentik/dell-idrac: + template: dell-idrac-dashboard.json diff --git a/definitions/ext-idrac/dell-idrac-dashboard.json b/definitions/ext-idrac/dell-idrac-dashboard.json new file mode 100644 index 000000000..66db02e69 --- /dev/null +++ b/definitions/ext-idrac/dell-idrac-dashboard.json @@ -0,0 +1,186 @@ +{ + "name": "Dell iDRAC", + "description": "", + "pages": [ + { + "name": "Dell iDRAC", + "description": "", + "widgets": [ + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 1, + "row": 1, + "height": 4, + "width": 2 + }, + "title": "Device Uptime", + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Total Days", + "precision": null, + "type": "humanized" + }, + { + "name": "Total Hours", + "precision": null, + "type": "humanized" + } + ], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(`kentik.snmp.Uptime`)/100/60/60/24 AS 'Total Days', latest(`kentik.snmp.Uptime`)/100/60/60 AS 'Total Hours' WHERE provider = 'kentik-idrac'" + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 3, + "row": 1, + "height": 4, + "width": 5 + }, + "title": "Overall System State", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(systemStateAmperageStatusCombined) AS 'Amperage Status', latest(systemStateChassisIntrusionStatusCombined) AS 'Chassis Intrusion Status', latest(systemStateChassisStatus) AS 'Chassis Status', latest(systemStateCoolingDeviceStatusCombined) AS 'Cooling Device Status', latest(systemStateCoolingUnitStatusCombined) AS 'Cooling Unit Status', latest(systemStateCoolingUnitStatusRedundancy) AS 'Cooling Unit Redundancy', latest(systemStateMemoryDeviceStatusCombined) AS 'Memory Device Status', latest(systemStatePowerSupplyStatusCombined) AS 'Power Supply Status', latest(systemStatePowerUnitStatusCombined) AS 'Power Unit Status', latest(systemStatePowerUnitStatusRedundancy) AS 'Power Unit Redundancy', latest(systemStateProcessorDeviceStatusCombined) AS 'Processor Device Status', latest(systemStateTemperatureStatisticsStatusCombined) AS 'Temperature Statistics Status', latest(systemStateTemperatureStatusCombined) AS 'Temperature Status' WHERE provider = 'kentik-idrac'" + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 8, + "row": 1, + "height": 4, + "width": 5 + }, + "title": "Physical Disk State", + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(physicalDiskState) AS 'Current State' FACET physicalDiskName WHERE metricName LIKE 'kentik.snmp.physicalDisk%' LIMIT MAX" + } + ] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 1, + "row": 5, + "height": 4, + "width": 2 + }, + "title": "", + "rawConfiguration": { + "dataFormatters": [], + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(systemBIOSStatus) WHERE provider = 'kentik-idrac'" + } + ], + "thresholds": [] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 3, + "row": 5, + "height": 4, + "width": 3 + }, + "title": "Controller Status", + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(controllerRollUpStatus) AS 'Current Status' FACET controllerName WHERE metricName = 'kentik.snmp.controllerRollUpStatus'" + } + ] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 6, + "row": 5, + "height": 4, + "width": 3 + }, + "title": "System Slot Status", + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(systemSlotStatus) AS 'Current Status' FACET systemSlotSlotExternalSlotName AS 'Slot Name' WHERE provider = 'kentik-idrac'" + } + ] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 9, + "row": 5, + "height": 4, + "width": 4 + }, + "title": "PCI Device Status", + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "FROM Metric SELECT latest(pCIDeviceStatus) AS 'Current Status' FACET pCIDeviceDescriptionName AS 'PCI Name' WHERE provider = 'kentik-idrac' LIMIT MAX" + } + ] + } + } + ] + } + ] + } + diff --git a/definitions/ext-idrac/golden_metrics.yml b/definitions/ext-idrac/golden_metrics.yml new file mode 100644 index 000000000..39b9867ac --- /dev/null +++ b/definitions/ext-idrac/golden_metrics.yml @@ -0,0 +1,23 @@ +temperatureStatus: + title: Temperature Status + query: + select: latest(systemStateTemperatureStatusCombined) + from: Metric + where: "provider = 'kentik-idrac'" + displayAsValue: true + +psuStatus: + title: PowerSupply Status + query: + select: latest(systemStatePowerSupplyStatusCombined) + from: Metric + where: "provider = 'kentik-idrac'" + displayAsValue: true + +memoryStatus: + title: Memory Status + query: + select: latest(systemStateMemoryDeviceStatusCombined) + from: Metric + where: "provider = 'kentik-idrac'" + displayAsValue: true diff --git a/definitions/ext-idrac/summary_metrics.yml b/definitions/ext-idrac/summary_metrics.yml new file mode 100644 index 000000000..8d2a7470a --- /dev/null +++ b/definitions/ext-idrac/summary_metrics.yml @@ -0,0 +1,32 @@ +ipAddress: + title: IP Address + unit: STRING + tag: + key: device_ip + +uptime: + title: Uptime + unit: SECONDS + query: + select: latest(kentik.snmp.Uptime)/100 + from: Metric + where: "provider = 'kentik-idrac'" + eventId: entity.guid + +tempStatus: + title: Temp Status + unit: STRING + tag: + key: temperature_status + +psuStatus: + title: PSU Status + unit: STRING + tag: + key: power_supply_status + +memStatus: + title: Memory Status + unit: STRING + tag: + key: memory_device_status