diff --git a/alert-policies/hardware-sentry/battery-charge.yml b/alert-policies/hardware-sentry/battery-charge.yml new file mode 100644 index 0000000000..5b65ead5f7 --- /dev/null +++ b/alert-policies/hardware-sentry/battery-charge.yml @@ -0,0 +1,29 @@ +name: Battery Charge + +description: |+ + This alert is triggered when a host battery charge falls too low. + +type: STATIC +nrql: + query: "FROM Metric SELECT latest(hw.battery.charge) FACET site, host.name" + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: .3 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: .5 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL \ No newline at end of file diff --git a/alert-policies/hardware-sentry/connector-status.yml b/alert-policies/hardware-sentry/connector-status.yml new file mode 100644 index 0000000000..5d172e0336 --- /dev/null +++ b/alert-policies/hardware-sentry/connector-status.yml @@ -0,0 +1,19 @@ +name: Connector Status +description: |+ + This alert is triggered when a connector becomes degraded. + +type: STATIC +nrql: + query: "FROM Metric SELECT latest(hardware_sentry.connector.status) WHERE state = 'degraded' FACET site, host.name" + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: EQUALS + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL \ No newline at end of file diff --git a/alert-policies/hardware-sentry/device-status(crit).yml b/alert-policies/hardware-sentry/device-status(crit).yml new file mode 100644 index 0000000000..b474852610 --- /dev/null +++ b/alert-policies/hardware-sentry/device-status(crit).yml @@ -0,0 +1,20 @@ +name: Device Status (critical) + +description: |+ + This alert is triggered when a device is failing. + +type: STATIC +nrql: + query: "FROM Metric SELECT latest(hw.status) WHERE state IN ('failed') OR battery.state = 'failed' FACET site, host.name" + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: EQUALS + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL \ No newline at end of file diff --git a/alert-policies/hardware-sentry/device-status(warn).yml b/alert-policies/hardware-sentry/device-status(warn).yml new file mode 100644 index 0000000000..211486a10e --- /dev/null +++ b/alert-policies/hardware-sentry/device-status(warn).yml @@ -0,0 +1,20 @@ +name: Device Status (warning) + +description: |+ + This alert is triggered when a device is in a warning state. + +type: STATIC +nrql: + query: "FROM Metric SELECT latest(hw.battery.charge) FACET site, host.name" + +# List of Critical and Warning thresholds for the condition +terms: + - priority: WARNING + # Operator used to compare against the threshold. + operator: EQUALS + # Value that triggers a violation + threshold: 1 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL \ No newline at end of file diff --git a/alert-policies/hardware-sentry/host-nonresponsive.yml b/alert-policies/hardware-sentry/host-nonresponsive.yml new file mode 100644 index 0000000000..aefd5d7a18 --- /dev/null +++ b/alert-policies/hardware-sentry/host-nonresponsive.yml @@ -0,0 +1,19 @@ +name: Host not responding +description: |+ + This alert is triggered when a host is not responding. + +type: STATIC +nrql: + query: "SELECT latest(hardware_sentry.host.up) FROM Metric FACET host.id" + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: EQUALS + # Value that triggers a violation + threshold: 0 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL \ No newline at end of file diff --git a/alert-policies/hardware-sentry/missing-devices.yml b/alert-policies/hardware-sentry/missing-devices.yml new file mode 100644 index 0000000000..ae0f0918f4 --- /dev/null +++ b/alert-policies/hardware-sentry/missing-devices.yml @@ -0,0 +1,19 @@ +name: Physical disk endurance capacity +description: |+ + This alert is triggered when a disk endurance utilization is very low. + +type: STATIC +nrql: + query: "SELECT latest(hw.status) FROM Metric WHERE state = 'present' FACET host.name" + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: EQUALS + # Value that triggers a violation + threshold: 0 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL \ No newline at end of file diff --git a/alert-policies/hardware-sentry/physical-disk-cap.yml b/alert-policies/hardware-sentry/physical-disk-cap.yml new file mode 100644 index 0000000000..05355cf458 --- /dev/null +++ b/alert-policies/hardware-sentry/physical-disk-cap.yml @@ -0,0 +1,28 @@ +name: Physical disk endurance capacity +description: |+ + This alert is triggered when a disk endurance utilization is very low. + +type: STATIC +nrql: + query: "SELECT latest(hw.physical_disk.endurance_utilization) FROM Metric FACET host.id" + +# List of Critical and Warning thresholds for the condition +terms: + - priority: CRITICAL + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: .02 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL + - priority: WARNING + # Operator used to compare against the threshold. + operator: BELOW + # Value that triggers a violation + threshold: .05 + # Time in seconds; 120 - 3600 + thresholdDuration: 300 + # How many data points must be in violation for the duration + thresholdOccurrences: ALL \ No newline at end of file diff --git a/dashboards/hardware-sentry/hardware-sentry.json b/dashboards/hardware-sentry/hardware-sentry.json new file mode 100644 index 0000000000..f6b6ce4bb7 --- /dev/null +++ b/dashboards/hardware-sentry/hardware-sentry.json @@ -0,0 +1,3021 @@ +{ + "name": "Hardware Sentry", + "description": null, + "pages": [ + { + "name": "Main", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Hardware Sentry Logo](https://dl.sentrysoftware.com/public/otel-dl-link.png)" + } + }, + { + "title": "Monitoring Coverage", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(FROM Metric \n SELECT filter( latest(`hardware_sentry.connector.status`), WHERE state = 'ok' AND host.name IN ({{sentry_host}}) AND site IN ({{sentry_site}}) ) as 'status'\n FACET site,host.id LIMIT 200) SELECT sum (`status`)*100/(FROM Metric SELECT cardinality(hardware_sentry.host.configured) SINCE 24 hours ago WHERE site IN ({{sentry_site}})) as '% coverage' SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Hosts", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cardinality(hardware_sentry.host.configured) as 'Total Hosts' FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Status Failed ", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cardinality(conditional(WHERE (`failedHwStatus` = 1), `failedHwStatus`)) as 'Failed Status' FROM (SELECT latest(`hw.status`) as 'failedHwStatus' FROM Metric WHERE ((state = 'failed') AND (getfield(`hw.status`, latest) = 1)) FACET dimensions() LIMIT MAX WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Active Connectors", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(FROM Metric SELECT max(hardware_sentry.connector.status) as 'status' FACET host.id, site WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}})) SELECT sum(status) as 'Active Connectors' SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Collect Started", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "", + "type": "duration" + }, + { + "format": "%b %d, %Y", + "name": "Min timestamp", + "type": "duration" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(timestamp) as '' FROM Metric WHERE metricName = 'hardware_sentry.agent.info' SINCE 2 years ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts not responding", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(SELECT cardinality(hardware_sentry.host.up) - latest(hardware_sentry.host.up) as 'hosts' FROM Metric WHERE site IN ({{sentry_site}}) FACET host.id) SELECT sum(`hosts`) AS 'Hosts not responding' SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "Missing Devices", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM (select latest(hw.status) as 'devices' FROM Metric WHERE state='present' AND site IN ({{sentry_site}}) FACET host.id LIMIT MAX) SELECT count(`devices`) - sum(`devices`) as 'Missing Devices' SINCE 10 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Power, Cost, and CO2 Emissions" + } + }, + { + "title": "Total Power * PUE", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*.001) as 'kW' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric WHERE site IN ({{sentry_site}}) FACET site LIMIT max ) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Power * PUE", + "layout": { + "column": 3, + "row": 4, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*.001) as 'MW' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric WHERE site IN ({{sentry_site}}) FACET site LIMIT max TIMESERIES 5 minutes)SINCE 1 hour AGO UNTIL NOW TIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily consumption (kWh)", + "layout": { + "column": 7, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*.001*24) as 'kWh' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT 100 ) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily Cost", + "layout": { + "column": 9, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24/1000) as '$' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.electricity_cost`) * cardinality(`hw.site.electricity_cost`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily CO₂ Emissions (t)", + "layout": { + "column": 11, + "row": 4, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24 / 1000 / 1000 / 1000) as 't' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.carbon_density_grams`) * cardinality(`hw.site.carbon_density_grams`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Power ", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(Power)*.001 as 'kW' FROM(\nSELECT latest(hw.host.power) AS 'Power' FROM Metric LIMIT MAX FACET site, host.name WHERE site IN ({{sentry_site}}))" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Monthly consumption (MWh)", + "layout": { + "column": 7, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*1e-6*24*30.437) as 'MWh' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric FACET site WHERE site IN ({{sentry_site}}) LIMIT 100 ) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Monthly Cost", + "layout": { + "column": 9, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24 * 30.437 / 1000) as '$' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.electricity_cost`) * cardinality(`hw.site.electricity_cost`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 30 days AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Monthly CO₂ Emissions (t)", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 30.467 * 24 / 1000 / 1000 / 1000) as 't' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.carbon_density_grams`) * cardinality(`hw.site.carbon_density_grams`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 1 month AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly consumption (MWh) (estimated)", + "layout": { + "column": 7, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*1e-6*24*365) as 'MWh' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric FACET site WHERE site IN ({{sentry_site}}) LIMIT max ) SINCE 1 month AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly Cost (estimated)", + "layout": { + "column": 9, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24 * 365 / 1000) as '$' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.electricity_cost`) * cardinality(`hw.site.electricity_cost`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 2 months AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly CO₂ Emissions (t) (estimated)", + "layout": { + "column": 11, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 365 * 24 / 1000 / 1000 / 1000) as 't' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.carbon_density_grams`) * cardinality(`hw.site.carbon_density_grams`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 2 months AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Sites" + } + }, + { + "title": "Sites", + "layout": { + "column": 1, + "row": 11, + "width": 12, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.table" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT cardinality(hardware_sentry.host.configured) as 'Hosts Count',average(hw.host.power)*cardinality(hw.host.power)*.001 as 'Total Power (kW)', average(hw.site.pue) as 'PUE', average(hw.site.electricity_cost) as 'Electricity Cost ($ per kWh)', average(hw.site.carbon_intensity_grams) as 'CO₂ Intensity (grams per kWh)', average(hw.host.ambient_temperature) as 'Ambient Temperature (°C)', min(hw.host.heating_margin) as 'Heating Margin (°C)' FACET site SINCE 1 hour ago UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly consumption (MW)", + "layout": { + "column": 1, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*1e-6*24*365) as 'MW' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric FACET site LIMIT 100 ) SINCE 1 month AGO UNTIL NOW FACET site" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly Cost (estimated)", + "layout": { + "column": 5, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24 * 365 / 1000) as '$' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.electricity_cost`) * cardinality(`hw.site.electricity_cost`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 2 months AGO UNTIL NOW FACET site" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly CO₂ Emissions (t)", + "layout": { + "column": 9, + "row": 14, + "width": 4, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 365 * 24 / 1000 / 1000 / 1000) as 't' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.carbon_density_grams`) * cardinality(`hw.site.carbon_density_grams`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 2 months AGO UNTIL NOW FACET site" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 17, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Power and Host information" + } + }, + { + "title": "Top Consumers (in kW)", + "layout": { + "column": 1, + "row": 18, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`hw.host.power`)*.001 AS 'kW' FROM Metric SINCE 60 MINUTES AGO UNTIL NOW WHERE site in ({{sentry_site}}) FACET concat(`site`,': ',`host.name`) LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Hosts Ambient Temperature (°C)", + "layout": { + "column": 5, + "row": 18, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(hw.host.ambient_temperature) as 'C' WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) FACET concat(site,': ',host.name) LIMIT 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Hosts Highest Temperature (°C)", + "layout": { + "column": 9, + "row": 18, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT max(hw.temperature) as 'C' WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) FACET concat(site,': ',host.name) LIMIT 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Power per Host Type", + "layout": { + "column": 1, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(Power) FROM (SELECT latest(hw.host.power) AS 'Power' FROM Metric LIMIT MAX FACET site, host.id, host.type WHERE site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) )FACET host.type SINCE 60 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Power per Platform Type", + "layout": { + "column": 4, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) as 'kW' FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) SINCE 60 MINUTES AGO UNTIL NOW FACET `os.type` LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts Type", + "layout": { + "column": 7, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) as 'kW' FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) SINCE 60 MINUTES AGO UNTIL NOW FACET `host.type` LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts Vendors", + "layout": { + "column": 10, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT count(hw.status) as 'hosts' FACET vendor LIMIT 30 WHERE state = 'present' AND hw.type = 'enclosure' AND metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 26, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Temperature Optimization by Site" + } + }, + { + "title": "Heating Margin", + "layout": { + "column": 1, + "row": 27, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(`hw.host.heating_margin`) FROM Metric WHERE site IN ({{sentry_site}}) FACET site SINCE 10 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 5 + }, + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Current Temperature", + "layout": { + "column": 7, + "row": 27, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`hw.host.ambient_temperature`) FROM Metric WHERE site IN ({{sentry_site}}) FACET site SINCE 10 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 15 + }, + { + "alertSeverity": "CRITICAL", + "value": 18 + } + ] + } + }, + { + "title": "Heating Margin host distribution", + "layout": { + "column": 1, + "row": 29, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.histogram" + }, + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(SELECT min(`hw.host.heating_margin`) as 'margin' FROM Metric FACET `host.name` WHERE site IN ({{sentry_site}}) LIMIT max) SELECT histogram(`margin`, width:40, buckets:20) as '°C' SINCE 60 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Heating Margin by site", + "layout": { + "column": 7, + "row": 29, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(`hw.host.heating_margin`) as '°C' FROM Metric WHERE site IN ({{sentry_site}}) FACET site SINCE 1 week AGO UNTIL NOW TIMESERIES 1 hour" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "CELSIUS" + }, + "yAxisLeft": { + "max": 40, + "min": 0, + "zero": false + }, + "yAxisRight": { + "zero": true + } + } + } + ] + }, + { + "name": "Site", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "![Sentry Software Logo](https://dl.sentrysoftware.com/public/otel-dl-link.png)\n\n#### IMPORTANT: Select a site from the variable dropdown to facet the widgets by site." + } + }, + { + "title": "Monitoring Coverage", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(FROM Metric \n SELECT filter( latest(`hardware_sentry.connector.status`), WHERE state = 'ok' AND host.name IN ({{sentry_host}}) AND site IN ({{sentry_site}}) ) as 'status'\n FACET site,host.id LIMIT 200) SELECT sum (`status`)*100/(FROM Metric SELECT cardinality(hardware_sentry.host.configured) SINCE 24 hours ago WHERE site IN ({{sentry_site}})) as '% coverage' SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 90 + }, + { + "alertSeverity": "CRITICAL", + "value": 50 + } + ] + } + }, + { + "title": "Hosts", + "layout": { + "column": 5, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cardinality(hardware_sentry.host.configured) as 'Hosts' FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Number of Status Failed ", + "layout": { + "column": 7, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cardinality(conditional(WHERE (`failedHwStatus` = 1), `failedHwStatus`)) as 'Failed Status' FROM (SELECT latest(`hw.status`) as 'failedHwStatus' FROM Metric WHERE ((state = 'failed') AND (getfield(`hw.status`, latest) = 1)) FACET dimensions() LIMIT MAX WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "CRITICAL", + "value": 1 + } + ] + } + }, + { + "title": "Active Connectors", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(FROM Metric SELECT max(hardware_sentry.connector.status) as 'status' FACET host.id, site WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}})) SELECT sum(status) as 'Active Connectors' SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Collect Started", + "layout": { + "column": 11, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "", + "type": "duration" + }, + { + "format": "%b %d, %Y", + "name": "Min timestamp", + "type": "duration" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(timestamp) as '' FROM Metric WHERE metricName = 'hardware_sentry.agent.info' SINCE 2 years ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts not responding", + "layout": { + "column": 5, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(SELECT cardinality(hardware_sentry.host.up) - latest(hardware_sentry.host.up) as 'hosts' FROM Metric WHERE site IN ({{sentry_site}}) FACET host.id) SELECT sum(`hosts`) AS 'Hosts not responding' SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "Missing Devices", + "layout": { + "column": 9, + "row": 2, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM (select latest(hw.status) as 'devices' FROM Metric WHERE state = 'present' AND site IN ('Sentry-PC', 'Sentry-Paris', 'Sentry-Ottawa') FACET host.id LIMIT MAX) SELECT count(`devices`) - sum(`devices`) as 'Missing Devices' SINCE 10 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 1 + } + ] + } + }, + { + "title": "CPUs", + "layout": { + "column": 1, + "row": 3, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cardinality(hw.status) as 'CPUs' FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND hw.type = 'cpu' AND state = 'present' SINCE 24 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Space", + "layout": { + "column": 3, + "row": 3, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`hw.physical_disk.size`) * cardinality(`hw.physical_disk.size`)) * 1e-12 as 'TB' FROM Metric WHERE site IN ({{sentry_site}}) SINCE 5 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "PUE", + "layout": { + "column": 5, + "row": 3, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(hw.site.pue) as 'PUE' WHERE site IN ({{sentry_site}}) TIMESERIES 5 minutes SINCE 2 hours ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "CO₂ Intensity", + "layout": { + "column": 9, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(hw.site.carbon_intensity_grams) as 'g' WHERE site IN ({{sentry_site}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Electricity Cost", + "layout": { + "column": 11, + "row": 3, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT average(hw.site.electricity_cost ) as '$' WHERE site IN ({{sentry_site}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Connected NICs", + "layout": { + "column": 1, + "row": 4, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`nics`) FROM (SELECT average(hw.network.up) * cardinality(hw.network.up) as 'nics' FROM Metric WHERE site IN ({{sentry_site}})) SINCE 20 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Network Tx (GB)", + "layout": { + "column": 3, + "row": 4, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Total hw.network.io", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(`hw.network.io`)*1e-9 as 'GB' FROM Metric WHERE site = {{sentry_site}} AND direction = 'transmit' SINCE 5 minutes AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 5, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Power, Cost, and CO2 Emissions" + } + }, + { + "title": "Total Power * PUE", + "layout": { + "column": 1, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*.001) as 'kW' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric WHERE site IN ({{sentry_site}}) FACET site LIMIT max ) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Power * PUE", + "layout": { + "column": 3, + "row": 6, + "width": 4, + "height": 6 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.area" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*.001) as 'MW' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric WHERE site IN ({{sentry_site}}) FACET site LIMIT max TIMESERIES 5 minutes)SINCE 1 hour AGO UNTIL NOW TIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily consumption (kWh)", + "layout": { + "column": 7, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*.001*24) as 'kWh' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT 100 ) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily Cost", + "layout": { + "column": 9, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24/1000) as '$' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.electricity_cost`) * cardinality(`hw.site.electricity_cost`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + }, + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Daily CO₂ Emissions (t)", + "layout": { + "column": 11, + "row": 6, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24 / 1000 / 1000 / 1000) as 't' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.carbon_density_grams`) * cardinality(`hw.site.carbon_density_grams`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Power ", + "layout": { + "column": 1, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(Power)*.001 as 'kW' FROM(\nSELECT latest(hw.host.power) AS 'Power' FROM Metric LIMIT MAX FACET site, host.name WHERE site IN ({{sentry_site}}))" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Monthly consumption (MWh)", + "layout": { + "column": 7, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*1e-6*24*30.437) as 'MWh' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric FACET site WHERE site IN ({{sentry_site}}) LIMIT 100 ) SINCE 1 day AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Monthly Cost", + "layout": { + "column": 9, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24 * 30.437 / 1000) as '$' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.electricity_cost`) * cardinality(`hw.site.electricity_cost`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 30 days AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + }, + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Monthly CO₂ Emissions (t)", + "layout": { + "column": 11, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 30.467 * 24 / 1000 / 1000 / 1000) as 't' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.carbon_density_grams`) * cardinality(`hw.site.carbon_density_grams`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 1 month AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly consumption (MWh) (estimated)", + "layout": { + "column": 7, + "row": 10, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1`)) * cardinality((`__result_0` * `__result_1`))*1e-6*24*365) as 'MWh' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1` FROM Metric FACET site WHERE site IN ({{sentry_site}}) LIMIT max ) SINCE 1 month AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Yearly Cost (estimated)", + "layout": { + "column": 9, + "row": 10, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 24 * 365 / 1000) as '$' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.electricity_cost`) * cardinality(`hw.site.electricity_cost`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 2 months AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 0 + }, + { + "alertSeverity": "CRITICAL", + "value": -1 + } + ] + } + }, + { + "title": "Yearly CO₂ Emissions (t) (estimated)", + "layout": { + "column": 11, + "row": 10, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average((`__result_0` * `__result_1` * `_result_2`)) * cardinality((`__result_0` * `__result_1`* `_result_2`))* 365 * 24 / 1000 / 1000 / 1000) as 't' FROM (SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) AS `__result_0`, average(`hw.site.pue`) AS `__result_1`, (average(`hw.site.carbon_density_grams`) * cardinality(`hw.site.carbon_density_grams`)) AS `_result_2` FROM Metric WHERE site IN({{sentry_site}}) FACET site LIMIT MAX) SINCE 2 months AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 12, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Site Temperature Optimization\n#### Select a site from the variable list to view at site specific level" + } + }, + { + "title": "Heating Margin", + "layout": { + "column": 1, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(`hw.host.heating_margin`) FROM Metric WHERE site IN ({{sentry_site}}) FACET site SINCE 10 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Heating Margin for site", + "layout": { + "column": 3, + "row": 13, + "width": 6, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT min(`hw.host.heating_margin`) as '°C' FROM Metric WHERE site IN ({{sentry_site}}) FACET site SINCE 1 week AGO UNTIL NOW TIMESERIES 1 hour" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "CELSIUS" + }, + "yAxisLeft": { + "max": 40, + "min": 0, + "zero": false + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Current Temperature", + "layout": { + "column": 9, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`hw.host.ambient_temperature`) FROM Metric WHERE site IN ({{sentry_site}}) FACET site SINCE 10 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "thresholds": [ + { + "alertSeverity": "WARNING", + "value": 15 + }, + { + "alertSeverity": "CRITICAL", + "value": 18 + } + ] + } + }, + { + "title": "Recommended max site temperature", + "layout": { + "column": 11, + "row": 13, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "°C", + "precision": 0, + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT clamp_min(clamp_max(((sum(`avg_amb`) + (sum(`min_heat`) - 5)) - (average(`__result_0`) - sum(`avg_amb`))), 29), 15) as '°C' FROM (SELECT max(`hw.host.ambient_temperature`) AS `__result_0`, average(`hw.host.ambient_temperature`) as 'avg_amb', min(hw.host.heating_margin) as 'min_heat' FROM Metric WHERE site IN ({{sentry_site}}) LIMIT 100) SINCE 1 MINUTE AGO" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Heating Margin host distribution", + "layout": { + "column": 1, + "row": 15, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.histogram" + }, + "rawConfiguration": { + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM(SELECT min(`hw.host.heating_margin`) as 'margin' FROM Metric FACET `host.name` WHERE site = {{sentry_site}} LIMIT max) SELECT histogram(`margin`, width:40, buckets:20) as '°C' SINCE 60 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Top Hosts Ambient Temperature (°C)", + "layout": { + "column": 7, + "row": 15, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT latest(hw.host.ambient_temperature) as 'C' WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) FACET concat(site,': ',host.name) LIMIT 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 18, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Power and Host information" + } + }, + { + "title": "Top Consumers (in kW)", + "layout": { + "column": 1, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`hw.host.power`)*.001 AS 'kW' FROM Metric SINCE 60 MINUTES AGO UNTIL NOW WHERE site in ({{sentry_site}}) FACET concat(`site`,': ',`host.name`) LIMIT 10" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Top Hosts Highest Temperature (°C)", + "layout": { + "column": 7, + "row": 19, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT max(hw.temperature) as 'C' WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) FACET concat(site,': ',host.name) LIMIT 20" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Power per Host Type", + "layout": { + "column": 1, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT sum(Power) FROM (SELECT latest(hw.host.power) AS 'Power' FROM Metric LIMIT MAX FACET site, host.id, host.type WHERE site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) )FACET host.type SINCE 60 minutes ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Power per Platform Type", + "layout": { + "column": 4, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) as 'kW' FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) SINCE 60 MINUTES AGO UNTIL NOW FACET `os.type` LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts Type", + "layout": { + "column": 7, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`hw.host.power`) * cardinality(`hw.host.power`)) as 'kW' FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}}) SINCE 60 MINUTES AGO UNTIL NOW FACET `host.type` LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Hosts Vendors", + "layout": { + "column": 10, + "row": 22, + "width": 3, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT count(hw.status) as 'hosts' FACET vendor LIMIT 30 WHERE state = 'present' AND hw.type = 'enclosure' AND metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' AND site IN ({{sentry_site}}) AND host.name IN ({{sentry_host}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + } + ] + }, + { + "name": "Host", + "description": null, + "widgets": [ + { + "title": "", + "layout": { + "column": 1, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Hardware Sentry - Host\n\nIMPORTANT: Select a single site and host from the variables for the widgets to work properly. " + } + }, + { + "title": "Host Type", + "layout": { + "column": 3, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(host.type) as '' FROM Metric WHERE host.id = {{sentry_host}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Vendor and Model", + "layout": { + "column": 5, + "row": 1, + "width": 4, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(vendor), latest(model) FROM Metric WHERE host.id = ({{sentry_host}})" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Disk Size", + "layout": { + "column": 9, + "row": 1, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (average(`hw.physical_disk.size`) * cardinality(`hw.physical_disk.size`)) FROM Metric WHERE ((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 3, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Power, Costs and CO₂ Emissions" + } + }, + { + "title": "Total Power * PUE", + "layout": { + "column": 1, + "row": 4, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "W", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(conditional(WHERE ((site = {{sentry_site}}) AND (host.name = {{sentry_host}})), `hw.host.power`)) * average(conditional(WHERE (site = {{sentry_site}}), `hw.site.pue_ratio`))) as 'W' FROM Metric SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Total Power * PUE", + "layout": { + "column": 4, + "row": 4, + "width": 5, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(conditional(WHERE ((site = {{sentry_site}}) AND (host.name = {{sentry_host}})), `hw.host.power`)) * average(conditional(WHERE (site = {{sentry_site}}), `hw.site.pue_ratio`))) as 'Watts' FROM Metric TIMESERIES 30 minutes SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "COUNT" + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Power per Device Type (joules)", + "layout": { + "column": 9, + "row": 4, + "width": 4, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.pie" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "FROM Metric SELECT sum(hw.energy) as 'Joules' FACET hw.type WHERE host.name = {{sentry_host}} AND site = {{sentry_site}}" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Power", + "layout": { + "column": 1, + "row": 6, + "width": 3, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "W", + "type": "decimal" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT (latest(conditional(WHERE ((site = {{sentry_site}}) AND (host.name = {{sentry_host}})), `hw.host.power`))) as 'W' FROM Metric SINCE 1 day ago" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Daily Cost", + "layout": { + "column": 1, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT ((((average(conditional(WHERE ((site = {{sentry_site}}) AND (host.name = {{sentry_host}})), `hw.host.power`)) * average(conditional(WHERE (site = {{sentry_site}}), `hw.site.pue`))) * average(`hw.site.electricity_cost`)) * 24) / 1000) AS '$' FROM Metric SINCE 1 days AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Monthly Cost", + "layout": { + "column": 3, + "row": 8, + "width": 2, + "height": 2 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT ((((average(conditional(WHERE ((site = {{sentry_site}}) AND (host.name = {{sentry_host}})), `hw.host.power`)) * average(conditional(WHERE (site = {{sentry_site}}), `hw.site.pue`))) * average(`hw.site.electricity_cost`)*30.437) * 24) / 1000) AS '$' FROM Metric SINCE 1 month AGO UNTIL NOW" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 10, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Monitored Devices" + } + }, + { + "title": "Monitored Devices", + "layout": { + "column": 1, + "row": 11, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT cardinality(`hw.status`) FROM Metric WHERE (((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) AND (state = 'present')) SINCE 60 MINUTES AGO UNTIL NOW FACET `hw.type` LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Errors per Hour", + "layout": { + "column": 7, + "row": 11, + "width": 6, + "height": 4 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(sum(`hw.errors`), 1 SECONDS) FROM Metric WHERE ((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW FACET `hw.type` LIMIT 100 TIMESERIES 3600000 SLIDE BY 30000" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 15, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Temperatures and Fans" + } + }, + { + "title": "Ambient", + "layout": { + "column": 1, + "row": 16, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`hw.host.ambient_temperature`) AS '°C' FROM Metric WHERE ((site = {{sentry_site}}) AND (host.name = {{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Temperatures", + "layout": { + "column": 3, + "row": 16, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`hw.temperature`) FROM Metric WHERE ((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW FACET device_id LIMIT 100 TIMESERIES 30000" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Fan Speed", + "layout": { + "column": 8, + "row": 16, + "width": 5, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`hw.fan.speed`) FROM Metric WHERE ((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW FACET device_id LIMIT 100 TIMESERIES 30000" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Heating Margin", + "layout": { + "column": 1, + "row": 17, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.bar" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`hw.host.heating_margin`) FROM Metric WHERE ((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW FACET dimensions() LIMIT 100" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Avg Fan Speed", + "layout": { + "column": 1, + "row": 18, + "width": 2, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.billboard" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT average(`hw.fan.speed`) as 'rpm' FROM Metric WHERE ((site = {{sentry_site}}) AND (host.name RLIKE {{sentry_host}})) SINCE 60 MINUTES AGO UNTIL NOW " + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "", + "layout": { + "column": 1, + "row": 19, + "width": 12, + "height": 1 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.markdown" + }, + "rawConfiguration": { + "text": "# Network" + } + }, + { + "title": "Total Traffic (byte/s)", + "layout": { + "column": 1, + "row": 20, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT rate(sum(`hw.network.io`), 1 SECONDS) as 'Transmitted' FROM Metric WHERE (((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) AND (direction = 'transmit')) SINCE 60 MINUTES AGO UNTIL NOW TIMESERIES 300000 SLIDE BY 30000" + }, + { + "accountIds": [], + "query": "SELECT rate(sum(`hw.network.io`), 1 SECONDS) as 'Received' FROM Metric WHERE (((site = {{sentry_site}}) AND (`host.name` = {{sentry_host}})) AND (direction = 'receive')) SINCE 60 MINUTES AGO UNTIL NOW TIMESERIES 300000 SLIDE BY 30000" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Bandwidth utilization", + "layout": { + "column": 7, + "row": 20, + "width": 6, + "height": 3 + }, + "linkedEntityGuids": null, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountIds": [], + "query": "SELECT latest(`hw.network.bandwidth.utilization`) as 'Bandwidth utilization' FROM Metric SINCE 1 hour AGO UNTIL NOW WHERE host.id = ({{sentry_host}}) LIMIT 100 TIMESERIES 5 minutes" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "units": { + "unit": "PERCENTAGE" + }, + "yAxisLeft": { + "max": 1, + "min": 0, + "zero": false + }, + "yAxisRight": { + "zero": true + } + } + } + ] + } + ], + "variables": [ + { + "name": "sentry_site", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "FROM Metric SELECT uniques(site) WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%'" + }, + "options": { + "ignoreTimeRange": true + }, + "title": "Site", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + }, + { + "name": "sentry_host", + "items": null, + "defaultValues": [ + { + "value": { + "string": "*" + } + } + ], + "nrqlQuery": { + "accountIds": [], + "query": "SELECT uniques(host.name) FROM Metric WHERE metricName LIKE 'hw.%' OR metricName LIKE 'hardware_sentry%' LIMIT MAX SINCE 1 month ago" + }, + "options": { + "ignoreTimeRange": true + }, + "title": "Hostname", + "type": "NRQL", + "isMultiSelection": true, + "replacementStrategy": "STRING" + } + ] + } \ No newline at end of file diff --git a/dashboards/hardware-sentry/hardware-sentry01.png b/dashboards/hardware-sentry/hardware-sentry01.png new file mode 100644 index 0000000000..2ccda40917 Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry01.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry02.png b/dashboards/hardware-sentry/hardware-sentry02.png new file mode 100644 index 0000000000..87acfe65c5 Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry02.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry03.png b/dashboards/hardware-sentry/hardware-sentry03.png new file mode 100644 index 0000000000..47ef11542a Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry03.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry04.png b/dashboards/hardware-sentry/hardware-sentry04.png new file mode 100644 index 0000000000..62d2c12883 Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry04.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry05.png b/dashboards/hardware-sentry/hardware-sentry05.png new file mode 100644 index 0000000000..d710125de2 Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry05.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry06.png b/dashboards/hardware-sentry/hardware-sentry06.png new file mode 100644 index 0000000000..f94dee1706 Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry06.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry07.png b/dashboards/hardware-sentry/hardware-sentry07.png new file mode 100644 index 0000000000..495ac5e139 Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry07.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry08.png b/dashboards/hardware-sentry/hardware-sentry08.png new file mode 100644 index 0000000000..e187e69879 Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry08.png differ diff --git a/dashboards/hardware-sentry/hardware-sentry09.png b/dashboards/hardware-sentry/hardware-sentry09.png new file mode 100644 index 0000000000..548b85308c Binary files /dev/null and b/dashboards/hardware-sentry/hardware-sentry09.png differ diff --git a/data-sources/collectd/config.yml b/data-sources/collectd/config.yml deleted file mode 100644 index be2b3fe713..0000000000 --- a/data-sources/collectd/config.yml +++ /dev/null @@ -1,19 +0,0 @@ -id: collectd -displayName: Collectd -description: | - Unix daemon for gathering and storing performance data across application and network infrastructure. - New Relic's CollectD integration lets you easily get CollectD-format data into New Relic. -icon: logo.svg -install: - primary: - nerdlet: - nerdletId: marketplace.install-data-source - nerdletState: - dataSourceId: collectd - requiresAccount: false -keywords: - - infrastructure - - open source monitoring -categoryTerms: - - open source monitoring - - infrastructure diff --git a/data-sources/collectd/logo.svg b/data-sources/collectd/logo.svg deleted file mode 100644 index 119275d621..0000000000 --- a/data-sources/collectd/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/data-sources/hardware-sentry/config.yml b/data-sources/hardware-sentry/config.yml new file mode 100644 index 0000000000..20d53e24fb --- /dev/null +++ b/data-sources/hardware-sentry/config.yml @@ -0,0 +1,20 @@ +id: hardware-sentry +displayName: Hardware Sentry +description: | + This integration with New Relic & Hardware Sentry, Sentry Software's monitoring solution for on-prem hosts, connects the native OpenTelemetry collector to New Relic's observability monitoring platform. +icon: logo.png +install: + primary: + link: + url: https://www.sentrysoftware.com/docs/hws-doc/latest/integration/newrelic.html +keywords: + - hardware + - infrastructure + - server + - network + - featured + - newrelic partner +categoryTerms: + - newrelic partner + - infrastructure + - network diff --git a/data-sources/hardware-sentry/logo.png b/data-sources/hardware-sentry/logo.png new file mode 100644 index 0000000000..76d25bf31c Binary files /dev/null and b/data-sources/hardware-sentry/logo.png differ diff --git a/install/third-party/collectd/install.yml b/install/third-party/collectd/install.yml deleted file mode 100644 index ad372374dc..0000000000 --- a/install/third-party/collectd/install.yml +++ /dev/null @@ -1,13 +0,0 @@ -id: third-party-collectd -name: Collectd -title: Collectd -description: | - Get CollectD data into New Relic. -target: - type: integration - destination: cloud - -install: - mode: link - destination: - url: https://docs.newrelic.com/docs/integrations/host-integrations/open-source-host-integrations-list/collectd-open-source-integration \ No newline at end of file diff --git a/quickstarts/aws/amazon-cloudwatch-network-monitor/config.yml b/quickstarts/aws/amazon-cloudwatch-network-monitor/config.yml index 3d1fb7c5e3..d4b4e4256c 100644 --- a/quickstarts/aws/amazon-cloudwatch-network-monitor/config.yml +++ b/quickstarts/aws/amazon-cloudwatch-network-monitor/config.yml @@ -29,4 +29,6 @@ keywords: dataSourceIds: - amazon-cloudwatch-network-monitor dashboards: + - amazon-cloudwatch-network-monitor +alertPolicies: - amazon-cloudwatch-network-monitor \ No newline at end of file diff --git a/quickstarts/aws/aws-lex/config.yml b/quickstarts/aws/aws-lex/config.yml index e79668b0ed..40ce54cc24 100644 --- a/quickstarts/aws/aws-lex/config.yml +++ b/quickstarts/aws/aws-lex/config.yml @@ -28,4 +28,6 @@ keywords: dataSourceIds: - aws-lex dashboards: + - aws-lex +alertPolicies: - aws-lex \ No newline at end of file diff --git a/quickstarts/collectd/config.yml b/quickstarts/collectd/config.yml deleted file mode 100644 index 36da3d21ae..0000000000 --- a/quickstarts/collectd/config.yml +++ /dev/null @@ -1,31 +0,0 @@ -id: b0ba29c2-be55-4da2-bf24-f8cc3c27715c -slug: collectd -description: | - ## What is CollectD? - - Unix daemon for gathering and storing performance data across application and network infrastructure. - - ## Get started! - - New Relic's CollectD integration lets you easily get CollectD-format data into New Relic. - Follow [the documentation](https://docs.newrelic.com/docs/integrations/host-integrations/open-source-host-integrations-list/collectd-open-source-integration) to get started! -summary: | - Get CollectD data into New Relic. -icon: logo.svg -level: New Relic -authors: - - New Relic -title: Collectd -documentation: - - name: Collectd installation docs - description: | - Unix daemon for gathering and storing performance data across application - and network infrastructure. - url: https://docs.newrelic.com/docs/integrations/host-integrations/open-source-host-integrations-list/collectd-open-source-integration -installPlans: - - third-party-collectd -dataSourceIds: - - collectd -keywords: - - infrastructure - - open source monitoring diff --git a/quickstarts/collectd/logo.svg b/quickstarts/collectd/logo.svg deleted file mode 100644 index 119275d621..0000000000 --- a/quickstarts/collectd/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/quickstarts/gcp/gcp-alloydb/config.yml b/quickstarts/gcp/gcp-alloydb/config.yml index f8736026bd..b7972c310a 100644 --- a/quickstarts/gcp/gcp-alloydb/config.yml +++ b/quickstarts/gcp/gcp-alloydb/config.yml @@ -30,6 +30,6 @@ keywords: - google cloud platform - alloydb dataSourceIds: - - gcp-infrastructure-monitoring + - google-cloud-platform dashboards: - gcp-alloydb diff --git a/quickstarts/hardware-sentry/config.yml b/quickstarts/hardware-sentry/config.yml new file mode 100644 index 0000000000..1c6e8ab9f6 --- /dev/null +++ b/quickstarts/hardware-sentry/config.yml @@ -0,0 +1,46 @@ +id: cc040c62-2348-417f-a465-f1970e42c85a +slug: hardware-sentry +title: Hardware Sentry +description: | + ## About Hardware Sentry + Hardware Sentry is Sentry Software's native OpenTelemetry solution which monitors the hardware health of almost any server, storage system, and network switch available on the market and exposes the collected metrics into New Relic. The solution also reports on power consumption, electricity costs and CO₂ emissions of on-prem IT infrastructures. + + The solution is free-to-use for New Relic users. [Support plans](https://sentrysoftware.com/pricing/) are available. + + ## About this integration + This integration with New Relic & Hardware Sentry connects the native OpenTelemetry collector in Hardware Sentry's agent to New Relic's observability monitoring platform. + + ### Monitoring the health of your on-prem IT infrastructure in New Relic + The monitoring available with this integration gives you full visualation into your on-prem IT infrastructure. + + - Monitor the health of your hardware resources, including processors, memory modules, disks, network cards, and more. + - Monitor and assess the CO₂ emissions linked to the energy consumption of your data centers. + - Evaluate the energy efficiency of your various data centers daily, monthly, or yearly based on collected power consumption metrics (no smart PDUs needed). + - Identify the optimal temperature for your data centers through real metrics and data-driven suggestions. Estimate potential savings by considering a slight increase in temperature. + +summary: | + Hardware Sentry provides insight into your hardware health, performance metrics, and sustainability indicators of your infrastructure. +authors: + - New Relic + - Joseph Counts +keywords: + - agent + - hardware + - infrastructure + - newrelic partner + - hardware sentry + - opentelemetry + - sustainability + - sentry software +dataSourceIds: + - hardware-sentry +dashboards: + - hardware-sentry +alert-policies: + - hardware-sentry +documentation: + - name: Hardware Sentry - New Relic integration + url: https://www.sentrysoftware.com/docs/hws-doc/latest/integration/newrelic.html + description: This documentation explains how to integrate Hardware Sentry with New Relic. +icon: logo.png +website: https://www.sentrysoftware.com/ \ No newline at end of file diff --git a/quickstarts/hardware-sentry/logo.png b/quickstarts/hardware-sentry/logo.png new file mode 100644 index 0000000000..76d25bf31c Binary files /dev/null and b/quickstarts/hardware-sentry/logo.png differ diff --git a/quickstarts/redhat/red-hat-openshift/config.yml b/quickstarts/redhat/red-hat-openshift/config.yml index b2c195fd5a..942dbe83bd 100644 --- a/quickstarts/redhat/red-hat-openshift/config.yml +++ b/quickstarts/redhat/red-hat-openshift/config.yml @@ -1,11 +1,9 @@ id: accac9b5-ec27-4d15-8879-51220086b8a1 slug: red-hat-openshift description: | - Red Hat OpenShift is a hybrid cloud, enterprise Kubernetes application - platform. + Red Hat OpenShift is a hybrid cloud, enterprise Kubernetes application platform. summary: | - Red Hat OpenShift is a hybrid cloud, enterprise Kubernetes application - platform. + Red Hat OpenShift is a hybrid cloud, enterprise Kubernetes application platform. icon: logo.svg level: New Relic authors: diff --git a/utils/yarn.lock b/utils/yarn.lock index b8388f2404..c168d81d30 100644 --- a/utils/yarn.lock +++ b/utils/yarn.lock @@ -2568,9 +2568,9 @@ json-schema-traverse@^1.0.0: integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json5@2.x, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== kleur@^3.0.3: version "3.0.3"