Merged in development (pull request #18)

Development updates and fixes.
This commit is contained in:
Mark Nellemann 2021-08-09 13:17:01 +00:00
commit 91624e2a48
8 changed files with 509 additions and 35 deletions

View file

@ -93,6 +93,11 @@ Below are screenshots of the provided Grafana dashboards (found in the **doc/**
## Known problems
### Incomplete test of metrics
I have not been able to test and verify all types of metric data. If you encounter any missing or wrong data, please contact me, so I can try to fix it. It is possible to run **hmci** with *-d -d* to log JSON data received by the HCM, which can help me implement missing data.
### Naming collision
You can't have partitions (or Virtual I/O Servers) on different Systems with the same name, as these cannot be distinguished when metrics are

View file

@ -19,18 +19,18 @@ repositories {
dependencies {
annotationProcessor 'info.picocli:picocli-codegen:4.6.1'
implementation 'info.picocli:picocli:4.6.1'
implementation 'org.jsoup:jsoup:1.13.1'
implementation 'org.jsoup:jsoup:1.14.1'
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'com.squareup.moshi:moshi:1.11.0'
implementation 'com.squareup.moshi:moshi:1.12.0'
implementation 'com.serjltt.moshi:moshi-lazy-adapters:2.2'
implementation 'org.tomlj:tomlj:1.0.0'
implementation 'org.influxdb:influxdb-java:2.21'
implementation 'org.slf4j:slf4j-api:1.7.30'
implementation 'org.slf4j:slf4j-simple:1.7.30'
implementation 'org.slf4j:slf4j-api:1.7.32'
implementation 'org.slf4j:slf4j-simple:1.7.32'
testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0'
testImplementation 'com.squareup.okhttp3:mockwebserver:4.9.1'
testImplementation "org.slf4j:slf4j-simple:1.7.30"
testImplementation 'org.slf4j:slf4j-simple:1.7.32'
}
application {
@ -84,8 +84,8 @@ jacoco {
jacocoTestReport {
group = "verification"
reports {
xml.enabled false
csv.enabled false
xml.required = false
csv.required = false
html.destination file("${buildDir}/reports/coverage")
}
}

View file

@ -20,7 +20,7 @@
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "8.0.0"
"version": "8.0.6"
},
{
"type": "panel",
@ -60,7 +60,7 @@
"gnetId": 1465,
"graphTooltip": 0,
"id": null,
"iteration": 1623369402365,
"iteration": 1628491801565,
"links": [],
"panels": [
{
@ -148,7 +148,7 @@
"showHeader": true,
"sortBy": []
},
"pluginVersion": "8.0.0",
"pluginVersion": "8.0.6",
"targets": [
{
"alias": "Read",
@ -278,8 +278,8 @@
"overrides": []
},
"gridPos": {
"h": 9,
"w": 7,
"h": 11,
"w": 6,
"x": 0,
"y": 5
},
@ -297,7 +297,7 @@
"showThresholdMarkers": true,
"text": {}
},
"pluginVersion": "8.0.0",
"pluginVersion": "8.0.6",
"targets": [
{
"alias": "$tag_viosname",
@ -382,9 +382,9 @@
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 9,
"w": 17,
"x": 7,
"h": 11,
"w": 18,
"x": 6,
"y": 5
},
"hiddenSeries": false,
@ -409,7 +409,7 @@
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.0",
"pluginVersion": "8.0.6",
"pointradius": 5,
"points": false,
"renderer": "flot",
@ -547,10 +547,10 @@
"fillGradient": 1,
"grid": {},
"gridPos": {
"h": 18,
"w": 12,
"h": 15,
"w": 15,
"x": 0,
"y": 14
"y": 16
},
"hiddenSeries": false,
"id": 18,
@ -574,7 +574,7 @@
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.0",
"pluginVersion": "8.0.6",
"pointradius": 5,
"points": false,
"renderer": "flot",
@ -793,10 +793,10 @@
"fillGradient": 1,
"grid": {},
"gridPos": {
"h": 18,
"w": 12,
"x": 12,
"y": 14
"h": 15,
"w": 9,
"x": 15,
"y": 16
},
"hiddenSeries": false,
"id": 17,
@ -820,7 +820,7 @@
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.0",
"pluginVersion": "8.0.6",
"pointradius": 5,
"points": false,
"renderer": "flot",
@ -1045,9 +1045,478 @@
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"content": "",
"dashLength": 10,
"dashes": false,
"datasource": "${DS_INFLUXDB-HMCI}",
"description": "",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"links": []
},
"overrides": []
},
"fill": 1,
"fillGradient": 1,
"grid": {},
"gridPos": {
"h": 15,
"w": 15,
"x": 0,
"y": 31
},
"hiddenSeries": false,
"id": 22,
"legend": {
"alignAsTable": false,
"avg": false,
"current": false,
"max": false,
"min": false,
"rightSide": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"mode": "",
"nullPointMode": "connected",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.6",
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"style": {},
"targets": [
{
"alias": "$tag_viosname: $tag_id ($tag_location) read",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"viosname"
],
"type": "tag"
},
{
"params": [
"location"
],
"type": "tag"
},
{
"params": [
"id"
],
"type": "tag"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "vios_storage_vFC",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"readBytes"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "servername",
"operator": "=~",
"value": "/^$ServerName$/"
},
{
"condition": "AND",
"key": "viosname",
"operator": "=~",
"value": "/^$ViosName$/"
}
]
},
{
"alias": "$tag_viosname: $tag_id ($tag_location) write",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"viosname"
],
"type": "tag"
},
{
"params": [
"location"
],
"type": "tag"
},
{
"params": [
"id"
],
"type": "tag"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "vios_storage_vFC",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"writeBytes"
],
"type": "field"
},
{
"params": [],
"type": "mean"
},
{
"params": [
"*-1"
],
"type": "math"
}
]
],
"tags": [
{
"key": "servername",
"operator": "=~",
"value": "/^$ServerName$/"
},
{
"condition": "AND",
"key": "viosname",
"operator": "=~",
"value": "/^$ViosName$/"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Virtual Fiber Channel Adapters - $ServerName - $ViosName",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 2,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"$$hashKey": "object:2511",
"format": "Bps",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"$$hashKey": "object:2512",
"format": "none",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": false
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"content": "",
"dashLength": 10,
"dashes": false,
"datasource": "${DS_INFLUXDB-HMCI}",
"description": "",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"links": [],
"unit": "bytes"
},
"overrides": []
},
"fill": 1,
"fillGradient": 1,
"grid": {},
"gridPos": {
"h": 15,
"w": 9,
"x": 15,
"y": 31
},
"hiddenSeries": false,
"id": 23,
"legend": {
"alignAsTable": false,
"avg": false,
"current": false,
"max": false,
"min": false,
"rightSide": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"links": [],
"mode": "",
"nullPointMode": "connected",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "8.0.6",
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"style": {},
"targets": [
{
"alias": "$tag_viosname - read",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"viosname"
],
"type": "tag"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "vios_storage_physical",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"readBytes"
],
"type": "field"
},
{
"params": [],
"type": "mean"
}
]
],
"tags": [
{
"key": "servername",
"operator": "=~",
"value": "/^$ServerName$/"
},
{
"condition": "AND",
"key": "viosname",
"operator": "=~",
"value": "/^$ViosName$/"
}
]
},
{
"alias": "$tag_viosname - write",
"dsType": "influxdb",
"groupBy": [
{
"params": [
"$interval"
],
"type": "time"
},
{
"params": [
"viosname"
],
"type": "tag"
},
{
"params": [
"null"
],
"type": "fill"
}
],
"hide": false,
"measurement": "vios_storage_physical",
"orderByTime": "ASC",
"policy": "default",
"refId": "B",
"resultFormat": "time_series",
"select": [
[
{
"params": [
"writeBytes"
],
"type": "field"
},
{
"params": [],
"type": "mean"
},
{
"params": [
"*-1"
],
"type": "math"
}
]
],
"tags": [
{
"key": "servername",
"operator": "=~",
"value": "/^$ServerName$/"
},
{
"condition": "AND",
"key": "viosname",
"operator": "=~",
"value": "/^$ViosName$/"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Physical Storage - $ServerName - $ViosName",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 2,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"$$hashKey": "object:2622",
"format": "bytes",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"$$hashKey": "object:2623",
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": false
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"refresh": "1m",
"refresh": "30s",
"schemaVersion": 30,
"style": "dark",
"tags": [
@ -1112,12 +1581,12 @@
]
},
"time": {
"from": "now-2d",
"from": "now-6h",
"now": false,
"to": "now-1m"
"to": "now-30s"
},
"timepicker": {
"nowDelay": "1m",
"nowDelay": "30s",
"refresh_intervals": [
"30s",
"1m",
@ -1143,5 +1612,5 @@
"timezone": "browser",
"title": "IBM Power - HMCi - Virtual I/O Servers",
"uid": "DDNEv5vGz",
"version": 4
"version": 10
}

View file

@ -1,3 +1,3 @@
id = hmci
group = biz.nellemann.hmci
version = 1.2.2
version = 1.2.3

Binary file not shown.

View file

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

2
gradlew vendored
View file

@ -72,7 +72,7 @@ case "`uname`" in
Darwin* )
darwin=true
;;
MINGW* )
MSYS* | MINGW* )
msys=true
;;
NONSTOP* )

View file

@ -423,13 +423,13 @@ class ManagedSystem extends MetaSystem {
vios.storage.fiberChannelAdapters.forEach( adapter -> {
HashMap<String, String> tagsMap = new HashMap<>();
tagsMap.put("id", adapter.id);
tagsMap.put("servername", name);
tagsMap.put("viosname", vios.name);
tagsMap.put("location", adapter.physicalLocation);
log.trace("getViosStorageFiberChannelAdapters() - tags: " + tagsMap.toString());
HashMap<String, Object> fieldsMap = new HashMap<>();
fieldsMap.put("id", adapter.id);
fieldsMap.put("numOfReads", adapter.numOfReads);
fieldsMap.put("numOfWrites", adapter.numOfWrites);
fieldsMap.put("readBytes", adapter.readBytes);