diff --git a/README.md b/README.md index 34e1447..f74c232 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # HMC Insights -**HMCi** is a utility that collects metrics from one or more *IBM Power HMC* systems. The metrics data is processed and saved into an InfluxDB time-series database. Grafana is used to visualize the metrics from InfluxDB. +**HMCi** is a utility that collects metrics from one or more *IBM Power HMC* systems. The metric data is processed and saved into an InfluxDB time-series database. Grafana is used to visualize the metrics from InfluxDB. Metrics includes *Managed Systems* (the physical Power servers) and *Logical Partitions* (the virtualized servers) running AIX, Linux and IBM-i (AS/400). @@ -36,15 +36,26 @@ Install InfluxDB on an *LPAR* or other server, which is network accessible by th - Copy the *doc/hmci.toml* configuration example into */etc/hmci.toml* and edit the configuration to suit your environment. The location of the configuration file can be changed with a flag when running hmci. - Run the *bin/hmci* program in a shell, as a @reboot cron task or setup a proper service :) - When started, *hmci* will try to create the InfluxDB database named hmci, if not found. -- Configure Grafana to communicate with your InfluxDB and import dashboards from the *doc/* folder into Grafana (The dashboards are slightly modified versions of the dashboard provided by the nmon2influxdb tool) +- Configure Grafana to communicate with your InfluxDB and import dashboards from the *doc/* folder into Grafana. +## Grafana Screenshots + +Below are screenshots of the provided Grafana dashboards (found in the **doc/** folder), which can be used as a starting point. + +- [hmci-resources.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-resources.png) +- [hmci-energy.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-energy.png) +- [hmci-vois.png](https://bitbucket.org/mnellemann/hmci/downloads/hmci-vios.png) +- [hmci-lpars](https://bitbucket.org/mnellemann/hmci/downloads/hmci-lpars.png) + ## Notes ### InfluxDB -Examples on how to change the default InfluxDB retention policy for the hmci database: +Per default the *hmci* influx database has no retention policy, so data will be kept forever. It is recommended to set a retention policy, which is shown below. + +Examples for changing the default InfluxDB retention policy for the hmci database: ALTER RETENTION POLICY "autogen" ON "hmci" DURATION 156w ALTER RETENTION POLICY "autogen" ON "hmci" DURATION 90d diff --git a/build.gradle b/build.gradle index 4e2b20e..950ef08 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ dependencies { implementation 'com.squareup.moshi:moshi:1.11.0' implementation 'com.serjltt.moshi:moshi-lazy-adapters:2.2' implementation 'org.tomlj:tomlj:1.0.0' - implementation 'org.influxdb:influxdb-java:2.20' + implementation 'org.influxdb:influxdb-java:2.21' implementation 'org.slf4j:slf4j-api:1.7.+' runtimeOnly 'ch.qos.logback:logback-classic:1.+' @@ -35,7 +35,7 @@ dependencies { } application { - mainClassName = 'biz.nellemann.hmci.Main' + mainClassName = 'biz.nellemann.hmci.Application' } test { diff --git a/doc/IBM Power - HMC Managed Systems - Energy-1607681496790.json b/doc/IBM Power - HMC Managed Systems - Energy-1607681496790.json new file mode 100644 index 0000000..2591acf --- /dev/null +++ b/doc/IBM Power - HMC Managed Systems - Energy-1607681496790.json @@ -0,0 +1,657 @@ +{ + "__inputs": [ + { + "name": "DS_HMCI", + "label": "HMCi", + "description": "", + "type": "datasource", + "pluginId": "influxdb", + "pluginName": "InfluxDB" + } + ], + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.3.1" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "influxdb", + "name": "InfluxDB", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "https://bitbucket.org/mnellemann/hmci/", + "editable": true, + "gnetId": null, + "graphTooltip": 0, + "id": null, + "iteration": 1607681490214, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_system", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "system" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "SystemEnergyPower", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Power Usage", + "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 + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": "${DS_HMCI}", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 1000 + } + ] + }, + "unit": "watth" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 7, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "pluginVersion": "7.3.1", + "targets": [ + { + "alias": "$tag_system", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "system" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "SystemEnergyPower", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + } + ] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "Power Usage", + "type": "stat" + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 12, + "x": 0, + "y": 9 + }, + "hiddenSeries": false, + "id": 4, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_system - $tag_name", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "system" + ], + "type": "tag" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "SystemEnergyThermal", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "name", + "operator": "=~", + "value": "/cpuTemperature_\\d+/" + }, + { + "condition": "AND", + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "CPU Temperatures", + "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 + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 13, + "w": 12, + "x": 12, + "y": 9 + }, + "hiddenSeries": false, + "id": 5, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ + { + "alias": "$tag_system - $tag_name", + "groupBy": [ + { + "params": [ + "$__interval" + ], + "type": "time" + }, + { + "params": [ + "system" + ], + "type": "tag" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "linear" + ], + "type": "fill" + } + ], + "measurement": "SystemEnergyThermal", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "name", + "operator": "=", + "value": "inletTemperature_1" + }, + { + "condition": "AND", + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Inlet Temperatures", + "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 + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], + "refresh": "30s", + "schemaVersion": 26, + "style": "dark", + "tags": [ + "POWER" + ], + "templating": { + "list": [ + { + "allValue": null, + "current": {}, + "datasource": "${DS_HMCI}", + "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\"", + "error": null, + "hide": 0, + "includeAll": false, + "label": null, + "multi": true, + "name": "ManagedSystem", + "options": [], + "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\"", + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": "", + "tags": [], + "tagsQuery": "", + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ] + }, + "timezone": "", + "title": "IBM Power - HMC Managed Systems - Energy", + "uid": "oHcrgD1Mk", + "version": 2 +} \ No newline at end of file diff --git a/doc/IBM Power - HMC Managed Systems - Logical Partitions-1607681527581.json b/doc/IBM Power - HMC Managed Systems - Logical Partitions-1607681527581.json new file mode 100644 index 0000000..0fb5600 --- /dev/null +++ b/doc/IBM Power - HMC Managed Systems - Logical Partitions-1607681527581.json @@ -0,0 +1,805 @@ +{ + "__inputs": [ + { + "name": "DS_HMCI", + "label": "HMCi", + "description": "", + "type": "datasource", + "pluginId": "influxdb", + "pluginName": "InfluxDB" + } + ], + "__requires": [ + { + "type": "panel", + "id": "gauge", + "name": "Gauge", + "version": "" + }, + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "7.3.1" + }, + { + "type": "panel", + "id": "graph", + "name": "Graph", + "version": "" + }, + { + "type": "datasource", + "id": "influxdb", + "name": "InfluxDB", + "version": "1.0.0" + } + ], + "annotations": { + "enable": false, + "list": [ + { + "builtIn": 1, + "datasource": "-- Grafana --", + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "description": "https://bitbucket.org/mnellemann/hmci/", + "editable": true, + "gnetId": 1510, + "graphTooltip": 0, + "id": null, + "iteration": 1607681518752, + "links": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "content": "", + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 11, + "w": 24, + "x": 0, + "y": 0 + }, + "hiddenSeries": false, + "id": 2, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": false, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_partition $tag_name", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "partition" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "PartitionProcessor", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "name", + "operator": "=", + "value": "utilizedProcUnits" + }, + { + "condition": "AND", + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + }, + { + "condition": "AND", + "key": "partition", + "operator": "=~", + "value": "/^$Partition$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Processor Units - Utilization", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:4943", + "format": "short", + "label": "cores", + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:4944", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "content": "", + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 0, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 11, + "w": 12, + "x": 0, + "y": 11 + }, + "hiddenSeries": false, + "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_partition - VLAN $tag_vlanId: $tag_name", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "vlanId" + ], + "type": "tag" + }, + { + "params": [ + "partition" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "PartitionVirtualEthernetAdapters", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "partition", + "operator": "=~", + "value": "/^$Partition$/" + }, + { + "condition": "AND", + "key": "name", + "operator": "!~", + "value": "/Physical/" + }, + { + "condition": "AND", + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Virtual Network Adapters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "cumulative" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:10101", + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:10102", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "content": "", + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 11, + "w": 12, + "x": 12, + "y": 11 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_partition $tag_wwpn : $tag_name", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "wwpn" + ], + "type": "tag" + }, + { + "params": [ + "partition" + ], + "type": "tag" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "PartitionVirtualFiberChannelAdapters", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"value\") FROM \"PartitionVirtualFiberChannelAdapters\" WHERE (\"system\" =~ /^$ManagedSystem$/ AND \"name\" != 'transmittedBytes' AND \"partition\" =~ /^$Partition$/) AND $timeFilter GROUP BY time($interval), \"wwpn\", \"partition\", \"name\" fill(null)", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + }, + { + "condition": "AND", + "key": "name", + "operator": "!=", + "value": "transmittedBytes" + }, + { + "condition": "AND", + "key": "partition", + "operator": "=~", + "value": "/^$Partition$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Virtual Fiber Channel Adapters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:3776", + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:3777", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "datasource": "${DS_HMCI}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": null + }, + { + "color": "yellow", + "value": 70 + }, + { + "color": "green", + "value": 100 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 9, + "options": { + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true + }, + "pluginVersion": "7.3.1", + "targets": [ + { + "alias": "$tag_partition: AffinityScore", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "partition" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "PartitionAffinityScore", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + }, + { + "condition": "AND", + "key": "partition", + "operator": "=~", + "value": "/^$Partition$/" + }, + { + "condition": "AND", + "key": "name", + "operator": "=", + "value": "affinityScore" + } + ] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "NUMA Affinity Score", + "type": "gauge" + } + ], + "refresh": "30s", + "schemaVersion": 26, + "style": "dark", + "tags": [ + "Power" + ], + "templating": { + "list": [ + { + "allFormat": "regex values", + "allValue": null, + "current": {}, + "datasource": "${DS_HMCI}", + "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "error": null, + "hide": 0, + "includeAll": true, + "label": "System", + "multi": true, + "multiFormat": "regex values", + "name": "ManagedSystem", + "options": [], + "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "refresh": 1, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": null, + "tags": [], + "tagsQuery": null, + "type": "query", + "useTags": false + }, + { + "allFormat": "regex values", + "allValue": null, + "current": {}, + "datasource": "${DS_HMCI}", + "definition": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", + "error": null, + "hide": 0, + "includeAll": true, + "label": "Logical Partition", + "multi": true, + "multiFormat": "regex values", + "name": "Partition", + "options": [], + "query": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", + "refresh": 1, + "refresh_on_load": false, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "tagValuesQuery": null, + "tags": [], + "tagsQuery": null, + "type": "query", + "useTags": false + } + ] + }, + "time": { + "from": "now-3h", + "now": false, + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "browser", + "title": "IBM Power - HMC Managed Systems - Logical Partitions", + "uid": "Xl7oHESGz", + "version": 2 +} \ No newline at end of file diff --git a/doc/Power Systems - HMC Managed Systems-1599142541940.json b/doc/IBM Power - HMC Managed Systems - Resources-1607681476879.json similarity index 74% rename from doc/Power Systems - HMC Managed Systems-1599142541940.json rename to doc/IBM Power - HMC Managed Systems - Resources-1607681476879.json index bd51652..ee7fc19 100644 --- a/doc/Power Systems - HMC Managed Systems-1599142541940.json +++ b/doc/IBM Power - HMC Managed Systems - Resources-1607681476879.json @@ -10,11 +10,17 @@ } ], "__requires": [ + { + "type": "panel", + "id": "bargauge", + "name": "Bar gauge", + "version": "" + }, { "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "7.0.6" + "version": "7.3.1" }, { "type": "panel", @@ -22,6 +28,12 @@ "name": "Graph", "version": "" }, + { + "type": "panel", + "id": "heatmap", + "name": "Heatmap", + "version": "" + }, { "type": "datasource", "id": "influxdb", @@ -43,12 +55,12 @@ } ] }, - "description": "HMC metrics from HMCi", + "description": "https://bitbucket.org/mnellemann/hmci/", "editable": true, "gnetId": 1465, "graphTooltip": 0, "id": null, - "iteration": 1599142530735, + "iteration": 1607681436743, "links": [], "panels": [ { @@ -63,7 +75,7 @@ "id": 20, "panels": [], "repeat": "ManagedSystem", - "title": "$ManagedSystem Processors", + "title": "$ManagedSystem Overview", "type": "row" }, { @@ -78,7 +90,8 @@ "error": false, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -109,10 +122,10 @@ "mode": "", "nullPointMode": "connected", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.1.3", + "pluginVersion": "7.3.1", "pointradius": 5, "points": false, "renderer": "flot", @@ -240,7 +253,24 @@ "error": false, "fieldConfig": { "defaults": { - "custom": {} + "custom": { + "align": null + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } }, "overrides": [] }, @@ -271,10 +301,10 @@ "mode": "", "nullPointMode": "connected", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.1.3", + "pluginVersion": "7.3.1", "pointradius": 5, "points": false, "renderer": "flot", @@ -347,7 +377,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem Processors", + "title": "$ManagedSystem Processor Units", "tooltip": { "msResolution": false, "shared": true, @@ -364,199 +394,16 @@ }, "yaxes": [ { + "$$hashKey": "object:915", "format": "short", - "label": "cores", + "label": "Processor Units", "logBase": 1, "max": null, "min": null, "show": true }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": "${DS_HMCI}", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 21, - "panels": [], - "repeat": "ManagedSystem", - "title": "Dashboard Row", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 2, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 9 - }, - "hiddenSeries": false, - "id": 12, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionProcessor", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "name", - "operator": "=", - "value": "utilizedProcUnits" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "$ManagedSystem Processor Usage by Partition", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "cores", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { + "$$hashKey": "object:916", "format": "short", "label": null, "logBase": 1, @@ -581,7 +428,8 @@ "error": false, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -591,8 +439,8 @@ "gridPos": { "h": 7, "w": 12, - "x": 12, - "y": 9 + "x": 0, + "y": 8 }, "hiddenSeries": false, "id": 3, @@ -612,10 +460,10 @@ "mode": "", "nullPointMode": "connected", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.1.3", + "pluginVersion": "7.3.1", "pointradius": 5, "points": false, "renderer": "flot", @@ -719,6 +567,138 @@ "alignLevel": null } }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateBlues", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "timeseries", + "datasource": "${DS_HMCI}", + "description": "", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 8 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 34, + "legend": { + "show": true + }, + "links": [], + "pluginVersion": "7.1.3", + "reverseYBuckets": false, + "targets": [ + { + "alias": "", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "SystemProcessor", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "name", + "operator": "=", + "value": "utilizedProcUnits" + }, + { + "condition": "AND", + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + } + ] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "$ManagedSystem Processor Utilization", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "short", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, { "collapsed": false, "datasource": "${DS_HMCI}", @@ -726,7 +706,7 @@ "h": 1, "w": 24, "x": 0, - "y": 16 + "y": 30 }, "id": 22, "panels": [], @@ -745,7 +725,8 @@ "error": false, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -756,7 +737,7 @@ "h": 8, "w": 24, "x": 0, - "y": 17 + "y": 31 }, "hiddenSeries": false, "id": 16, @@ -777,10 +758,10 @@ "mode": "", "nullPointMode": "connected", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.1.3", + "pluginVersion": "7.3.1", "pointradius": 5, "points": false, "renderer": "flot", @@ -791,7 +772,7 @@ "style": {}, "targets": [ { - "alias": "$tag_partition dev: $tag_device", + "alias": "$tag_device transmitted", "dsType": "influxdb", "groupBy": [ { @@ -800,24 +781,12 @@ ], "type": "time" }, - { - "params": [ - "partition" - ], - "type": "tag" - }, { "params": [ "device" ], "type": "tag" }, - { - "params": [ - "partition" - ], - "type": "tag" - }, { "params": [ "null" @@ -854,8 +823,8 @@ { "condition": "AND", "key": "name", - "operator": "=~", - "value": "/Bytes/" + "operator": "=", + "value": "transmittedBytes" } ] } @@ -864,7 +833,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem VIOS Physical Fiber Channel Adapters write", + "title": "$ManagedSystem - Physical Fiber Channel Adapters", "tooltip": { "msResolution": false, "shared": true, @@ -881,6 +850,7 @@ }, "yaxes": [ { + "$$hashKey": "object:1448", "format": "Bps", "label": null, "logBase": 1, @@ -889,6 +859,7 @@ "show": true }, { + "$$hashKey": "object:1449", "format": "none", "label": null, "logBase": 1, @@ -909,11 +880,13 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_HMCI}", + "description": "", "editable": true, "error": false, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -924,7 +897,7 @@ "h": 8, "w": 24, "x": 0, - "y": 25 + "y": 39 }, "hiddenSeries": false, "id": 11, @@ -945,10 +918,10 @@ "mode": "", "nullPointMode": "connected", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.1.3", + "pluginVersion": "7.3.1", "pointradius": 5, "points": false, "renderer": "flot", @@ -959,7 +932,7 @@ "style": {}, "targets": [ { - "alias": "$tag_partition $tag_name", + "alias": "$tag_device", "dsType": "influxdb", "groupBy": [ { @@ -974,18 +947,6 @@ ], "type": "tag" }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, { "params": [ "null" @@ -1022,8 +983,8 @@ { "condition": "AND", "key": "name", - "operator": "<>", - "value": "test" + "operator": "=", + "value": "transferredBytes" } ] } @@ -1032,7 +993,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem SEA transfered bytes", + "title": "$ManagedSystem - Shared Adapters", "tooltip": { "msResolution": false, "shared": true, @@ -1049,6 +1010,7 @@ }, "yaxes": [ { + "$$hashKey": "object:1686", "format": "Bps", "label": null, "logBase": 1, @@ -1056,6 +1018,193 @@ "min": null, "show": true }, + { + "$$hashKey": "object:1687", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "collapsed": false, + "datasource": "${DS_HMCI}", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 94 + }, + "id": 21, + "panels": [], + "repeat": "ManagedSystem", + "title": "$ManagedSystem By Partition", + "type": "row" + }, + { + "aliasColors": {}, + "bars": false, + "content": "", + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "decimals": 2, + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 2, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 7, + "w": 12, + "x": 0, + "y": 95 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": true, + "show": true, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_partition Utilized Processor Units", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "partition" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "PartitionProcessor", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "name", + "operator": "=", + "value": "utilizedProcUnits" + }, + { + "condition": "AND", + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + }, + { + "condition": "AND", + "key": "partition", + "operator": "=~", + "value": "/^$Partition$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "$ManagedSystem Processor Utilization", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": "cores", + "logBase": 1, + "max": null, + "min": "0", + "show": true + }, { "format": "short", "label": null, @@ -1069,10 +1218,132 @@ "align": false, "alignLevel": null } + }, + { + "datasource": "${DS_HMCI}", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decmbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 12, + "x": 12, + "y": 95 + }, + "id": 23, + "links": [], + "options": { + "displayMode": "gradient", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "mean" + ], + "fields": "", + "values": false + }, + "showUnfilled": true + }, + "pluginVersion": "7.3.1", + "targets": [ + { + "alias": "$tag_partition Memory", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "partition" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "PartitionMemory", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "name", + "operator": "=", + "value": "logicalMem" + }, + { + "condition": "AND", + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + }, + { + "condition": "AND", + "key": "partition", + "operator": "=~", + "value": "/^$Partition$/" + } + ] + } + ], + "timeFrom": null, + "timeShift": null, + "title": "$ManagedSystem Memory Usage", + "type": "bargauge" } ], "refresh": "30s", - "schemaVersion": 25, + "schemaVersion": 26, "style": "dark", "tags": [ "Power" @@ -1084,15 +1355,16 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "", + "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "error": null, "hide": 0, "includeAll": false, - "label": null, + "label": "System", "multi": true, "multiFormat": "regex values", "name": "ManagedSystem", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\"", + "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -1109,15 +1381,16 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "", + "definition": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", + "error": null, "hide": 0, "includeAll": true, - "label": null, + "label": "Logical Partition", "multi": true, "multiFormat": "regex values", "name": "Partition", "options": [], - "query": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" where system =~ /$ManagedSystem/", + "query": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -1132,7 +1405,7 @@ ] }, "time": { - "from": "now-6h", + "from": "now-3h", "now": false, "to": "now" }, @@ -1161,7 +1434,7 @@ ] }, "timezone": "browser", - "title": "Power Systems - HMC Managed Systems", + "title": "IBM Power - HMC Managed Systems - Resources", "uid": "ClJhHPIGz", - "version": 20 + "version": 4 } \ No newline at end of file diff --git a/doc/Power Systems - HMC Virtual Input Output Servers-1599142519131.json b/doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1607681513373.json similarity index 89% rename from doc/Power Systems - HMC Virtual Input Output Servers-1599142519131.json rename to doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1607681513373.json index 4fa80b5..350c126 100644 --- a/doc/Power Systems - HMC Virtual Input Output Servers-1599142519131.json +++ b/doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1607681513373.json @@ -14,7 +14,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "7.0.6" + "version": "7.3.1" }, { "type": "panel", @@ -43,29 +43,14 @@ } ] }, - "description": "HMC metrics from HMCi", + "description": "https://bitbucket.org/mnellemann/hmci/", "editable": true, "gnetId": 1465, "graphTooltip": 0, "id": null, - "iteration": 1599142406783, + "iteration": 1607681505084, "links": [], "panels": [ - { - "collapsed": false, - "datasource": "${DS_HMCI}", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 22, - "panels": [], - "repeat": "ManagedSystem", - "title": "$ManagedSystem Throughput", - "type": "row" - }, { "aliasColors": {}, "bars": false, @@ -77,7 +62,8 @@ "error": false, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -88,7 +74,7 @@ "h": 8, "w": 24, "x": 0, - "y": 1 + "y": 0 }, "hiddenSeries": false, "id": 16, @@ -109,21 +95,21 @@ "mode": "", "nullPointMode": "connected", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.1.3", + "pluginVersion": "7.3.1", "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, - "stack": false, + "stack": true, "steppedLine": false, "style": {}, "targets": [ { - "alias": "$tag_vios: $tag_id / $tag_device", + "alias": "$tag_vios: $tag_id ($tag_device)", "dsType": "influxdb", "groupBy": [ { @@ -202,7 +188,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem VIOS Physical Fiber Channel Adapters", + "title": "$ManagedSystem - Fiber Channel Adapters", "tooltip": { "msResolution": false, "shared": true, @@ -249,11 +235,13 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_HMCI}", + "description": "", "editable": true, "error": false, "fieldConfig": { "defaults": { - "custom": {} + "custom": {}, + "links": [] }, "overrides": [] }, @@ -264,7 +252,178 @@ "h": 8, "w": 24, "x": 0, - "y": 9 + "y": 8 + }, + "hiddenSeries": false, + "id": 17, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "max": true, + "min": true, + "rightSide": true, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.3.1", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_vios: $tag_name", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "vios" + ], + "type": "tag" + }, + { + "params": [ + "name" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "SystemVirtualEthernetAdapters", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "value" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "system", + "operator": "=~", + "value": "/^$ManagedSystem$/" + }, + { + "condition": "AND", + "key": "vios", + "operator": "=~", + "value": "/^$Vios$/" + }, + { + "condition": "AND", + "key": "name", + "operator": "=~", + "value": "/.*Bytes/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "$ManagedSystem - Virtual Ethernet Adapters", + "tooltip": { + "msResolution": false, + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "$$hashKey": "object:2622", + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:2623", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "content": "", + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 16 }, "hiddenSeries": false, "id": 11, @@ -285,10 +444,10 @@ "mode": "", "nullPointMode": "connected", "options": { - "dataLinks": [] + "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.1.3", + "pluginVersion": "7.3.1", "pointradius": 5, "points": false, "renderer": "flot", @@ -372,7 +531,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem Shared Adapters", + "title": "$ManagedSystem - Shared Adapters", "tooltip": { "msResolution": false, "shared": true, @@ -411,183 +570,15 @@ "align": false, "alignLevel": null } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 2, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 17 - }, - "hiddenSeries": false, - "id": 26, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_vios: $tag_device xmit", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "vios" - ], - "type": "tag" - }, - { - "params": [ - "device" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "SystemGenericPhysicalAdapters", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "vios", - "operator": "=~", - "value": "/^$Vios$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "transmittedBytes" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "$ManagedSystem VIOS Generic Physical Adapters", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:2958", - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:2959", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } } ], "refresh": "30s", - "schemaVersion": 25, + "schemaVersion": 26, "style": "dark", "tags": [ "Power", - "AIX" + "AIX", + "VIOS" ], "templating": { "list": [ @@ -596,15 +587,16 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "", + "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "error": null, "hide": 0, "includeAll": false, - "label": null, + "label": "System", "multi": true, "multiFormat": "regex values", "name": "ManagedSystem", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\"", + "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -621,15 +613,16 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"SystemFiberChannelAdapters\" WITH KEY = \"vios\" where system =~ /$ManagedSystem/", + "definition": "SHOW TAG VALUES FROM \"SystemFiberChannelAdapters\" WITH KEY = \"vios\" WHERE system =~ /$ManagedSystem/", + "error": null, "hide": 0, "includeAll": true, - "label": "VIOS", + "label": "Virtual I/O Server", "multi": true, "multiFormat": "regex values", "name": "Vios", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemFiberChannelAdapters\" WITH KEY = \"vios\" where system =~ /$ManagedSystem/", + "query": "SHOW TAG VALUES FROM \"SystemFiberChannelAdapters\" WITH KEY = \"vios\" WHERE system =~ /$ManagedSystem/", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -673,7 +666,7 @@ ] }, "timezone": "browser", - "title": "Power Systems - HMC Virtual Input Output Servers", + "title": "IBM Power - HMC Managed Systems - Virtual I/O Servers", "uid": "DDNEv5vGz", - "version": 17 + "version": 2 } \ No newline at end of file diff --git a/doc/Power Systems - HMC Logical Partitions-1599142559065.json b/doc/Power Systems - HMC Logical Partitions-1599142559065.json deleted file mode 100644 index e3d54be..0000000 --- a/doc/Power Systems - HMC Logical Partitions-1599142559065.json +++ /dev/null @@ -1,1691 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_HMCI", - "label": "HMCi", - "description": "", - "type": "datasource", - "pluginId": "influxdb", - "pluginName": "InfluxDB" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "7.0.6" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "datasource", - "id": "influxdb", - "name": "InfluxDB", - "version": "1.0.0" - } - ], - "annotations": { - "enable": false, - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "HMC metrics from HMCi", - "editable": true, - "gnetId": 1510, - "graphTooltip": 0, - "id": null, - "iteration": 1599142554293, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 2, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionProcessor", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "name", - "operator": "=", - "value": "utilizedProcUnits" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Processors - Utilized", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:4943", - "format": "short", - "label": "cores", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:4944", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 12, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionProcessor", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "utilizedCappedProcUnits" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Processors - Capped Utilized", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:4142", - "format": "short", - "label": "cores", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:4143", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 13, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionProcessor", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "utilizedUncappedProcUnits" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Processors - Uncapped Utilized", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:4142", - "format": "short", - "label": "cores", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:4143", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 16 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionMemory", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "logicalMem" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory - Logical", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:5771", - "format": "decmbytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "$$hashKey": "object:5772", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 23 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": false, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition viosid: $tag_viosId vlan $tag_vlanId: $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "vlanId" - ], - "type": "tag" - }, - { - "params": [ - "viosId" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionVirtualEthernetAdapters", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=~", - "value": "/PhysicalBytes/" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Virtual Network Adapter: physical throughput", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:3655", - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:3656", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 23 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition vlan $tag_vlanId: $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "vlanId" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionVirtualEthernetAdapters", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "!~", - "value": "/Physical/" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Virtual Network Adapter: virtual throughput", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:10101", - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:10102", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "description": "", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 2, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 30 - }, - "hiddenSeries": false, - "id": 9, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition: AffinityScore", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionAffinityScore", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "affinityScore" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Partition Affinity Score", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:2366", - "format": "percent", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:2367", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 - }, - "hiddenSeries": false, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition $tag_wwpn : $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "wwpn" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionVirtualFiberChannelAdapters", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT mean(\"value\") FROM \"PartitionVirtualFiberChannelAdapters\" WHERE (\"system\" =~ /^$ManagedSystem$/ AND \"name\" != 'transmittedBytes' AND \"partition\" =~ /^$Partition$/) AND $timeFilter GROUP BY time($interval), \"wwpn\", \"partition\", \"name\" fill(null)", - "rawQuery": false, - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "!=", - "value": "transmittedBytes" - }, - { - "condition": "AND", - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Virtual Fiber Channel Adapters", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:3776", - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:3777", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 37 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "mode": "", - "nullPointMode": "connected", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.1.3", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "style": {}, - "targets": [ - { - "alias": "$tag_partition $tag_name", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "PartitionProcessor", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [ - { - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=~", - "value": "/time/" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Processor Time", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:4018", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:4019", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "1m", - "schemaVersion": 25, - "style": "dark", - "tags": [ - "Power" - ], - "templating": { - "list": [ - { - "allFormat": "regex values", - "allValue": null, - "current": {}, - "datasource": "${DS_HMCI}", - "definition": "", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "multiFormat": "regex values", - "name": "ManagedSystem", - "options": [], - "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\"", - "refresh": 1, - "refresh_on_load": false, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": null, - "tags": [], - "tagsQuery": null, - "type": "query", - "useTags": false - }, - { - "allFormat": "regex values", - "allValue": null, - "current": {}, - "datasource": "${DS_HMCI}", - "definition": "", - "hide": 0, - "includeAll": true, - "label": null, - "multi": true, - "multiFormat": "regex values", - "name": "Partition", - "options": [], - "query": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" where system =~ /$ManagedSystem/", - "refresh": 1, - "refresh_on_load": false, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": null, - "tags": [], - "tagsQuery": null, - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-3h", - "now": false, - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "Power Systems - HMC Logical Partitions", - "uid": "Xl7oHESGz", - "version": 19 -} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 862280e..0233858 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ id = hmci group = biz.nellemann.hmci -version = 0.2.4 +version = 0.2.5 diff --git a/src/main/java/biz/nellemann/hmci/Main.java b/src/main/java/biz/nellemann/hmci/Application.java similarity index 89% rename from src/main/java/biz/nellemann/hmci/Main.java rename to src/main/java/biz/nellemann/hmci/Application.java index 9745f08..ad09492 100644 --- a/src/main/java/biz/nellemann/hmci/Main.java +++ b/src/main/java/biz/nellemann/hmci/Application.java @@ -29,15 +29,15 @@ import java.util.concurrent.Callable; mixinStandardHelpOptions = true, description = "HMC Insights.", versionProvider = biz.nellemann.hmci.VersionProvider.class) -public class Main implements Callable { +public class Application implements Callable { - private final static Logger log = LoggerFactory.getLogger(Main.class); + private final static Logger log = LoggerFactory.getLogger(Application.class); @Option(names = { "-c", "--conf" }, description = "Configuration file [default: '/etc/hmci.toml'].", defaultValue = "/etc/hmci.toml", paramLabel = "") private String configurationFile; public static void main(String... args) { - int exitCode = new CommandLine(new Main()).execute(args); + int exitCode = new CommandLine(new Application()).execute(args); System.exit(exitCode); } diff --git a/src/main/java/biz/nellemann/hmci/HmcClient.java b/src/main/java/biz/nellemann/hmci/HmcClient.java index fc14318..f27d241 100644 --- a/src/main/java/biz/nellemann/hmci/HmcClient.java +++ b/src/main/java/biz/nellemann/hmci/HmcClient.java @@ -223,7 +223,6 @@ class HmcClient { } - /** * Parse XML feed to get PCM Data in JSON format * @param system a valid ManagedSystem @@ -300,6 +299,44 @@ class HmcClient { } + /** + * Parse XML feed to get PCM Data in JSON format + * @param systemEnergy a valid SystemEnergy + * @return JSON string with PCM data for this SystemEnergy + */ + String getPcmDataForEnergy(SystemEnergy systemEnergy) throws Exception { + + log.debug("getPcmDataForEnergy() - " + systemEnergy.system.id); + URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/ProcessedMetrics?Type=Energy&NoOfSamples=1", baseUrl, systemEnergy.system.id)); + String responseBody = getResponse(url); + String jsonBody = null; + //log.info(responseBody); + + // Do not try to parse empty response + if(responseBody == null || responseBody.isEmpty() || responseBody.length() <= 1) { + responseErrors++; + log.warn("getPcmDataForEnergy() - empty response"); + return null; + } + + try { + Document doc = Jsoup.parse(responseBody); + Element entry = doc.select("feed > entry").first(); + Element link = entry.select("link[href]").first(); + + if(link.attr("type").equals("application/json")) { + String href = link.attr("href"); + log.debug("getPcmDataForEnergy() - json url: " + href); + jsonBody = getResponse(new URL(href)); + } + + } catch(Exception e) { + log.warn("getPcmDataForEnergy() - xml parse error", e); + } + + return jsonBody; + } + /** * Return a Response from the HMC diff --git a/src/main/java/biz/nellemann/hmci/InfluxClient.java b/src/main/java/biz/nellemann/hmci/InfluxClient.java index 94b9eb6..c97d035 100644 --- a/src/main/java/biz/nellemann/hmci/InfluxClient.java +++ b/src/main/java/biz/nellemann/hmci/InfluxClient.java @@ -121,18 +121,13 @@ class InfluxClient { } getSystemMemory(system, timestamp).forEach( it -> batchPoints.point(it) ); - getSystemProcessor(system, timestamp).forEach( it -> batchPoints.point(it) ); - getSystemSharedProcessorPools(system, timestamp).forEach( it -> batchPoints.point(it) ); - getSystemSharedAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); - getSystemFiberChannelAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); - - getSystemGenericPhysicalAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); - - getSystemGenericVirtualAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); + //getSystemGenericPhysicalAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); + //getSystemGenericVirtualAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); + getSystemVirtualEthernetAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); } @@ -162,6 +157,7 @@ class InfluxClient { return processMeasurementMap(metrics, timestamp, "SystemFiberChannelAdapters"); } +/* private static List getSystemGenericPhysicalAdapters(ManagedSystem system, Instant timestamp) { List metrics = system.getSystemGenericPhysicalAdapters(); return processMeasurementMap(metrics, timestamp, "SystemGenericPhysicalAdapters"); @@ -171,6 +167,12 @@ class InfluxClient { List metrics = system.getSystemGenericVirtualAdapters(); return processMeasurementMap(metrics, timestamp, "SystemGenericVirtualAdapters"); } + */ + + private static List getSystemVirtualEthernetAdapters(ManagedSystem system, Instant timestamp) { + List metrics = system.getSystemVirtualEthernetAdapters(); + return processMeasurementMap(metrics, timestamp, "SystemVirtualEthernetAdapters"); + } /* @@ -191,17 +193,13 @@ class InfluxClient { } getPartitionAffinityScore(partition, timestamp).forEach( it -> batchPoints.point(it)); - getPartitionMemory(partition, timestamp).forEach( it -> batchPoints.point(it)); - getPartitionProcessor(partition, timestamp).forEach( it -> batchPoints.point(it)); - getPartitionVirtualEthernetAdapter(partition, timestamp).forEach( it -> batchPoints.point(it)); - getPartitionVirtualFiberChannelAdapter(partition, timestamp).forEach( it -> batchPoints.point(it)); } - + private static List getPartitionAffinityScore(LogicalPartition partition, Instant timestamp) { List metrics = partition.getAffinityScore(); return processMeasurementMap(metrics, timestamp, "PartitionAffinityScore"); @@ -229,6 +227,39 @@ class InfluxClient { + /* + System Energy + */ + + + void writeSystemEnergy(SystemEnergy system) { + + if(system.metrics == null) { + log.warn("writeSystemEnergy() - null metrics, skipping"); + return; + } + + Instant timestamp = system.getTimestamp(); + if(timestamp == null) { + log.warn("writeSystemEnergy() - no timestamp, skipping"); + return; + } + + getSystemEnergyPower(system, timestamp).forEach(it -> batchPoints.point(it) ); + getSystemEnergyTemperature(system, timestamp).forEach(it -> batchPoints.point(it) ); + } + + private static List getSystemEnergyPower(SystemEnergy system, Instant timestamp) { + List metrics = system.getPowerMetrics(); + return processMeasurementMap(metrics, timestamp, "SystemEnergyPower"); + } + + private static List getSystemEnergyTemperature(SystemEnergy system, Instant timestamp) { + List metrics = system.getThermalMetrics(); + return processMeasurementMap(metrics, timestamp, "SystemEnergyThermal"); + } + + /* Shared */ @@ -239,7 +270,6 @@ class InfluxClient { measurements.forEach( m -> { // Iterate fields - //Map fieldsMap = m.get("fields"); m.fields.forEach((fieldName, fieldValue) -> { log.debug("processMeasurementMap() " + measurement + " - fieldName: " + fieldName + ", fieldValue: " + fieldValue); @@ -249,7 +279,6 @@ class InfluxClient { .addField("value", fieldValue); // For each field, we add all tags - //Map tagsMap = m.get("tags"); m.tags.forEach((tagName, tagValue) -> { builder.tag(tagName, tagValue); log.debug("processMeasurementMap() " + measurement + " - tagName: " + tagName + ", tagValue: " + tagValue); diff --git a/src/main/java/biz/nellemann/hmci/Insights.java b/src/main/java/biz/nellemann/hmci/Insights.java index bc472ac..46c54e5 100644 --- a/src/main/java/biz/nellemann/hmci/Insights.java +++ b/src/main/java/biz/nellemann/hmci/Insights.java @@ -151,6 +151,29 @@ class Insights { } + void getMetricsForEnergy() { + + systems.forEach((systemId, system) -> { + + HmcClient hmcClient = hmcClients.get(system.hmcId); + + // Get and process metrics for this system + String tmpJsonString = null; + try { + tmpJsonString = hmcClient.getPcmDataForEnergy(system.energy); + } catch (Exception e) { + log.error("getMetricsForEnergy()", e); + } + + if(tmpJsonString != null && !tmpJsonString.isEmpty()) { + system.energy.processMetrics(tmpJsonString); + } + + }); + + } + + void writeMetricsForManagedSystems() { try { systems.forEach((systemId, system) -> influxClient.writeManagedSystem(system)); @@ -169,6 +192,15 @@ class Insights { } + void writeMetricsForSystemEnergy() { + try { + systems.forEach((systemId, system) -> influxClient.writeSystemEnergy(system.energy)); + } catch (NullPointerException npe) { + log.warn("writeMetricsForSystemEnergy() - NPE: " + npe.toString()); + } + } + + void run() throws InterruptedException { log.debug("run()"); @@ -185,9 +217,11 @@ class Insights { try { getMetricsForSystems(); getMetricsForPartitions(); + getMetricsForEnergy(); writeMetricsForManagedSystems(); writeMetricsForLogicalPartitions(); + writeMetricsForSystemEnergy(); influxClient.writeBatchPoints(); // Refresh HMC's diff --git a/src/main/java/biz/nellemann/hmci/LogicalPartition.java b/src/main/java/biz/nellemann/hmci/LogicalPartition.java index 87963a7..9710bf2 100644 --- a/src/main/java/biz/nellemann/hmci/LogicalPartition.java +++ b/src/main/java/biz/nellemann/hmci/LogicalPartition.java @@ -59,8 +59,7 @@ class LogicalPartition extends MetaSystem { fieldsMap.put("affinityScore", metrics.systemUtil.sample.lparsUtil.affinityScore); log.debug("getAffinityScore() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); return list; } @@ -79,13 +78,11 @@ class LogicalPartition extends MetaSystem { fieldsMap.put("backedPhysicalMem", metrics.systemUtil.sample.lparsUtil.memory.backedPhysicalMem); log.debug("getMemoryMetrics() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); - + list.add(new Measurement(tagsMap, fieldsMap)); return list; } - //@CompileDynamic + List getProcessorMetrics() { List list = new ArrayList<>(); @@ -109,13 +106,11 @@ class LogicalPartition extends MetaSystem { fieldsMap.put("timeSpentWaitingForDispatch", metrics.systemUtil.sample.lparsUtil.processor.timePerInstructionExecution); log.debug("getProcessorMetrics() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); - + list.add(new Measurement(tagsMap, fieldsMap)); return list; } - //@CompileDynamic + List getVirtualEthernetAdapterMetrics() { List list = new ArrayList<>(); @@ -137,16 +132,13 @@ class LogicalPartition extends MetaSystem { fieldsMap.put("sentBytes", adapter.sentBytes); log.debug("getVirtualEthernetAdapterMetrics() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); }); return list; } - //PartitionVirtualFiberChannelAdapters - //@CompileDynamic List getVirtualFiberChannelAdaptersMetrics() { List list = new ArrayList<>(); @@ -165,8 +157,7 @@ class LogicalPartition extends MetaSystem { fieldsMap.put("readBytes", adapter.readBytes.get(0)); log.debug("getVirtualFiberChannelAdaptersMetrics() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); }); return list; diff --git a/src/main/java/biz/nellemann/hmci/ManagedSystem.java b/src/main/java/biz/nellemann/hmci/ManagedSystem.java index c211645..13dbe2d 100644 --- a/src/main/java/biz/nellemann/hmci/ManagedSystem.java +++ b/src/main/java/biz/nellemann/hmci/ManagedSystem.java @@ -34,6 +34,8 @@ class ManagedSystem extends MetaSystem { public final String model; public final String serialNumber; + public final SystemEnergy energy; + ManagedSystem(String hmcId, String id, String name, String type, String model, String serialNumber) { this.hmcId = hmcId; @@ -42,6 +44,7 @@ class ManagedSystem extends MetaSystem { this.type = type; this.model = model; this.serialNumber = serialNumber; + this.energy = new SystemEnergy(this); } public String toString() { @@ -52,12 +55,9 @@ class ManagedSystem extends MetaSystem { List getMemoryMetrics() { List list = new ArrayList<>(); - //Map map = new HashMap() HashMap tagsMap = new HashMap(); tagsMap.put("system", name); - - //map.put("tags", tagsMap) log.debug("getMemoryMetrics() - tags: " + tagsMap.toString()); Map fieldsMap = new HashMap(); @@ -65,12 +65,9 @@ class ManagedSystem extends MetaSystem { fieldsMap.put("availableMem", metrics.systemUtil.sample.serverUtil.memory.availableMem); fieldsMap.put("configurableMem", metrics.systemUtil.sample.serverUtil.memory.configurableMem); fieldsMap.put("assignedMemToLpars", metrics.systemUtil.sample.serverUtil.memory.assignedMemToLpars); - - //map.put("fields", fieldsMap) log.debug("getMemoryMetrics() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); return list; } @@ -79,13 +76,9 @@ class ManagedSystem extends MetaSystem { List getProcessorMetrics() { List list = new ArrayList<>(); - //Map map = new HashMap<>() HashMap tagsMap = new HashMap(); tagsMap.put("system", name); - - //map.put("tags", tagsMap) - //measurement.tags = tagsMap; log.debug("getProcessorMetrics() - tags: " + tagsMap.toString()); HashMap fieldsMap = new HashMap(); @@ -93,14 +86,9 @@ class ManagedSystem extends MetaSystem { fieldsMap.put("utilizedProcUnits", metrics.systemUtil.sample.serverUtil.processor.utilizedProcUnits); fieldsMap.put("availableProcUnits", metrics.systemUtil.sample.serverUtil.processor.availableProcUnits); fieldsMap.put("configurableProcUnits", metrics.systemUtil.sample.serverUtil.processor.configurableProcUnits); - - //map.put("fields", fieldsMap) - //measurement.fields = fieldsMap; log.debug("getProcessorMetrics() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); - + list.add(new Measurement(tagsMap, fieldsMap)); return list; } @@ -109,58 +97,45 @@ class ManagedSystem extends MetaSystem { List list = new ArrayList<>(); metrics.systemUtil.sample.serverUtil.sharedProcessorPool.forEach(adapter -> { - //Map map = new HashMap() HashMap tagsMap = new HashMap(); tagsMap.put("system", name); tagsMap.put("pool", adapter.name); - - //map.put("tags", tagsMap) log.debug("getSharedProcessorPools() - tags: " + tagsMap.toString()); HashMap fieldsMap = new HashMap(); fieldsMap.put("assignedProcUnits", adapter.assignedProcUnits); fieldsMap.put("availableProcUnits", adapter.availableProcUnits); - - //map.put("fields", fieldsMap) log.debug("getSharedProcessorPools() - fields: " + fieldsMap.toString()); - Measurement measurement = new Measurement(tagsMap, fieldsMap); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); }); return list; } - + // VIOs List getSystemSharedAdapters() { List list = new ArrayList<>(); metrics.systemUtil.sample.viosUtil.forEach(vios -> { vios.network.sharedAdapters.forEach(adapter -> { - //Map map = new HashMap() - Measurement measurement = new Measurement(); HashMap tagsMap = new HashMap(); tagsMap.put("system", name); tagsMap.put("type", adapter.type); tagsMap.put("vios", vios.name); - - //map.put("tags", tagsMap) - measurement.tags = tagsMap; + tagsMap.put("device", adapter.physicalLocation); log.debug("getSystemSharedAdapters() - tags: " + tagsMap.toString()); HashMap fieldsMap = new HashMap(); fieldsMap.put("sentBytes", adapter.sentBytes); fieldsMap.put("receivedBytes", adapter.receivedBytes); fieldsMap.put("transferredBytes", adapter.transferredBytes); - - //map.put("fields", fieldsMap) - measurement.fields = fieldsMap; log.debug("getSystemSharedAdapters() - fields: " + fieldsMap.toString()); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); }); }); @@ -168,7 +143,7 @@ class ManagedSystem extends MetaSystem { return list; } - + // VIOs List getSystemFiberChannelAdapters() { List list = new ArrayList<>(); @@ -176,8 +151,6 @@ class ManagedSystem extends MetaSystem { log.debug("getSystemFiberChannelAdapters() - VIOS: " + vios.name); vios.storage.fiberChannelAdapters.forEach( adapter -> { - //HashMap map = new HashMap<>() - Measurement measurement = new Measurement(); HashMap tagsMap = new HashMap(); tagsMap.put("id", adapter.id); @@ -185,21 +158,15 @@ class ManagedSystem extends MetaSystem { tagsMap.put("wwpn", adapter.wwpn); tagsMap.put("vios", vios.name); tagsMap.put("device", adapter.physicalLocation); - - //map.put("tags", tagsMap) - measurement.tags = tagsMap; log.debug("getSystemFiberChannelAdapters() - tags: " + tagsMap.toString()); HashMap fieldsMap = new HashMap(); fieldsMap.put("writeBytes", adapter.writeBytes); fieldsMap.put("readBytes", adapter.readBytes); fieldsMap.put("transmittedBytes", adapter.transmittedBytes); - - //map.put("fields", fieldsMap) - measurement.fields = fieldsMap; log.debug("getSystemFiberChannelAdapters() - fields: " + fieldsMap.toString()); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); }); }); @@ -208,6 +175,8 @@ class ManagedSystem extends MetaSystem { } + // VIOs + /* List getSystemGenericPhysicalAdapters() { List list = new ArrayList<>(); @@ -216,34 +185,31 @@ class ManagedSystem extends MetaSystem { vios.storage.genericPhysicalAdapters.forEach( adapter -> { - Measurement measurement = new Measurement(); - HashMap tagsMap = new HashMap(); tagsMap.put("id", adapter.id); tagsMap.put("system", name); tagsMap.put("vios", vios.name); tagsMap.put("device", adapter.physicalLocation); - - measurement.tags = tagsMap; log.debug("getSystemGenericPhysicalAdapters() - tags: " + tagsMap.toString()); HashMap fieldsMap = new HashMap(); fieldsMap.put("writeBytes", adapter.writeBytes); fieldsMap.put("readBytes", adapter.readBytes); fieldsMap.put("transmittedBytes", adapter.transmittedBytes); - - measurement.fields = fieldsMap; log.debug("getSystemGenericPhysicalAdapters() - fields: " + fieldsMap.toString()); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); }); }); return list; } + */ + // VIOs + /* List getSystemGenericVirtualAdapters() { List list = new ArrayList<>(); @@ -252,26 +218,49 @@ class ManagedSystem extends MetaSystem { vios.storage.genericVirtualAdapters.forEach( adapter -> { - Measurement measurement = new Measurement(); - HashMap tagsMap = new HashMap(); tagsMap.put("id", adapter.id); tagsMap.put("system", name); tagsMap.put("vios", vios.name); tagsMap.put("device", adapter.physicalLocation); - - measurement.tags = tagsMap; log.debug("getSystemGenericVirtualAdapters() - tags: " + tagsMap.toString()); HashMap fieldsMap = new HashMap(); fieldsMap.put("writeBytes", adapter.writeBytes); fieldsMap.put("readBytes", adapter.readBytes); fieldsMap.put("transmittedBytes", adapter.transmittedBytes); - - measurement.fields = fieldsMap; log.debug("getSystemGenericVirtualAdapters() - fields: " + fieldsMap.toString()); - list.add(measurement); + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + }); + + return list; + } + */ + + // VIOs + List getSystemVirtualEthernetAdapters() { + + List list = new ArrayList<>(); + + metrics.systemUtil.sample.viosUtil.forEach( vios -> { + + vios.network.virtualEthernetAdapters.forEach( adapter -> { + + HashMap tagsMap = new HashMap(); + tagsMap.put("system", name); + tagsMap.put("vios", vios.name); + tagsMap.put("device", adapter.physicalLocation); + log.debug("getSystemGenericVirtualAdapters() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap(); + fieldsMap.put("sentBytes", adapter.sentBytes); + fieldsMap.put("receivedBytes", adapter.receivedBytes); + log.debug("getSystemGenericVirtualAdapters() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); }); }); diff --git a/src/main/java/biz/nellemann/hmci/Measurement.java b/src/main/java/biz/nellemann/hmci/Measurement.java index ad1bff9..2c63673 100644 --- a/src/main/java/biz/nellemann/hmci/Measurement.java +++ b/src/main/java/biz/nellemann/hmci/Measurement.java @@ -4,14 +4,12 @@ import java.util.Map; public class Measurement { - Map tags; - Map fields; - - Measurement() { - } + final Map tags; + final Map fields; Measurement(Map tags, Map fields) { this.tags = tags; this.fields = fields; } + } diff --git a/src/main/java/biz/nellemann/hmci/MetaSystem.java b/src/main/java/biz/nellemann/hmci/MetaSystem.java index 7f47185..2e66d30 100644 --- a/src/main/java/biz/nellemann/hmci/MetaSystem.java +++ b/src/main/java/biz/nellemann/hmci/MetaSystem.java @@ -47,20 +47,19 @@ abstract class MetaSystem { } } - //@CompileDynamic + void processMetrics(String json) { try { - metrics = jsonAdapter.fromJson(json); + metrics = jsonAdapter.nullSafe().fromJson(json); } catch(Exception e) { log.warn("processMetrics() error", e); } + //System.out.println(jsonAdapter.toJson(metrics)); - //Map pcmMap = new JsonSlurper().parseText(json) as Map - //metrics = new PcmData(pcmMap) } - //@CompileDynamic + Instant getTimestamp() { String timestamp = metrics.systemUtil.sample.sampleInfo.timeStamp; @@ -91,6 +90,7 @@ abstract class MetaSystem { } } + static class NumberAdapter { @FromJson diff --git a/src/main/java/biz/nellemann/hmci/SystemEnergy.java b/src/main/java/biz/nellemann/hmci/SystemEnergy.java new file mode 100644 index 0000000..5e72c59 --- /dev/null +++ b/src/main/java/biz/nellemann/hmci/SystemEnergy.java @@ -0,0 +1,88 @@ +/* + * Copyright 2020 Mark Nellemann + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package biz.nellemann.hmci; + +import biz.nellemann.hmci.pcm.Temperature; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +class SystemEnergy extends MetaSystem { + + private final static Logger log = LoggerFactory.getLogger(SystemEnergy.class); + + public final ManagedSystem system; + + + SystemEnergy(ManagedSystem system) { + this.system = system; + } + + + public String toString() { + return system.name; + } + + + List getPowerMetrics() { + + List list = new ArrayList<>(); + + HashMap tagsMap = new HashMap(); + tagsMap.put("system", system.name); + log.debug("getPowerMetrics() - tags: " + tagsMap.toString()); + + Map fieldsMap = new HashMap(); + fieldsMap.put("powerReading", metrics.systemUtil.sample.energyUtil.powerUtil.powerReading); + log.debug("getPowerMetrics() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + return list; + } + + + List getThermalMetrics() { + + List list = new ArrayList<>(); + + HashMap tagsMap = new HashMap(); + tagsMap.put("system", system.name); + log.debug("getThermalMetrics() - tags: " + tagsMap.toString()); + + Map fieldsMap = new HashMap(); + + for(Temperature t : metrics.systemUtil.sample.energyUtil.thermalUtil.cpuTemperatures) { + fieldsMap.put("cpuTemperature_" + t.entityInstance, t.temperatureReading); + } + + for(Temperature t : metrics.systemUtil.sample.energyUtil.thermalUtil.inletTemperatures) { + fieldsMap.put("inletTemperature_" + t.entityInstance, t.temperatureReading); + } + + /* Disabled, not sure if useful + for(Temperature t : metrics.systemUtil.sample.energyUtil.thermalUtil.baseboardTemperatures) { + fieldsMap.put("baseboardTemperature_" + t.entityInstance, t.temperatureReading); + }*/ + + log.debug("getThermalMetrics() - fields: " + fieldsMap.toString()); + list.add(new Measurement(tagsMap, fieldsMap)); + return list; + } +} diff --git a/src/main/java/biz/nellemann/hmci/pcm/EnergyUtil.java b/src/main/java/biz/nellemann/hmci/pcm/EnergyUtil.java new file mode 100644 index 0000000..3834a1d --- /dev/null +++ b/src/main/java/biz/nellemann/hmci/pcm/EnergyUtil.java @@ -0,0 +1,6 @@ +package biz.nellemann.hmci.pcm; + +public class EnergyUtil { + public PowerUtil powerUtil = new PowerUtil(); + public ThermalUtil thermalUtil = new ThermalUtil(); +} diff --git a/src/main/java/biz/nellemann/hmci/pcm/PowerUtil.java b/src/main/java/biz/nellemann/hmci/pcm/PowerUtil.java new file mode 100644 index 0000000..47b094f --- /dev/null +++ b/src/main/java/biz/nellemann/hmci/pcm/PowerUtil.java @@ -0,0 +1,10 @@ +package biz.nellemann.hmci.pcm; + +import com.serjltt.moshi.adapters.FirstElement; + +public class PowerUtil { + + @FirstElement + public Float powerReading = 0.0f; + +} diff --git a/src/main/java/biz/nellemann/hmci/pcm/Temperature.java b/src/main/java/biz/nellemann/hmci/pcm/Temperature.java new file mode 100644 index 0000000..bc0af45 --- /dev/null +++ b/src/main/java/biz/nellemann/hmci/pcm/Temperature.java @@ -0,0 +1,13 @@ +package biz.nellemann.hmci.pcm; + +import com.serjltt.moshi.adapters.FirstElement; + +public class Temperature { + + public String entityId; + public String entityInstance; + + @FirstElement + public Float temperatureReading; + +} diff --git a/src/main/java/biz/nellemann/hmci/pcm/ThermalUtil.java b/src/main/java/biz/nellemann/hmci/pcm/ThermalUtil.java new file mode 100644 index 0000000..cdf1143 --- /dev/null +++ b/src/main/java/biz/nellemann/hmci/pcm/ThermalUtil.java @@ -0,0 +1,12 @@ +package biz.nellemann.hmci.pcm; + +import java.util.ArrayList; +import java.util.List; + +public class ThermalUtil { + + public List inletTemperatures = new ArrayList<>(); + public List cpuTemperatures = new ArrayList<>(); + public List baseboardTemperatures = new ArrayList<>(); + +} diff --git a/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java b/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java index 5652644..9d454f4 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java +++ b/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java @@ -10,6 +10,7 @@ public class UtilSample { public String sampleType; public SampleInfo sampleInfo; public ServerUtil serverUtil; + public EnergyUtil energyUtil = new EnergyUtil(); public List viosUtil = new ArrayList<>(); @FirstElement diff --git a/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy b/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy index 6643322..5359685 100644 --- a/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy +++ b/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy @@ -2,7 +2,7 @@ package biz.nellemann.hmci import spock.lang.Specification -class ManagedSystemTest extends Specification { +class ManagedSystemTest extends Specification { void "test processPcmJson for ManagedSystem"() { @@ -24,6 +24,7 @@ class ManagedSystemTest extends Specification { } + void "test getMemoryMetrics"() { setup: diff --git a/src/test/groovy/biz/nellemann/hmci/SystemEnergyTest.groovy b/src/test/groovy/biz/nellemann/hmci/SystemEnergyTest.groovy new file mode 100644 index 0000000..42edb26 --- /dev/null +++ b/src/test/groovy/biz/nellemann/hmci/SystemEnergyTest.groovy @@ -0,0 +1,26 @@ +package biz.nellemann.hmci + +import spock.lang.Specification + +class SystemEnergyTest extends Specification { + + void "test processPcmJson for ManagedSystem Energy"() { + + setup: + def testFile = new File(getClass().getResource('/pcm-data-energy.json').toURI()) + def testJson = testFile.getText('UTF-8') + + when: + ManagedSystem system = new ManagedSystem("site1", "e09834d1-c930-3883-bdad-405d8e26e166", "Test Name","Test Type", "Test Model", "Test S/N") + system.energy.processMetrics(testJson) + + then: + system.energy.metrics.systemUtil.sample.energyUtil.powerUtil.powerReading == 542.0 + system.energy.metrics.systemUtil.sample.energyUtil.thermalUtil.cpuTemperatures.first().entityId == "CPU temperature sensors(41h)" + system.energy.metrics.systemUtil.sample.energyUtil.thermalUtil.cpuTemperatures.first().temperatureReading == 54.0 + system.energy.metrics.systemUtil.sample.energyUtil.thermalUtil.inletTemperatures.first().temperatureReading == 26.0 + system.energy.metrics.systemUtil.sample.energyUtil.thermalUtil.baseboardTemperatures.first().entityId == "Baseboard temperature sensors(42h)" + system.energy.metrics.systemUtil.sample.energyUtil.thermalUtil.baseboardTemperatures.first().temperatureReading == 45.0 + } + +} diff --git a/src/test/resources/energy.xml b/src/test/resources/energy.xml new file mode 100644 index 0000000..1f72dc4 --- /dev/null +++ b/src/test/resources/energy.xml @@ -0,0 +1,19 @@ + + b597e4da-2aab-3f52-8616-341d62153559 + 2020-12-09T12:30:00.000+01:00 + ProcessedMetrics + ManagedSystem b597e4da-2aab-3f52-8616-341d62153559 + + + + 72849beb-ba68-414d-9e36-85d615bcc7f4 + 2020-12-09T12:30:00.000+01:00 + EnergyMetrics_ManagedSystem_b597e4da-2aab-3f52-8616-341d62153559_20201209T123000+0100_20201209T123000+0100_30.json + 2020-12-09T12:30:00.000+01:00 + + + IBM Power Systems Management Console + + + + diff --git a/src/test/resources/managed-system-pcm.xml b/src/test/resources/managed-system-pcm.xml deleted file mode 100644 index 967edbd..0000000 --- a/src/test/resources/managed-system-pcm.xml +++ /dev/null @@ -1,151 +0,0 @@ - - b597e4da-2aab-3f52-8616-341d62153559 - 2020-08-06T18:40:00.000+02:00 - ProcessedMetrics - ManagedSystem b597e4da-2aab-3f52-8616-341d62153559 - - - - 9b10b25b-2242-48f7-b46a-e25c300ae3f8 - 2020-08-06T18:40:00.000+02:00 - ManagedSystem_b597e4da-2aab-3f52-8616-341d62153559_20200806T183800+0200_20200806T184000+0200_30.json - 2020-08-06T18:38:00.000+02:00 - - - IBM Power Systems Management Console - - - - - 7c2828f5-d643-4274-b60e-d6b6ba8269da - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_44A89632-E9E6-4E12-91AF-1A33DEE060CF - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 595fba0e-d15d-47f3-8403-302197a555ff - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_6B7D14D3-BBD2-475B-8284-70FADBFC37FB - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 64affb83-513d-4bbe-bc4d-fc82a2c4a802 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_2A379B8A-C6E0-415E-9601-9832251F616F - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 2cbdde76-5a0d-497d-842d-3eff5f21b260 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_1700D42D-C9FA-4131-B024-588FDDC70649 - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 4227b8b3-3ac9-4f4b-a915-89b5b8263a84 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_42108956-78CB-4040-A291-DF872B49268F - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - e590c92d-076c-4598-bc21-208758b30d24 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_243A3A4C-85BF-4384-80E9-00954962B8CB - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 7170c4d9-1437-4571-ba86-7136165f0d82 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_72A9CD86-312A-4A61-B9A3-2D5A11B373E5 - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 012e2505-b6e8-491f-bd1c-7638a5a5b72b - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_58215ABF-1C91-4932-96EA-88041D560EED - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - f50167b3-4b05-47f8-b833-356ce10c48c5 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_6D775DB5-010B-4B7C-B585-BB7C9128D259 - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 1d1117ee-2d1c-4a6e-b0c2-b599c75fe869 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_75E900B0-06E2-4C67-A158-0198B4264304 - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 037ea153-8368-46ff-9633-e152a7847099 - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_3380A831-9D22-4F03-A1DF-18B249F0FF8E - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - - 3219619b-9803-4807-a6e4-25eca82fa84c - 2020-08-06T18:40:34.417+02:00 - LogicalPartition_2DE05DB6-8AD5-448F-8327-0F488D287E82 - 2020-08-06T18:40:34.417+02:00 - - - IBM Power Systems Management Console - - - - \ No newline at end of file diff --git a/src/test/resources/pcm-data-energy.json b/src/test/resources/pcm-data-energy.json new file mode 100644 index 0000000..4f7f236 --- /dev/null +++ b/src/test/resources/pcm-data-energy.json @@ -0,0 +1,104 @@ +{ + "systemUtil": { + "utilInfo": { + "version": "1.3.0", + "metricType": "Processed", + "frequency": 30, + "startTimeStamp": "2020-12-09T12:37:00+0100", + "endTimeStamp": "2020-12-09T12:37:00+0100", + "mtms": "9009-42A*21F64EV", + "name": "Server-9009-42A-SN21F64EV", + "uuid": "b597e4da-2aab-3f52-8616-341d62153559", + "metricArrayOrder": [ + "AVG" + ] + }, + "utilSamples": [ + { + "sampleType": "ManagedSystem", + "sampleInfo": { + "timeStamp": "2020-12-09T12:37:00+0100", + "status": 0 + }, + "energyUtil": { + "powerUtil": { + "powerReading": [ + 542.000 + ] + }, + "thermalUtil": { + "inletTemperatures": [ + { + "entityId": "Inlet air temperature(40h)", + "entityInstance": "1", + "temperatureReading": [ + 26.000 + ] + } + ], + "cpuTemperatures": [ + { + "entityId": "CPU temperature sensors(41h)", + "entityInstance": "2", + "temperatureReading": [ + 54.000 + ] + }, + { + "entityId": "CPU temperature sensors(41h)", + "entityInstance": "1", + "temperatureReading": [ + 46.000 + ] + } + ], + "baseboardTemperatures": [ + { + "entityId": "Baseboard temperature sensors(42h)", + "entityInstance": "1", + "temperatureReading": [ + 45.000 + ] + }, + { + "entityId": "Baseboard temperature sensors(42h)", + "entityInstance": "2", + "temperatureReading": [ + 45.000 + ] + }, + { + "entityId": "Baseboard temperature sensors(42h)", + "entityInstance": "3", + "temperatureReading": [ + 45.000 + ] + }, + { + "entityId": "Baseboard temperature sensors(42h)", + "entityInstance": "4", + "temperatureReading": [ + 48.000 + ] + }, + { + "entityId": "Baseboard temperature sensors(42h)", + "entityInstance": "5", + "temperatureReading": [ + 48.000 + ] + }, + { + "entityId": "Baseboard temperature sensors(42h)", + "entityInstance": "6", + "temperatureReading": [ + 48.000 + ] + } + ] + } + } + } + ] + } +} diff --git a/src/test/resources/pcm-partition.xml b/src/test/resources/pcm-partition.xml deleted file mode 100644 index 1e6e931..0000000 --- a/src/test/resources/pcm-partition.xml +++ /dev/null @@ -1,19 +0,0 @@ - - 1700D42D-C9FA-4131-B024-588FDDC70649 - 2020-08-10T20:54:30.000+02:00 - ProcessedMetrics - LogicalPartition 1700D42D-C9FA-4131-B024-588FDDC70649 - - - - 160106d5-1803-42f3-a81f-c1fd90456e8c - 2020-08-10T20:54:30.000+02:00 - LogicalPartition_1700D42D-C9FA-4131-B024-588FDDC70649_20200810T185530+0200_20200810T205430+0200_30.json - 2020-08-10T18:55:30.000+02:00 - - - IBM Power Systems Management Console - - - - \ No newline at end of file