From: Afreen Misbah Date: Thu, 11 Jun 2026 23:56:00 +0000 (+0530) Subject: monitoring: add hardware metrics Grafana dashboard X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0514014687defceb1805c5ca7c628d6de968a518;p=ceph.git monitoring: add hardware metrics Grafana dashboard Signed-off-by: Afreen Misbah --- diff --git a/monitoring/ceph-mixin/dashboards/hardware.libsonnet b/monitoring/ceph-mixin/dashboards/hardware.libsonnet new file mode 100644 index 00000000000..6d38bd2a441 --- /dev/null +++ b/monitoring/ceph-mixin/dashboards/hardware.libsonnet @@ -0,0 +1,603 @@ +local g = import 'grafonnet/grafana.libsonnet'; + +(import 'utils.libsonnet') { + 'hardware.json': + $.dashboardSchema( + 'Ceph Hardware - Platform Monitoring', + 'Comprehensive hardware monitoring with temperatures, fans, storage, and firmware from node-proxy', + 'hardware001', + 'now-1h', + '10s', + 22, + $._config.dashboardTags, + '' + ) + .addAnnotation( + $.addAnnotationSchema( + 1, + '-- Grafana --', + true, + true, + 'rgba(0, 211, 255, 1)', + 'Annotations & Alerts', + 'dashboard' + ) + ) + .addLinks([ + $.addLinkSchema( + asDropdown=true, + icon='external link', + includeVars=true, + keepTime=true, + tags=[], + targetBlank=false, + title='Browse Dashboards', + tooltip='', + type='dashboards', + url='' + ), + ]) + .addTemplate( + g.template.datasource('datasource', 'prometheus', 'default', label='Data Source') + ) + .addTemplate( + $.addClusterTemplate() + ) + .addTemplate( + $.addTemplateSchema( + 'hostname', + '$datasource', + 'label_values(ceph_node_proxy_health, hostname)', + 1, + false, + 1, + 'Host', + '' + ) + ) + .addTemplate( + g.template.new( + 'fan_speeds', + '$datasource', + 'label_values(ceph_node_proxy_fan_rpm{hostname="$hostname"},fan_name)', + label='', + refresh='load', + includeAll=true, + multi=false, + allValues='', + sort=0, + regex='/.*TACH.*/', + hide=2 + ) + ) + .addPanels([ + // Row 1: Overview (collapsed) + $.addRowSchema(collapse=true, showTitle=true, title='Overview') + { gridPos: { x: 0, y: 0, w: 24, h: 1 }, panels: [ + // Health + $.addStatPanel( + title='Health', + unit='short', + datasource='$datasource', + gridPosition={ h: 4, w: 4, x: 0, y: 1 } + ) + .addTarget($.addTargetSchema( + 'max(ceph_node_proxy_health)', + legendFormat='__auto' + )) + + { + fieldConfig: { + defaults: { + mappings: [ + { type: 'value', options: { '0': { color: 'green', index: 0, text: 'OK' } } }, + { type: 'range', options: { from: 1, to: 999, result: { color: 'semi-dark-red', index: 1, text: 'NOT OK' } } }, + ], + thresholds: { + mode: 'absolute', + steps: [{ color: 'green' }, { color: 'red', value: 1 }], + }, + }, + }, + options+: { colorMode: 'background_solid' }, + }, + + // CPU Temp + $.addStatPanel( + title='CPU Temp', + unit='celsius', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 4, y: 1 } + ).addTarget($.addTargetSchema( + 'max(ceph_node_proxy_temperature_celsius{sensor_name=~".*CPU_TEMP"})', + legendFormat='__auto' + )) + + { + fieldConfig: { + defaults: { + min: 0, + max: 100, + thresholds: { + mode: 'absolute', + steps: [{ color: 'green' }, { color: '#EAB839', value: 75 }, { color: 'red', value: 85 }], + }, + }, + }, + }, + + // BMC Versions + $.pieChartPanel( + title='BMC Versions', + datasource='$datasource', + gridPos={ x: 7, y: 1, w: 3, h: 8 } + ) + .addTarget($.addTargetSchema( + 'count by(version) (ceph_node_proxy_firmware_info{component=~".*BMC.*"})', + legendFormat='{{version}}' + )) + + { + fieldConfig+: { + defaults+: { + color+: { + mode: 'palette-classic', + }, + }, + }, + options+: { + legend+: { showLegend: false }, + displayLabels: ['name'], + }, + }, + + // BIOS Versions + $.pieChartPanel( + title='BIOS Versions', + datasource='$datasource', + gridPos={ x: 10, y: 1, w: 3, h: 8 } + ) + .addTarget($.addTargetSchema( + 'count by(version) (ceph_node_proxy_firmware_info{component=~".*BIOS.*"})', + legendFormat='{{version}}' + )) + + { + fieldConfig+: { + defaults+: { + color+: { + mode: 'palette-classic', + }, + }, + }, + options+: { + legend+: { showLegend: false }, + displayLabels: ['name'], + }, + }, + + // Drive Types + $.pieChartPanel( + title='Drive Types', + datasource='$datasource', + gridPos={ x: 13, y: 1, w: 6, h: 8 } + ) + .addTarget($.addTargetSchema( + 'count by(model) (ceph_node_proxy_storage_capacity_bytes)', + legendFormat='{{model}}' + )) + + { + fieldConfig+: { + defaults+: { + color+: { + mode: 'palette-classic', + }, + }, + }, + options+: { + legend+: { showLegend: true, placement: 'right' }, + displayLabels: ['value'], + }, + }, + + // Drive Firmware + $.pieChartPanel( + title='Drive Firmware', + datasource='$datasource', + gridPos={ x: 19, y: 1, w: 5, h: 8 } + ) + .addTarget($.addTargetSchema( + 'count by(version) (ceph_node_proxy_firmware_info{component=~".*Drive.*"})', + legendFormat='{{version}}', + instant=true + )) + + { + fieldConfig+: { + defaults+: { + color+: { + mode: 'palette-classic', + }, + }, + }, + options+: { + legend+: { showLegend: true, placement: 'right' }, + displayLabels: ['value'], + }, + }, + + // Hosts + $.addStatPanel( + title='Hosts', + unit='short', + datasource='$datasource', + gridPosition={ h: 4, w: 2, x: 0, y: 5 } + ).addTarget($.addTargetSchema( + 'count(count by(hostname) (ceph_node_proxy_health))', + legendFormat='__auto' + )), + + // Drives + $.addStatPanel( + title='Drives', + unit='short', + datasource='$datasource', + gridPosition={ h: 4, w: 2, x: 2, y: 5 } + ).addTarget($.addTargetSchema( + 'count(ceph_node_proxy_storage_capacity_bytes)', + legendFormat='__auto' + )), + + // NVMe Temp + $.addStatPanel( + title='NVMe Temp', + unit='celsius', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 4, y: 5 } + ).addTarget($.addTargetSchema( + 'max(ceph_node_proxy_temperature_celsius{sensor_name=~"NVME.*_TEMP"})', + legendFormat='__auto' + )) + + { + fieldConfig: { + defaults: { + min: 0, + max: 85, + thresholds: { + mode: 'absolute', + steps: [{ color: 'green' }, { color: 'yellow', value: 75 }, { color: 'red', value: 80 }], + }, + }, + }, + }, + ] }, + + // Row 2: Host Overview + $.addRowSchema(true, true, 'Host Overview: $hostname') + { gridPos: { x: 0, y: 1, w: 24, h: 1 }, panels: [ + // Power + $.addStatPanel( + title='Power', + unit='short', + datasource='$datasource', + gridPosition={ h: 3, w: 2, x: 0, y: 2 } + ).addTarget($.addTargetSchema( + 'ceph_node_proxy_health{hostname="$hostname",category="power"}', + legendFormat='__auto' + )) + + { + fieldConfig: { + defaults: { + mappings: [ + { type: 'value', options: { '0': { color: 'green', index: 0, text: 'OK' } } }, + { type: 'range', options: { from: 1, to: 9999, result: { color: 'red', index: 1, text: 'NOT OK' } } }, + ], + thresholds: { mode: 'absolute', steps: [{ color: 'green' }, { color: 'red', value: 1 }] }, + }, + }, + options+: { colorMode: 'background_solid' }, + }, + + // MB Temperature + $.addStatPanel( + title='MB Temperature (max)', + unit='celsius', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 2, y: 2 } + ).addTarget($.addTargetSchema( + 'max(ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~".*MB_TEMP.*"})', + legendFormat='__auto' + )), + + // CPU Temperature + $.addStatPanel( + title='CPU Temperature', + unit='celsius', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 5, y: 2 } + ).addTarget($.addTargetSchema( + 'avg(ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~".*CPU_TEMP"})', + legendFormat='__auto' + )), + + // DIMM Temperature + $.addStatPanel( + title='DIMM Temperature (max)', + unit='celsius', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 8, y: 2 } + ).addTarget($.addTargetSchema( + 'max(ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~".*DIMM.*_TEMP"})', + legendFormat='__auto' + )), + + // PSU Fans + $.addStatPanel( + title='PSU Fans', + unit='short', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 11, y: 2 } + ).addTarget($.addTargetSchema( + 'count(ceph_node_proxy_fan_rpm{hostname=~"$hostname", fan_name=~"PSU.*"})', + legendFormat='__auto' + )), + + // AVG PSU Temperature + $.addStatPanel( + title='AVG PSU Temperature', + unit='celsius', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 14, y: 2 } + ).addTarget($.addTargetSchema( + 'avg(ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~"PSU.*_TEMP.*"})', + legendFormat='__auto' + )), + + // NVMe Drives + $.addStatPanel( + title='NVMe Drives', + unit='short', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 17, y: 2 } + ).addTarget($.addTargetSchema( + 'count(ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~"NVME.*"})', + legendFormat='__auto' + )), + + // NVMe Temperature + $.addStatPanel( + title='NVMe Temperature (max)', + unit='celsius', + datasource='$datasource', + gridPosition={ h: 4, w: 3, x: 20, y: 2 } + ).addTarget($.addTargetSchema( + 'max(ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~"NVME.*"})', + legendFormat='__auto' + )), + + // Power Control + $.addStatPanel( + title='Power Control', + unit='short', + datasource='$datasource', + gridPosition={ h: 3, w: 2, x: 0, y: 5 } + ).addTarget($.addTargetSchema( + 'ceph_node_proxy_health{hostname="$hostname",category="power"}', + legendFormat='__auto' + )) + + { + fieldConfig: { + defaults: { + mappings: [ + { type: 'value', options: { '0': { color: 'green', index: 0, text: 'OK' } } }, + { type: 'range', options: { from: 1, to: 9999, result: { color: 'red', index: 1, text: 'NOT OK' } } }, + ], + thresholds: { mode: 'absolute', steps: [{ color: 'green' }, { color: 'red', value: 1 }] }, + }, + }, + options+: { colorMode: 'background_solid' }, + }, + + // Cooling + $.addStatPanel( + title='Cooling', + unit='short', + datasource='$datasource', + gridPosition={ h: 3, w: 2, x: 0, y: 8 } + ).addTarget($.addTargetSchema( + 'ceph_node_proxy_health{hostname="$hostname",category="fans"}', + legendFormat='__auto' + )) + + { + fieldConfig: { + defaults: { + mappings: [ + { type: 'value', options: { '0': { color: 'green', index: 0, text: 'OK' } } }, + { type: 'range', options: { from: 1, to: 9999, result: { color: 'red', index: 1, text: 'NOT OK' } } }, + ], + thresholds: { mode: 'absolute', steps: [{ color: 'green' }, { color: 'red', value: 1 }] }, + }, + }, + options+: { colorMode: 'background_solid' }, + }, + + // Drives + $.addStatPanel( + title='Drives', + unit='short', + datasource='$datasource', + gridPosition={ h: 3, w: 2, x: 0, y: 11 } + ).addTarget($.addTargetSchema( + 'ceph_node_proxy_health{hostname="$hostname",category="storage"}', + legendFormat='__auto' + )) + + { + fieldConfig: { + defaults: { + mappings: [ + { type: 'value', options: { '0': { color: 'green', index: 0, text: 'OK' } } }, + { type: 'range', options: { from: 1, to: 9999, result: { color: 'red', index: 1, text: 'NOT OK' } } }, + ], + thresholds: { mode: 'absolute', steps: [{ color: 'green' }, { color: 'red', value: 1 }] }, + }, + }, + options+: { colorMode: 'background_solid' }, + }, + ] }, + + // Row 3: FAN Speeds + $.addRowSchema(true, true, 'FAN Speeds: $hostname') + { gridPos: { x: 0, y: 2, w: 24, h: 1 }, panels: [ + // Repeating panel + $.addStatPanel( + title='FAN: $fan_speeds (RPM)', + unit='short', + datasource='$datasource', + gridPosition={ h: 5, w: 4, x: 0, y: 3 } + ).addTarget($.addTargetSchema( + 'ceph_node_proxy_fan_rpm{hostname=~"$hostname",fan_name=~"$fan_speeds"}', + legendFormat='{{fan_name}}' + )) + + { + repeat: 'fan_speeds', + repeatDirection: 'h', + maxPerRow: 6, + }, + + // PSU1 + $.addStatPanel( + title='PSU1 Fan Speed (RPM)', + unit='short', + datasource='$datasource', + gridPosition={ h: 5, w: 4, x: 0, y: 8 } + ).addTarget($.addTargetSchema( + 'ceph_node_proxy_fan_rpm{hostname=~"$hostname",fan_name=~"PSU1.*"}', + legendFormat='{{fan_name}}' + )), + + // PSU2 + $.addStatPanel( + title='PSU2 Fan Speed (RPM)', + unit='short', + datasource='$datasource', + gridPosition={ h: 5, w: 4, x: 4, y: 8 } + ).addTarget($.addTargetSchema( + 'ceph_node_proxy_fan_rpm{hostname=~"$hostname",fan_name=~"PSU2.*"}', + legendFormat='{{fan_name}}' + )), + ] }, + + // Row 4: Temperature History + $.addRowSchema(true, true, 'Temperature History: $hostname') + { gridPos: { x: 0, y: 3, w: 24, h: 1 }, panels: [ + // CPU Temperature + g.graphPanel.new( + title='CPU Temperature', + datasource='$datasource', + format='celsius', + ).addTarget( + g.prometheus.target( + 'ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~".*CPU_TEMP"}', + legendFormat='{{sensor_name}}' + ) + ).addTarget( + g.prometheus.target('vector(100)', legendFormat='Critical') + ) + + { + gridPos: { x: 0, y: 4, w: 12, h: 8 }, + yaxes: [{ min: 0 }, {}], + seriesOverrides: [ + { alias: 'Critical', color: 'dark-red', dashes: true, fill: 0 }, + ], + }, + + // DIMM Temperatures + g.graphPanel.new( + title='DIMM Temperatures', + datasource='$datasource', + format='celsius', + ).addTarget( + g.prometheus.target( + 'ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~".*DIMM.*_TEMP"}', + legendFormat='{{sensor_name}}' + ) + ).addTarget( + g.prometheus.target('vector(88)', legendFormat='Critical') + ) + + { + gridPos: { x: 12, y: 4, w: 12, h: 8 }, + yaxes: [{ min: 0 }, {}], + seriesOverrides: [ + { alias: 'Critical', color: 'dark-red', dashes: true, fill: 0 }, + ], + }, + + // Motherboard Temperatures + g.graphPanel.new( + title='Motherboard Temperatures', + datasource='$datasource', + format='celsius', + ).addTarget( + g.prometheus.target( + 'ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~".*MB_TEMP.*"}', + legendFormat='{{sensor_name}}' + ) + ).addTarget( + g.prometheus.target('vector(85)', legendFormat='Critical') + ) + + { + gridPos: { x: 0, y: 12, w: 12, h: 8 }, + yaxes: [{ min: 0 }, {}], + seriesOverrides: [ + { alias: 'Critical', color: 'dark-red', dashes: true, fill: 0 }, + ], + }, + + // NVMe Temperatures + g.graphPanel.new( + title='NVMe Temperatures', + datasource='$datasource', + format='celsius', + ).addTarget( + g.prometheus.target( + 'ceph_node_proxy_temperature_celsius{hostname=~"$hostname", sensor_name=~"NVME.*_TEMP"}', + legendFormat='{{sensor_name}}' + ) + ).addTarget( + g.prometheus.target('vector(85)', legendFormat='Critical') + ) + + { + gridPos: { x: 12, y: 12, w: 12, h: 8 }, + yaxes: [{ min: 0 }, {}], + seriesOverrides: [ + { alias: 'Critical', color: 'dark-red', dashes: true, fill: 0 }, + ], + }, + ] }, + + // Row 5: FAN Speed History + $.addRowSchema(true, true, 'FAN Speed History: $hostname') + { gridPos: { x: 0, y: 4, w: 24, h: 1 }, panels: [ + // AVG PSU Fan Speed + g.graphPanel.new( + title='AVG PSU Fan Speed', + datasource='$datasource', + format='short', + ).addTarget( + g.prometheus.target( + 'avg(ceph_node_proxy_fan_rpm{hostname=~"$hostname", fan_name=~"PSU.*"})', + legendFormat='PSU Fans' + ) + ) + + { + gridPos: { x: 0, y: 5, w: 12, h: 8 }, + description: 'AVG across both PSUs', + }, + + // AVG Cooling Fan Speed + g.graphPanel.new( + title='AVG Cooling Fan Speed', + datasource='$datasource', + format='short', + ).addTarget( + g.prometheus.target( + 'avg(ceph_node_proxy_fan_rpm{hostname=~"$hostname", fan_name=~".*TACH.*"})', + legendFormat='System Fans' + ) + ) + + { + gridPos: { x: 12, y: 5, w: 12, h: 8 }, + }, + ] }, + ]), +} diff --git a/monitoring/ceph-mixin/dashboards_out/hardware.json b/monitoring/ceph-mixin/dashboards_out/hardware.json new file mode 100644 index 00000000000..2691c71890d --- /dev/null +++ b/monitoring/ceph-mixin/dashboards_out/hardware.json @@ -0,0 +1,2142 @@ +{ + "__inputs": [ ], + "__requires": [ ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "showIn": 0, + "tags": [ ], + "type": "dashboard" + } + ] + }, + "description": "Comprehensive hardware monitoring with temperatures, fans, storage, and firmware from node-proxy", + "editable": false, + "gnetId": null, + "graphTooltip": 0, + "hideControls": false, + "id": null, + "links": [ + { + "asDropdown": true, + "icon": "external link", + "includeVars": true, + "keepTime": true, + "tags": [ ], + "targetBlank": false, + "title": "Browse Dashboards", + "tooltip": "", + "type": "dashboards", + "url": "" + } + ], + "panels": [ + { + "collapse": true, + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 2, + "panels": [ + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "semi-dark-red", + "index": 1, + "text": "NOT OK" + }, + "to": 999 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 1 + } + ] + } + } + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 0, + "y": 1 + }, + "id": 3, + "links": [ ], + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "max(ceph_node_proxy_health)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "Health", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "#EAB839", + "value": 75 + }, + { + "color": "red", + "value": 85 + } + ] + } + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 4, + "y": 1 + }, + "id": 4, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "max(ceph_node_proxy_temperature_celsius{sensor_name=~\".*CPU_TEMP\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "CPU Temp", + "transparent": false, + "type": "stat" + }, + { + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [ ] + }, + "overrides": [ ] + }, + "gridPos": { + "h": 8, + "w": 3, + "x": 7, + "y": 1 + }, + "id": 5, + "options": { + "displayLabels": [ + "name" + ], + "legend": { + "calcs": [ ], + "displayMode": "table", + "placement": "bottom", + "showLegend": false, + "values": [ ] + }, + "pieType": "pie", + "reduceOptions": { }, + "tooltip": { } + }, + "targets": [ + { + "expr": "count by(version) (ceph_node_proxy_firmware_info{component=~\".*BMC.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{version}}", + "refId": "A" + } + ], + "title": "BMC Versions", + "type": "piechart" + }, + { + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [ ] + }, + "overrides": [ ] + }, + "gridPos": { + "h": 8, + "w": 3, + "x": 10, + "y": 1 + }, + "id": 6, + "options": { + "displayLabels": [ + "name" + ], + "legend": { + "calcs": [ ], + "displayMode": "table", + "placement": "bottom", + "showLegend": false, + "values": [ ] + }, + "pieType": "pie", + "reduceOptions": { }, + "tooltip": { } + }, + "targets": [ + { + "expr": "count by(version) (ceph_node_proxy_firmware_info{component=~\".*BIOS.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{version}}", + "refId": "A" + } + ], + "title": "BIOS Versions", + "type": "piechart" + }, + { + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [ ] + }, + "overrides": [ ] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 13, + "y": 1 + }, + "id": 7, + "options": { + "displayLabels": [ + "value" + ], + "legend": { + "calcs": [ ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "values": [ ] + }, + "pieType": "pie", + "reduceOptions": { }, + "tooltip": { } + }, + "targets": [ + { + "expr": "count by(model) (ceph_node_proxy_storage_capacity_bytes)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{model}}", + "refId": "A" + } + ], + "title": "Drive Types", + "type": "piechart" + }, + { + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [ ] + }, + "overrides": [ ] + }, + "gridPos": { + "h": 8, + "w": 5, + "x": 19, + "y": 1 + }, + "id": 8, + "options": { + "displayLabels": [ + "value" + ], + "legend": { + "calcs": [ ], + "displayMode": "table", + "placement": "right", + "showLegend": true, + "values": [ ] + }, + "pieType": "pie", + "reduceOptions": { }, + "tooltip": { } + }, + "targets": [ + { + "expr": "count by(version) (ceph_node_proxy_firmware_info{component=~\".*Drive.*\"})", + "format": "time_series", + "instant": true, + "intervalFactor": 1, + "legendFormat": "{{version}}", + "refId": "A" + } + ], + "title": "Drive Firmware", + "type": "piechart" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "short" + } + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 0, + "y": 5 + }, + "id": 9, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "count(count by(hostname) (ceph_node_proxy_health))", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "Hosts", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "short" + } + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 2, + "y": 5 + }, + "id": 10, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "count(ceph_node_proxy_storage_capacity_bytes)", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "Drives", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "max": 85, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "yellow", + "value": 75 + }, + { + "color": "red", + "value": 80 + } + ] + } + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 4, + "y": 5 + }, + "id": 11, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "max(ceph_node_proxy_temperature_celsius{sensor_name=~\"NVME.*_TEMP\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "NVMe Temp", + "transparent": false, + "type": "stat" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Overview", + "titleSize": "h6", + "type": "row" + }, + { + "collapse": true, + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 1 + }, + "id": 12, + "panels": [ + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "red", + "index": 1, + "text": "NOT OK" + }, + "to": 9999 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 1 + } + ] + } + } + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 0, + "y": 2 + }, + "id": 13, + "links": [ ], + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "ceph_node_proxy_health{hostname=\"$hostname\",category=\"power\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "Power", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "celsius" + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 2, + "y": 2 + }, + "id": 14, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "max(ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\".*MB_TEMP.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "MB Temperature (max)", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "celsius" + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 5, + "y": 2 + }, + "id": 15, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "avg(ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\".*CPU_TEMP\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "CPU Temperature", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "celsius" + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 8, + "y": 2 + }, + "id": 16, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "max(ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\".*DIMM.*_TEMP\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "DIMM Temperature (max)", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "short" + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 11, + "y": 2 + }, + "id": 17, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "count(ceph_node_proxy_fan_rpm{hostname=~\"$hostname\", fan_name=~\"PSU.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "PSU Fans", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "celsius" + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 14, + "y": 2 + }, + "id": 18, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "avg(ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\"PSU.*_TEMP.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "AVG PSU Temperature", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "short" + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 17, + "y": 2 + }, + "id": 19, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "count(ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\"NVME.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "NVMe Drives", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "celsius" + } + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 20, + "y": 2 + }, + "id": 20, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "max(ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\"NVME.*\"})", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "NVMe Temperature (max)", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "red", + "index": 1, + "text": "NOT OK" + }, + "to": 9999 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 1 + } + ] + } + } + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 0, + "y": 5 + }, + "id": 21, + "links": [ ], + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "ceph_node_proxy_health{hostname=\"$hostname\",category=\"power\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "Power Control", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "red", + "index": 1, + "text": "NOT OK" + }, + "to": 9999 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 1 + } + ] + } + } + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 0, + "y": 8 + }, + "id": 22, + "links": [ ], + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "ceph_node_proxy_health{hostname=\"$hostname\",category=\"fans\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "Cooling", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "mappings": [ + { + "options": { + "0": { + "color": "green", + "index": 0, + "text": "OK" + } + }, + "type": "value" + }, + { + "options": { + "from": 1, + "result": { + "color": "red", + "index": 1, + "text": "NOT OK" + }, + "to": 9999 + }, + "type": "range" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 1 + } + ] + } + } + }, + "gridPos": { + "h": 3, + "w": 2, + "x": 0, + "y": 11 + }, + "id": 23, + "links": [ ], + "options": { + "colorMode": "background_solid", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "ceph_node_proxy_health{hostname=\"$hostname\",category=\"storage\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "__auto", + "refId": "A" + } + ], + "title": "Drives", + "transparent": false, + "type": "stat" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Host Overview: $hostname", + "titleSize": "h6", + "type": "row" + }, + { + "collapse": true, + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 2 + }, + "id": 24, + "panels": [ + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "short" + } + }, + "gridPos": { + "h": 5, + "w": 4, + "x": 0, + "y": 3 + }, + "id": 25, + "links": [ ], + "maxPerRow": 6, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "repeat": "fan_speeds", + "repeatDirection": "h", + "targets": [ + { + "expr": "ceph_node_proxy_fan_rpm{hostname=~\"$hostname\",fan_name=~\"$fan_speeds\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{fan_name}}", + "refId": "A" + } + ], + "title": "FAN: $fan_speeds (RPM)", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "short" + } + }, + "gridPos": { + "h": 5, + "w": 4, + "x": 0, + "y": 8 + }, + "id": 26, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "ceph_node_proxy_fan_rpm{hostname=~\"$hostname\",fan_name=~\"PSU1.*\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{fan_name}}", + "refId": "A" + } + ], + "title": "PSU1 Fan Speed (RPM)", + "transparent": false, + "type": "stat" + }, + { + "colors": null, + "datasource": "$datasource", + "description": "", + "fieldConfig": { + "defaults": { + "decimals": 0, + "links": [ ], + "mappings": [ ], + "thresholds": { + "mode": "absolute", + "steps": [ ] + }, + "unit": "short" + } + }, + "gridPos": { + "h": 5, + "w": 4, + "x": 4, + "y": 8 + }, + "id": 27, + "links": [ ], + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "horizontal", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "9.1.3", + "targets": [ + { + "expr": "ceph_node_proxy_fan_rpm{hostname=~\"$hostname\",fan_name=~\"PSU2.*\"}", + "format": "time_series", + "intervalFactor": 1, + "legendFormat": "{{fan_name}}", + "refId": "A" + } + ], + "title": "PSU2 Fan Speed (RPM)", + "transparent": false, + "type": "stat" + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "FAN Speeds: $hostname", + "titleSize": "h6", + "type": "row" + }, + { + "collapse": true, + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 3 + }, + "id": 28, + "panels": [ + { + "aliasColors": { }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$datasource", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 4 + }, + "id": 29, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [ ], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "alias": "Critical", + "color": "dark-red", + "dashes": true, + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\".*CPU_TEMP\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{sensor_name}}", + "refId": "A" + }, + { + "expr": "vector(100)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Critical", + "refId": "B" + } + ], + "thresholds": [ ], + "timeFrom": null, + "timeShift": null, + "title": "CPU Temperature", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ ] + }, + "yaxes": [ + { + "min": 0 + }, + { } + ] + }, + { + "aliasColors": { }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$datasource", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 4 + }, + "id": 30, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [ ], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "alias": "Critical", + "color": "dark-red", + "dashes": true, + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\".*DIMM.*_TEMP\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{sensor_name}}", + "refId": "A" + }, + { + "expr": "vector(88)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Critical", + "refId": "B" + } + ], + "thresholds": [ ], + "timeFrom": null, + "timeShift": null, + "title": "DIMM Temperatures", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ ] + }, + "yaxes": [ + { + "min": 0 + }, + { } + ] + }, + { + "aliasColors": { }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$datasource", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "id": 31, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [ ], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "alias": "Critical", + "color": "dark-red", + "dashes": true, + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\".*MB_TEMP.*\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{sensor_name}}", + "refId": "A" + }, + { + "expr": "vector(85)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Critical", + "refId": "B" + } + ], + "thresholds": [ ], + "timeFrom": null, + "timeShift": null, + "title": "Motherboard Temperatures", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ ] + }, + "yaxes": [ + { + "min": 0 + }, + { } + ] + }, + { + "aliasColors": { }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$datasource", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "id": 32, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [ ], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ + { + "alias": "Critical", + "color": "dark-red", + "dashes": true, + "fill": 0 + } + ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "ceph_node_proxy_temperature_celsius{hostname=~\"$hostname\", sensor_name=~\"NVME.*_TEMP\"}", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "{{sensor_name}}", + "refId": "A" + }, + { + "expr": "vector(85)", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "Critical", + "refId": "B" + } + ], + "thresholds": [ ], + "timeFrom": null, + "timeShift": null, + "title": "NVMe Temperatures", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ ] + }, + "yaxes": [ + { + "min": 0 + }, + { } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "Temperature History: $hostname", + "titleSize": "h6", + "type": "row" + }, + { + "collapse": true, + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 4 + }, + "id": 33, + "panels": [ + { + "aliasColors": { }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$datasource", + "description": "AVG across both PSUs", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 5 + }, + "id": 34, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [ ], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg(ceph_node_proxy_fan_rpm{hostname=~\"$hostname\", fan_name=~\"PSU.*\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "PSU Fans", + "refId": "A" + } + ], + "thresholds": [ ], + "timeFrom": null, + "timeShift": null, + "title": "AVG PSU Fan Speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ ] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + }, + { + "aliasColors": { }, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "$datasource", + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 5 + }, + "id": 35, + "legend": { + "alignAsTable": false, + "avg": false, + "current": false, + "max": false, + "min": false, + "rightSide": false, + "show": true, + "sideWidth": null, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "links": [ ], + "nullPointMode": "null", + "percentage": false, + "pointradius": 5, + "points": false, + "renderer": "flot", + "repeat": null, + "seriesOverrides": [ ], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "expr": "avg(ceph_node_proxy_fan_rpm{hostname=~\"$hostname\", fan_name=~\".*TACH.*\"})", + "format": "time_series", + "intervalFactor": 2, + "legendFormat": "System Fans", + "refId": "A" + } + ], + "thresholds": [ ], + "timeFrom": null, + "timeShift": null, + "title": "AVG Cooling Fan Speed", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [ ] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ] + } + ], + "repeat": null, + "repeatIteration": null, + "repeatRowId": null, + "showTitle": true, + "title": "FAN Speed History: $hostname", + "titleSize": "h6", + "type": "row" + } + ], + "refresh": "10s", + "rows": [ ], + "schemaVersion": 22, + "style": "dark", + "tags": [ + "ceph-mixin" + ], + "templating": { + "list": [ + { + "current": { + "text": "default", + "value": "default" + }, + "hide": 0, + "label": "Data Source", + "name": "datasource", + "options": [ ], + "query": "prometheus", + "refresh": 1, + "regex": "", + "type": "datasource" + }, + { + "allValue": null, + "current": { }, + "datasource": "$datasource", + "hide": 0, + "includeAll": false, + "label": "cluster", + "multi": false, + "name": "cluster", + "options": [ ], + "query": "label_values(ceph_health_status, cluster)", + "refresh": 1, + "regex": "(.*)", + "sort": 1, + "tagValuesQuery": "", + "tags": [ ], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": null, + "current": { }, + "datasource": "$datasource", + "hide": 0, + "includeAll": false, + "label": "Host", + "multi": false, + "name": "hostname", + "options": [ ], + "query": "label_values(ceph_node_proxy_health, hostname)", + "refresh": 1, + "regex": "", + "sort": 1, + "tagValuesQuery": "", + "tags": [ ], + "tagsQuery": "", + "type": "query", + "useTags": false + }, + { + "allValue": "", + "current": { }, + "datasource": "$datasource", + "hide": 2, + "includeAll": true, + "label": "", + "multi": false, + "name": "fan_speeds", + "options": [ ], + "query": "label_values(ceph_node_proxy_fan_rpm{hostname=\"$hostname\"},fan_name)", + "refresh": 1, + "regex": "/.*TACH.*/", + "sort": 0, + "tagValuesQuery": "", + "tags": [ ], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Ceph Hardware - Platform Monitoring", + "uid": "hardware001", + "version": 0 +} diff --git a/src/pybind/mgr/prometheus/module.py b/src/pybind/mgr/prometheus/module.py index dbdb1e7b1fa..7e334b8d633 100644 --- a/src/pybind/mgr/prometheus/module.py +++ b/src/pybind/mgr/prometheus/module.py @@ -2066,7 +2066,7 @@ class Module(MgrModule, OrchestratorClientMixin): @profile_method(True) def get_hardware_metrics(self) -> None: """Collect hardware metrics from node-proxy KV store""" - NODE_PROXY_CACHE_PREFIX = 'node_proxy' + NODE_PROXY_CACHE_PREFIX = 'mgr/cephadm/node_proxy' try: for key, value in self.get_store_prefix(f'{NODE_PROXY_CACHE_PREFIX}/data').items():