From c324e2401437284beeae41408203f63b39696480 Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Thu, 25 Mar 2021 16:46:04 +0100 Subject: [PATCH 1/5] Work on nextract naming. --- gradle.properties | 2 +- .../java/biz/nellemann/hmci/InfluxClient.java | 194 ++++--- .../biz/nellemann/hmci/LogicalPartition.java | 117 +++-- .../biz/nellemann/hmci/ManagedSystem.java | 494 +++++++++++++----- .../java/biz/nellemann/hmci/Measurement.java | 4 +- .../java/biz/nellemann/hmci/SystemEnergy.java | 8 +- .../nellemann/hmci/pcm/GenericAdapter.java | 26 +- .../java/biz/nellemann/hmci/pcm/Network.java | 1 + .../hmci/pcm/PhysicalProcessorPool.java | 21 +- .../biz/nellemann/hmci/pcm/ServerMemory.java | 3 + .../nellemann/hmci/pcm/SystemFirmware.java | 16 + .../java/biz/nellemann/hmci/pcm/UtilInfo.java | 6 +- .../biz/nellemann/hmci/pcm/UtilSample.java | 1 + .../hmci/pcm/VirtualFiberChannelAdapter.java | 26 +- .../hmci/LogicalPartitionTest.groovy | 31 +- .../nellemann/hmci/ManagedSystemTest.groovy | 18 +- 16 files changed, 709 insertions(+), 259 deletions(-) create mode 100644 src/main/java/biz/nellemann/hmci/pcm/SystemFirmware.java diff --git a/gradle.properties b/gradle.properties index 0974f2a..c54020f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ id = hmci group = biz.nellemann.hmci -version = 1.1.6 +version = 1.2.1 diff --git a/src/main/java/biz/nellemann/hmci/InfluxClient.java b/src/main/java/biz/nellemann/hmci/InfluxClient.java index 66e5abb..61fe8c9 100644 --- a/src/main/java/biz/nellemann/hmci/InfluxClient.java +++ b/src/main/java/biz/nellemann/hmci/InfluxClient.java @@ -132,58 +132,120 @@ class InfluxClient { return; } - getSystemMemory(system, timestamp).forEach( it -> batchPoints.point(it) ); + getSystemDetails(system, timestamp).forEach( it -> batchPoints.point(it) ); getSystemProcessor(system, timestamp).forEach( it -> batchPoints.point(it) ); + getSystemPhysicalProcessorPool(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) ); - getSystemVirtualEthernetAdapters(system, timestamp).forEach( it -> batchPoints.point(it) ); - getSystemViosMemory(system, timestamp).forEach( it -> batchPoints.point(it) ); + getSystemMemory(system, timestamp).forEach( it -> batchPoints.point(it) ); + + getSystemViosDetails(system, timestamp).forEach(it -> batchPoints.point(it) ); getSystemViosProcessor(system, timestamp).forEach( it -> batchPoints.point(it) ); + getSystemViosMemory(system, timestamp).forEach( it -> batchPoints.point(it) ); + + getSystemViosNetworkLpars(system, timestamp).forEach(it -> batchPoints.point(it) ); + getSystemViosNetworkGenericAdapters(system, timestamp).forEach(it -> batchPoints.point(it) ); + getSystemViosNetworkSharedAdapters(system, timestamp).forEach(it -> batchPoints.point(it) ); + getSystemViosNetworkVirtualAdapters(system, timestamp).forEach(it -> batchPoints.point(it) ); + + getSystemViosStorageLpars(system, timestamp).forEach(it -> batchPoints.point(it) ); + getSystemViosFiberChannelAdapters(system, timestamp).forEach(it -> batchPoints.point(it) ); + getSystemViosStoragePhysicalAdapters(system, timestamp).forEach(it -> batchPoints.point(it) ); + getSystemViosStorageVirtualAdapters(system, timestamp).forEach(it -> batchPoints.point(it) ); } - private static List getSystemMemory(ManagedSystem system, Instant timestamp) { - List metrics = system.getMemoryMetrics(); - return processMeasurementMap(metrics, timestamp, "SystemMemory"); + // TODO: server_details + + private static List getSystemDetails(ManagedSystem system, Instant timestamp) { + List metrics = system.getDetails(); + return processMeasurementMap(metrics, timestamp, "server_details"); } private static List getSystemProcessor(ManagedSystem system, Instant timestamp) { List metrics = system.getProcessorMetrics(); - return processMeasurementMap(metrics, timestamp, "SystemProcessor"); + return processMeasurementMap(metrics, timestamp, "server_processor"); + } + + private static List getSystemPhysicalProcessorPool (ManagedSystem system, Instant timestamp) { + List metrics = system.getPhysicalProcessorPool(); + return processMeasurementMap(metrics, timestamp, "server_physicalProcessorPool"); } private static List getSystemSharedProcessorPools(ManagedSystem system, Instant timestamp) { List metrics = system.getSharedProcessorPools(); - return processMeasurementMap(metrics, timestamp, "SystemSharedProcessorPool"); + return processMeasurementMap(metrics, timestamp, "server_sharedProcessorPool"); } - private static List getSystemSharedAdapters(ManagedSystem system, Instant timestamp) { - List metrics = system.getSystemSharedAdapters(); - return processMeasurementMap(metrics, timestamp, "SystemSharedAdapters"); + private static List getSystemMemory(ManagedSystem system, Instant timestamp) { + List metrics = system.getMemoryMetrics(); + return processMeasurementMap(metrics, timestamp, "server_memory"); } - private static List getSystemFiberChannelAdapters(ManagedSystem system, Instant timestamp) { - List metrics = system.getSystemFiberChannelAdapters(); - return processMeasurementMap(metrics, timestamp, "SystemFiberChannelAdapters"); - } - - private static List getSystemVirtualEthernetAdapters(ManagedSystem system, Instant timestamp) { - List metrics = system.getSystemVirtualEthernetAdapters(); - return processMeasurementMap(metrics, timestamp, "SystemVirtualEthernetAdapters"); - } - - private static List getSystemViosMemory(ManagedSystem system, Instant timestamp) { - List metrics = system.getViosMemoryMetrics(); - return processMeasurementMap(metrics, timestamp, "SystemViosMemory"); + private static List getSystemViosDetails(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosDetails(); + return processMeasurementMap(metrics, timestamp, "vios_details"); } private static List getSystemViosProcessor(ManagedSystem system, Instant timestamp) { List metrics = system.getViosProcessorMetrics(); - return processMeasurementMap(metrics, timestamp, "SystemViosProcessor"); + return processMeasurementMap(metrics, timestamp, "vios_processor"); } + private static List getSystemViosMemory(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosMemoryMetrics(); + return processMeasurementMap(metrics, timestamp, "vios_memory"); + } + + private static List getSystemViosNetworkLpars(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosNetworkLpars(); + return processMeasurementMap(metrics, timestamp, "vios_network_lpars"); + } + + private static List getSystemViosNetworkVirtualAdapters(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosNetworkVirtualAdapters(); + return processMeasurementMap(metrics, timestamp, "vios_network_virtual"); + } + + private static List getSystemViosNetworkSharedAdapters(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosNetworkSharedAdapters(); + return processMeasurementMap(metrics, timestamp, "vios_network_shared"); + } + + private static List getSystemViosNetworkGenericAdapters(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosNetworkGenericAdapters(); + return processMeasurementMap(metrics, timestamp, "vios_network_generic"); + } + + + private static List getSystemViosStorageLpars(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosStorageLpars(); + return processMeasurementMap(metrics, timestamp, "vios_storage_lpars"); + } + + private static List getSystemViosFiberChannelAdapters(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosStorageFiberChannelAdapters(); + return processMeasurementMap(metrics, timestamp, "vios_storage_FC"); + } + + /* + private static List getSystemViosSharedStoragePools(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosStorageSharedStoragePools(); + return processMeasurementMap(metrics, timestamp, "vios_storage_SSP"); + }*/ + + private static List getSystemViosStoragePhysicalAdapters(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosStoragePhysicalAdapters(); + return processMeasurementMap(metrics, timestamp, "vios_storage_physical"); + } + + private static List getSystemViosStorageVirtualAdapters(ManagedSystem system, Instant timestamp) { + List metrics = system.getViosStorageVirtualAdapters(); + return processMeasurementMap(metrics, timestamp, "vios_storage_virtual"); + } + + + /* Logical Partitions @@ -202,39 +264,44 @@ class InfluxClient { return; } - getPartitionAffinityScore(partition, timestamp).forEach( it -> batchPoints.point(it)); + getPartitionDetails(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)); + getPartitionNetworkVirtual(partition, timestamp).forEach(it -> batchPoints.point(it)); + getPartitionStorageVirtualGeneric(partition, timestamp).forEach(it -> batchPoints.point(it)); + getPartitionStorageVirtualFibreChannel(partition, timestamp).forEach(it -> batchPoints.point(it)); } - private static List getPartitionAffinityScore(LogicalPartition partition, Instant timestamp) { - List metrics = partition.getAffinityScore(); - return processMeasurementMap(metrics, timestamp, "PartitionAffinityScore"); - } - - private static List getPartitionMemory(LogicalPartition partition, Instant timestamp) { - List metrics = partition.getMemoryMetrics(); - return processMeasurementMap(metrics, timestamp, "PartitionMemory"); + private static List getPartitionDetails(LogicalPartition partition, Instant timestamp) { + List metrics = partition.getDetails(); + return processMeasurementMap(metrics, timestamp, "lpar_details"); } private static List getPartitionProcessor(LogicalPartition partition, Instant timestamp) { List metrics = partition.getProcessorMetrics(); - return processMeasurementMap(metrics, timestamp, "PartitionProcessor"); + return processMeasurementMap(metrics, timestamp, "lpar_processor"); } - private static List getPartitionVirtualEthernetAdapter(LogicalPartition partition, Instant timestamp) { + private static List getPartitionMemory(LogicalPartition partition, Instant timestamp) { + List metrics = partition.getMemoryMetrics(); + return processMeasurementMap(metrics, timestamp, "lpar_memory"); + } + + private static List getPartitionNetworkVirtual(LogicalPartition partition, Instant timestamp) { List metrics = partition.getVirtualEthernetAdapterMetrics(); - return processMeasurementMap(metrics, timestamp, "PartitionVirtualEthernetAdapters"); + return processMeasurementMap(metrics, timestamp, "lpar_network_virtual"); } - private static List getPartitionVirtualFiberChannelAdapter(LogicalPartition partition, Instant timestamp) { - List metrics = partition.getVirtualFiberChannelAdaptersMetrics(); - return processMeasurementMap(metrics, timestamp, "PartitionVirtualFiberChannelAdapters"); + private static List getPartitionStorageVirtualGeneric(LogicalPartition partition, Instant timestamp) { + List metrics = partition.getVirtualGenericAdapterMetrics(); + return processMeasurementMap(metrics, timestamp, "lpar_storage_generic"); } + private static List getPartitionStorageVirtualFibreChannel(LogicalPartition partition, Instant timestamp) { + List metrics = partition.getVirtualFibreChannelAdapterMetrics(); + return processMeasurementMap(metrics, timestamp, "lpar_storage_virtual"); + } /* @@ -262,12 +329,12 @@ class InfluxClient { private static List getSystemEnergyPower(SystemEnergy system, Instant timestamp) { List metrics = system.getPowerMetrics(); - return processMeasurementMap(metrics, timestamp, "SystemEnergyPower"); + return processMeasurementMap(metrics, timestamp, "server_energy_power"); } private static List getSystemEnergyTemperature(SystemEnergy system, Instant timestamp) { List metrics = system.getThermalMetrics(); - return processMeasurementMap(metrics, timestamp, "SystemEnergyThermal"); + return processMeasurementMap(metrics, timestamp, "server_energy_thermal"); } @@ -280,24 +347,33 @@ class InfluxClient { List listOfPoints = new ArrayList<>(); measurements.forEach( m -> { + Point.Builder builder = Point.measurement(measurement) + .time(timestamp.toEpochMilli(), TimeUnit.MILLISECONDS); + // Iterate fields m.fields.forEach((fieldName, fieldValue) -> { + log.trace("processMeasurementMap() " + measurement + " - fieldName: " + fieldName + ", fieldValue: " + fieldValue); - - Point.Builder builder = Point.measurement(measurement) - .time(timestamp.toEpochMilli(), TimeUnit.MILLISECONDS) - .tag("name", fieldName) - .addField("value", fieldValue); - - // For each field, we add all tags - m.tags.forEach((tagName, tagValue) -> { - builder.tag(tagName, tagValue); - log.trace("processMeasurementMap() " + measurement + " - tagName: " + tagName + ", tagValue: " + tagValue); - }); - - listOfPoints.add(builder.build()); + if(fieldValue instanceof Number) { + Number num = (Number) fieldValue; + builder.addField(fieldName, num); + } else if(fieldValue instanceof Boolean) { + Boolean bol = (Boolean) fieldValue; + builder.addField(fieldName, bol); + } else { + String str = (String) fieldValue; + builder.addField(fieldName, str); + } }); + // Iterate tags + m.tags.forEach((tagName, tagValue) -> { + log.trace("processMeasurementMap() " + measurement + " - tagName: " + tagName + ", tagValue: " + tagValue); + builder.tag(tagName, tagValue); + }); + + listOfPoints.add(builder.build()); + }); return listOfPoints; diff --git a/src/main/java/biz/nellemann/hmci/LogicalPartition.java b/src/main/java/biz/nellemann/hmci/LogicalPartition.java index 51a448e..8fb1bcc 100644 --- a/src/main/java/biz/nellemann/hmci/LogicalPartition.java +++ b/src/main/java/biz/nellemann/hmci/LogicalPartition.java @@ -47,34 +47,40 @@ class LogicalPartition extends MetaSystem { } - List getAffinityScore() { + // LPAR Details + List getDetails() { List list = new ArrayList<>(); Map tagsMap = new HashMap<>(); - tagsMap.put("system", system.name); - tagsMap.put("partition", name); - log.trace("getAffinityScore() - tags: " + tagsMap.toString()); + tagsMap.put("servername", system.name); + tagsMap.put("lparname", name); + log.trace("getDetails() - tags: " + tagsMap.toString()); - Map fieldsMap = new HashMap<>(); + Map fieldsMap = new HashMap<>(); + fieldsMap.put("id", metrics.systemUtil.sample.lparsUtil.id); + fieldsMap.put("type", metrics.systemUtil.sample.lparsUtil.type); + fieldsMap.put("state", metrics.systemUtil.sample.lparsUtil.state); + fieldsMap.put("osType", metrics.systemUtil.sample.lparsUtil.osType); fieldsMap.put("affinityScore", metrics.systemUtil.sample.lparsUtil.affinityScore); - log.trace("getAffinityScore() - fields: " + fieldsMap.toString()); + log.trace("getDetails() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); return list; } + // LPAR Memory List getMemoryMetrics() { List list = new ArrayList<>(); Map tagsMap = new HashMap<>(); - tagsMap.put("system", system.name); - tagsMap.put("partition", name); + tagsMap.put("servername", system.name); + tagsMap.put("lparname", name); log.trace("getMemoryMetrics() - tags: " + tagsMap.toString()); - Map fieldsMap = new HashMap<>(); + Map fieldsMap = new HashMap<>(); fieldsMap.put("logicalMem", metrics.systemUtil.sample.lparsUtil.memory.logicalMem); fieldsMap.put("backedPhysicalMem", metrics.systemUtil.sample.lparsUtil.memory.backedPhysicalMem); log.trace("getMemoryMetrics() - fields: " + fieldsMap.toString()); @@ -84,27 +90,31 @@ class LogicalPartition extends MetaSystem { } + // LPAR Processor List getProcessorMetrics() { List list = new ArrayList<>(); HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", system.name); - tagsMap.put("partition", name); + tagsMap.put("servername", system.name); + tagsMap.put("lparname", name); log.trace("getProcessorMetrics() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); + HashMap fieldsMap = new HashMap<>(); fieldsMap.put("utilizedProcUnits", metrics.systemUtil.sample.lparsUtil.processor.utilizedProcUnits); + fieldsMap.put("entitledProcUnits", metrics.systemUtil.sample.lparsUtil.processor.entitledProcUnits); + fieldsMap.put("donatedProcUnits", metrics.systemUtil.sample.lparsUtil.processor.donatedProcUnits); + fieldsMap.put("idleProcUnits", metrics.systemUtil.sample.lparsUtil.processor.idleProcUnits); + fieldsMap.put("maxProcUnits", metrics.systemUtil.sample.lparsUtil.processor.maxProcUnits); fieldsMap.put("maxVirtualProcessors", metrics.systemUtil.sample.lparsUtil.processor.maxVirtualProcessors); fieldsMap.put("currentVirtualProcessors", metrics.systemUtil.sample.lparsUtil.processor.currentVirtualProcessors); - //fieldsMap.donatedProcUnits: metrics.systemUtil.utilSamples.first().lparsUtil.first().processor.donatedProcUnits.first(), - fieldsMap.put("entitledProcUnits", metrics.systemUtil.sample.lparsUtil.processor.entitledProcUnits); - //fieldsMap.idleProcUnits: metrics.systemUtil.utilSamples.first().lparsUtil.first().processor.idleProcUnits.first(), - //fieldsMap.maxProcUnits: metrics.systemUtil.utilSamples.first().lparsUtil.first().processor.maxProcUnits.first(), fieldsMap.put("utilizedCappedProcUnits", metrics.systemUtil.sample.lparsUtil.processor.utilizedCappedProcUnits); fieldsMap.put("utilizedUncappedProcUnits", metrics.systemUtil.sample.lparsUtil.processor.utilizedUncappedProcUnits); fieldsMap.put("timePerInstructionExecution", metrics.systemUtil.sample.lparsUtil.processor.timeSpentWaitingForDispatch); fieldsMap.put("timeSpentWaitingForDispatch", metrics.systemUtil.sample.lparsUtil.processor.timePerInstructionExecution); + fieldsMap.put("mode", metrics.systemUtil.sample.lparsUtil.processor.mode); + fieldsMap.put("weight", metrics.systemUtil.sample.lparsUtil.processor.weight); + fieldsMap.put("poolId", metrics.systemUtil.sample.lparsUtil.processor.poolId); log.trace("getProcessorMetrics() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); @@ -112,6 +122,7 @@ class LogicalPartition extends MetaSystem { } + // LPAR Network - Virtual List getVirtualEthernetAdapterMetrics() { List list = new ArrayList<>(); @@ -119,19 +130,29 @@ class LogicalPartition extends MetaSystem { metrics.systemUtil.sample.lparsUtil.network.virtualEthernetAdapters.forEach( adapter -> { HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", system.name); - tagsMap.put("partition", name); - tagsMap.put("sea", adapter.sharedEthernetAdapterId); + tagsMap.put("servername", system.name); + tagsMap.put("lparname", name); + tagsMap.put("location", adapter.physicalLocation); tagsMap.put("viosId", adapter.viosId.toString()); tagsMap.put("vlanId", adapter.vlanId.toString()); tagsMap.put("vswitchId", adapter.vswitchId.toString()); log.trace("getVirtualEthernetAdapterMetrics() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("droppedPackets", adapter.droppedPackets); + fieldsMap.put("droppedPhysicalPackets", adapter.droppedPhysicalPackets); + fieldsMap.put("isPortVlanId", adapter.isPortVlanId); fieldsMap.put("receivedPhysicalBytes", adapter.receivedPhysicalBytes); + fieldsMap.put("receivedPhysicalPackets", adapter.receivedPhysicalPackets); fieldsMap.put("sentPhysicalBytes", adapter.sentPhysicalBytes); + fieldsMap.put("sentPhysicalPackets", adapter.sentPhysicalPackets); fieldsMap.put("receivedBytes", adapter.receivedBytes); + fieldsMap.put("receivedPackets", adapter.receivedPackets); fieldsMap.put("sentBytes", adapter.sentBytes); + fieldsMap.put("sentPackets", adapter.sentPackets); + fieldsMap.put("transferredBytes", adapter.transferredBytes); + fieldsMap.put("transferredPhysicalBytes", adapter.transferredPhysicalBytes); + fieldsMap.put("sharedEthernetAdapterId", adapter.sharedEthernetAdapterId); log.trace("getVirtualEthernetAdapterMetrics() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); @@ -141,23 +162,27 @@ class LogicalPartition extends MetaSystem { } - List getVirtualFiberChannelAdaptersMetrics() { + // LPAR Storage - Virtual Generic + List getVirtualGenericAdapterMetrics() { List list = new ArrayList<>(); - metrics.systemUtil.sample.lparsUtil.storage.virtualFiberChannelAdapters.forEach( adapter -> { + metrics.systemUtil.sample.lparsUtil.storage.genericVirtualAdapters.forEach( adapter -> { HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", system.name); - tagsMap.put("partition", name); + tagsMap.put("servername", system.name); + tagsMap.put("lparname", name); tagsMap.put("viosId", adapter.viosId.toString()); - tagsMap.put("wwpn", adapter.wwpn); - log.trace("getVirtualFiberChannelAdaptersMetrics() - tags: " + tagsMap.toString()); + tagsMap.put("location", adapter.physicalLocation); + tagsMap.put("id", adapter.id); + log.trace("getVirtualGenericAdapterMetrics() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); - fieldsMap.put("transmittedBytes", adapter.transmittedBytes.get(0)); - fieldsMap.put("writeBytes", adapter.writeBytes.get(0)); - fieldsMap.put("readBytes", adapter.readBytes.get(0)); - log.trace("getVirtualFiberChannelAdaptersMetrics() - fields: " + fieldsMap.toString()); + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("numOfReads", adapter.numOfReads); + fieldsMap.put("numOfWrites", adapter.numOfWrites); + fieldsMap.put("writeBytes", adapter.writeBytes); + fieldsMap.put("readBytes", adapter.readBytes); + fieldsMap.put("type", adapter.type); + log.trace("getVirtualGenericAdapterMetrics() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); }); @@ -165,4 +190,34 @@ class LogicalPartition extends MetaSystem { return list; } + // LPAR Storage - Virtual FC + List getVirtualFibreChannelAdapterMetrics() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.lparsUtil.storage.virtualFiberChannelAdapters.forEach( adapter -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", system.name); + tagsMap.put("lparname", name); + tagsMap.put("viosId", adapter.viosId.toString()); + tagsMap.put("location", adapter.physicalLocation); + log.trace("getVirtualFibreChannelAdapterMetrics() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("numOfReads", adapter.numOfReads); + fieldsMap.put("numOfWrites", adapter.numOfWrites); + fieldsMap.put("writeBytes", adapter.writeBytes); + fieldsMap.put("readBytes", adapter.readBytes); + //fieldsMap.put("transmittedBytes", adapter.transmittedBytes); + //fieldsMap.put("wwpn", adapter.wwpn); + //fieldsMap.put("wwpn2", adapter.wwpn2); + log.trace("getVirtualFibreChannelAdapterMetrics() - fields: " + fieldsMap.toString()); + + 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 74e25b7..5a0d05a 100644 --- a/src/main/java/biz/nellemann/hmci/ManagedSystem.java +++ b/src/main/java/biz/nellemann/hmci/ManagedSystem.java @@ -52,36 +52,62 @@ class ManagedSystem extends MetaSystem { } + List getDetails() { + + List list = new ArrayList<>(); + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + log.trace("getDetails() - tags: " + tagsMap.toString()); + + Map fieldsMap = new HashMap<>(); + fieldsMap.put("mtm", String.format("%s-%s %s", type, model, serialNumber)); + fieldsMap.put("APIversion", metrics.systemUtil.utilInfo.version); + fieldsMap.put("metric", metrics.systemUtil.utilInfo.metricType); + fieldsMap.put("frequency", metrics.systemUtil.utilInfo.frequency); + fieldsMap.put("nextract", "HMCi"); + fieldsMap.put("name", name); + fieldsMap.put("utilizedProcUnits", metrics.systemUtil.sample.systemFirmwareUtil.utilizedProcUnits); + fieldsMap.put("assignedMem", metrics.systemUtil.sample.systemFirmwareUtil.assignedMem); + log.trace("getDetails() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + return list; + } + + + // Memory List getMemoryMetrics() { List list = new ArrayList<>(); HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", name); + tagsMap.put("servername", name); log.trace("getMemoryMetrics() - tags: " + tagsMap.toString()); - Map fieldsMap = new HashMap<>(); + Map fieldsMap = new HashMap<>(); fieldsMap.put("totalMem", metrics.systemUtil.sample.serverUtil.memory.totalMem); 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); + fieldsMap.put("virtualPersistentMem", metrics.systemUtil.sample.serverUtil.memory.virtualPersistentMem); log.trace("getMemoryMetrics() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); - return list; } + // Processor List getProcessorMetrics() { List list = new ArrayList<>(); HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", name); + tagsMap.put("servername", name); log.trace("getProcessorMetrics() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); + HashMap fieldsMap = new HashMap<>(); fieldsMap.put("totalProcUnits", metrics.systemUtil.sample.serverUtil.processor.totalProcUnits); fieldsMap.put("utilizedProcUnits", metrics.systemUtil.sample.serverUtil.processor.utilizedProcUnits); fieldsMap.put("availableProcUnits", metrics.systemUtil.sample.serverUtil.processor.availableProcUnits); @@ -92,20 +118,24 @@ class ManagedSystem extends MetaSystem { return list; } - + // Shared ProcessorPools List getSharedProcessorPools() { List list = new ArrayList<>(); - metrics.systemUtil.sample.serverUtil.sharedProcessorPool.forEach(adapter -> { + metrics.systemUtil.sample.serverUtil.sharedProcessorPool.forEach(sharedProcessorPool -> { HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", name); - tagsMap.put("pool", adapter.name); + tagsMap.put("servername", name); + tagsMap.put("pool", sharedProcessorPool.id); + tagsMap.put("poolname", sharedProcessorPool.name); log.trace("getSharedProcessorPools() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); - fieldsMap.put("assignedProcUnits", adapter.assignedProcUnits); - fieldsMap.put("availableProcUnits", adapter.availableProcUnits); + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("assignedProcUnits", sharedProcessorPool.assignedProcUnits); + fieldsMap.put("availableProcUnits", sharedProcessorPool.availableProcUnits); + fieldsMap.put("utilizedProcUnits", sharedProcessorPool.utilizedProcUnits); + fieldsMap.put("borrowedProcUnits", sharedProcessorPool.borrowedProcUnits); + fieldsMap.put("configuredProcUnits", sharedProcessorPool.configuredProcUnits); log.trace("getSharedProcessorPools() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); @@ -115,18 +145,65 @@ class ManagedSystem extends MetaSystem { } - // VIOs Memory + // Physical ProcessorPool + List getPhysicalProcessorPool() { + + List list = new ArrayList<>(); + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + log.trace("getPhysicalProcessorPool() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("assignedProcUnits", metrics.systemUtil.sample.serverUtil.physicalProcessorPool.assignedProcUnits); + fieldsMap.put("availableProcUnits", metrics.systemUtil.sample.serverUtil.physicalProcessorPool.availableProcUnits); + fieldsMap.put("utilizedProcUnits", metrics.systemUtil.sample.serverUtil.physicalProcessorPool.utilizedProcUnits); + fieldsMap.put("configuredProcUnits", metrics.systemUtil.sample.serverUtil.physicalProcessorPool.configuredProcUnits); + fieldsMap.put("borrowedProcUnits", metrics.systemUtil.sample.serverUtil.physicalProcessorPool.borrowedProcUnits); + log.trace("getPhysicalProcessorPool() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + return list; + } + + + // VIO Details + List getViosDetails() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.viosUtil.forEach(vios -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + log.trace("getViosDetails() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("viosid", vios.id); + fieldsMap.put("viosstate", vios.state); + fieldsMap.put("viosname", vios.name); + fieldsMap.put("affinityScore", vios.affinityScore); + log.trace("getViosDetails() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + return list; + } + + + // VIO Memory List getViosMemoryMetrics() { List list = new ArrayList<>(); metrics.systemUtil.sample.viosUtil.forEach(vios -> { HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", name); - tagsMap.put("vios", vios.name); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); log.trace("getViosMemoryMetrics() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); + HashMap fieldsMap = new HashMap<>(); Number assignedMem = getNumberMetricObject(vios.memory.assignedMem); Number utilizedMem = getNumberMetricObject(vios.memory.utilizedMem); if(assignedMem != null) { @@ -137,7 +214,7 @@ class ManagedSystem extends MetaSystem { } if(assignedMem != null && utilizedMem != null) { Number usedMemPct = (utilizedMem.intValue() * 100 ) / assignedMem.intValue(); - fieldsMap.put("utilizedMemPct", usedMemPct.floatValue()); + fieldsMap.put("utilizedPct", usedMemPct.floatValue()); } log.trace("getViosMemoryMetrics() - fields: " + fieldsMap.toString()); @@ -148,26 +225,30 @@ class ManagedSystem extends MetaSystem { } - // VIOs Processor + // VIO Processor List getViosProcessorMetrics() { List list = new ArrayList<>(); metrics.systemUtil.sample.viosUtil.forEach(vios -> { HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", name); - tagsMap.put("vios", vios.name); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); log.trace("getViosProcessorMetrics() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); + HashMap fieldsMap = new HashMap<>(); fieldsMap.put("utilizedProcUnits", vios.processor.utilizedProcUnits); - fieldsMap.put("maxVirtualProcessors", vios.processor.maxVirtualProcessors); - fieldsMap.put("currentVirtualProcessors", vios.processor.currentVirtualProcessors); - fieldsMap.put("entitledProcUnits", vios.processor.entitledProcUnits); fieldsMap.put("utilizedCappedProcUnits", vios.processor.utilizedCappedProcUnits); fieldsMap.put("utilizedUncappedProcUnits", vios.processor.utilizedUncappedProcUnits); - fieldsMap.put("timePerInstructionExecution", vios.processor.timeSpentWaitingForDispatch); + fieldsMap.put("currentVirtualProcessors", vios.processor.currentVirtualProcessors); + fieldsMap.put("maxVirtualProcessors", vios.processor.maxVirtualProcessors); + fieldsMap.put("maxProcUnits", vios.processor.maxProcUnits); + fieldsMap.put("entitledProcUnits", vios.processor.entitledProcUnits); + fieldsMap.put("donatedProcUnits", vios.processor.donatedProcUnits); + fieldsMap.put("idleProcUnits", vios.processor.idleProcUnits); fieldsMap.put("timeSpentWaitingForDispatch", vios.processor.timePerInstructionExecution); + fieldsMap.put("timePerInstructionExecution", vios.processor.timeSpentWaitingForDispatch); + fieldsMap.put("weight", vios.processor.weight); log.trace("getViosProcessorMetrics() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); @@ -177,8 +258,30 @@ class ManagedSystem extends MetaSystem { } - // VIOs - List getSystemSharedAdapters() { + // VIOs - Network + List getViosNetworkLpars() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.viosUtil.forEach(vios -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + log.trace("getViosNetworkLpars() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("clientlpars", vios.network.clientLpars.size()); + log.trace("getViosNetworkLpars() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + return list; + } + + + // VIO Network - Shared + List getViosNetworkSharedAdapters() { List list = new ArrayList<>(); metrics.systemUtil.sample.viosUtil.forEach(vios -> { @@ -186,48 +289,23 @@ class ManagedSystem extends MetaSystem { vios.network.sharedAdapters.forEach(adapter -> { HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", name); - tagsMap.put("type", adapter.type); - tagsMap.put("vios", vios.name); - tagsMap.put("device", adapter.physicalLocation); - log.trace("getSystemSharedAdapters() - tags: " + tagsMap.toString()); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + //tagsMap.put("id", adapter.id); + tagsMap.put("location", adapter.physicalLocation); + log.trace("getViosNetworkSharedAdapters() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("id", adapter.id); + fieldsMap.put("type", adapter.type); fieldsMap.put("sentBytes", adapter.sentBytes); + fieldsMap.put("sentPackets", adapter.sentPackets); fieldsMap.put("receivedBytes", adapter.receivedBytes); + fieldsMap.put("receivedPackets", adapter.receivedPackets); + fieldsMap.put("droppedPackets", adapter.droppedPackets); fieldsMap.put("transferredBytes", adapter.transferredBytes); - log.trace("getSystemSharedAdapters() - fields: " + fieldsMap.toString()); - - list.add(new Measurement(tagsMap, fieldsMap)); - }); - - }); - - return list; - } - - // VIOs - List getSystemFiberChannelAdapters() { - - List list = new ArrayList<>(); - metrics.systemUtil.sample.viosUtil.forEach( vios -> { - log.trace("getSystemFiberChannelAdapters() - VIOS: " + vios.name); - - vios.storage.fiberChannelAdapters.forEach( adapter -> { - - HashMap tagsMap = new HashMap<>(); - tagsMap.put("id", adapter.id); - tagsMap.put("system", name); - tagsMap.put("wwpn", adapter.wwpn); - tagsMap.put("vios", vios.name); - tagsMap.put("device", adapter.physicalLocation); - log.trace("getSystemFiberChannelAdapters() - tags: " + tagsMap.toString()); - - HashMap fieldsMap = new HashMap<>(); - fieldsMap.put("writeBytes", adapter.writeBytes); - fieldsMap.put("readBytes", adapter.readBytes); - fieldsMap.put("transmittedBytes", adapter.transmittedBytes); - log.trace("getSystemFiberChannelAdapters() - fields: " + fieldsMap.toString()); + fieldsMap.put("physicalLocation", adapter.physicalLocation); + log.trace("getViosNetworkSharedAdapters() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); }); @@ -238,73 +316,8 @@ class ManagedSystem extends MetaSystem { } - // VIOs - /* - List getSystemGenericPhysicalAdapters() { - - List list = new ArrayList<>(); - - metrics.systemUtil.sample.viosUtil.forEach( vios -> { - - vios.storage.genericPhysicalAdapters.forEach( adapter -> { - - HashMap tagsMap = new HashMap(); - tagsMap.put("id", adapter.id); - tagsMap.put("system", name); - tagsMap.put("vios", vios.name); - tagsMap.put("device", adapter.physicalLocation); - log.trace("getSystemGenericPhysicalAdapters() - tags: " + tagsMap.toString()); - - HashMap fieldsMap = new HashMap(); - fieldsMap.put("writeBytes", adapter.writeBytes); - fieldsMap.put("readBytes", adapter.readBytes); - fieldsMap.put("transmittedBytes", adapter.transmittedBytes); - log.trace("getSystemGenericPhysicalAdapters() - fields: " + fieldsMap.toString()); - - list.add(new Measurement(tagsMap, fieldsMap)); - }); - - }); - - return list; - } - */ - - - // VIOs - /* - List getSystemGenericVirtualAdapters() { - - List list = new ArrayList<>(); - - metrics.systemUtil.sample.viosUtil.forEach( vios -> { - - vios.storage.genericVirtualAdapters.forEach( adapter -> { - - HashMap tagsMap = new HashMap(); - tagsMap.put("id", adapter.id); - tagsMap.put("system", name); - tagsMap.put("vios", vios.name); - tagsMap.put("device", adapter.physicalLocation); - log.trace("getSystemGenericVirtualAdapters() - tags: " + tagsMap.toString()); - - HashMap fieldsMap = new HashMap(); - fieldsMap.put("writeBytes", adapter.writeBytes); - fieldsMap.put("readBytes", adapter.readBytes); - fieldsMap.put("transmittedBytes", adapter.transmittedBytes); - log.trace("getSystemGenericVirtualAdapters() - fields: " + fieldsMap.toString()); - - list.add(new Measurement(tagsMap, fieldsMap)); - }); - - }); - - return list; - } - */ - - // VIOs - List getSystemVirtualEthernetAdapters() { + // VIO Network - Virtual + List getViosNetworkVirtualAdapters() { List list = new ArrayList<>(); @@ -313,15 +326,29 @@ class ManagedSystem extends MetaSystem { vios.network.virtualEthernetAdapters.forEach( adapter -> { HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", name); - tagsMap.put("vios", vios.name); - tagsMap.put("device", adapter.physicalLocation); - log.trace("getSystemGenericVirtualAdapters() - tags: " + tagsMap.toString()); + tagsMap.put("vlanid", String.valueOf(adapter.vlanId)); + tagsMap.put("vswitchid", String.valueOf(adapter.vswitchId)); + tagsMap.put("systemname", name); + tagsMap.put("viosname", vios.name); + tagsMap.put("location", adapter.physicalLocation); + log.trace("getViosNetworkVirtualAdapters() - tags: " + tagsMap.toString()); - HashMap fieldsMap = new HashMap<>(); - fieldsMap.put("sentBytes", adapter.sentBytes); + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("droppedPackets", adapter.droppedPackets); + fieldsMap.put("droppedPhysicalPackets", adapter.droppedPhysicalPackets); + fieldsMap.put("isPortVlanId", adapter.isPortVlanId); fieldsMap.put("receivedBytes", adapter.receivedBytes); - log.trace("getSystemGenericVirtualAdapters() - fields: " + fieldsMap.toString()); + fieldsMap.put("receivedPackets", adapter.receivedPackets); + fieldsMap.put("receivedPhysicalBytes", adapter.receivedPhysicalBytes); + fieldsMap.put("receivedPhysicalPackets", adapter.receivedPhysicalPackets); + fieldsMap.put("sentBytes", adapter.sentBytes); + fieldsMap.put("sentPackets", adapter.sentPackets); + fieldsMap.put("sentPhysicalBytes", adapter.sentPhysicalBytes); + fieldsMap.put("sentPhysicalPackets", adapter.sentPhysicalPackets); + fieldsMap.put("transferredBytes", adapter.transferredBytes); + fieldsMap.put("transferredPhysicalBytes", adapter.transferredPhysicalBytes); + fieldsMap.put("physicalLocation", adapter.physicalLocation); + log.trace("getViosNetworkVirtualAdapters() - fields: " + fieldsMap.toString()); list.add(new Measurement(tagsMap, fieldsMap)); }); @@ -331,4 +358,193 @@ class ManagedSystem extends MetaSystem { return list; } + + // VIO Network - Generic + List getViosNetworkGenericAdapters() { + + List list = new ArrayList<>(); + + metrics.systemUtil.sample.viosUtil.forEach( vios -> { + + vios.network.genericAdapters.forEach( adapter -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("id", adapter.id); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + tagsMap.put("location", adapter.physicalLocation); + log.trace("getViosNetworkGenericAdapters() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("sentBytes", adapter.sentBytes); + fieldsMap.put("sentPackets", adapter.sentPackets); + fieldsMap.put("receivedBytes", adapter.receivedBytes); + fieldsMap.put("receivedPackets", adapter.receivedPackets); + fieldsMap.put("droppedPackets", adapter.droppedPackets); + fieldsMap.put("transferredBytes", adapter.transferredBytes); + log.trace("getViosNetworkGenericAdapters() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + }); + + return list; + } + + // VIOs - Storage + List getViosStorageLpars() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.viosUtil.forEach(vios -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + log.trace("getViosStorageLpars() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("clientlpars", vios.storage.clientLpars.size()); + log.trace("getViosStorageLpars() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + return list; + } + + // VIO Storage FC + List getViosStorageFiberChannelAdapters() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.viosUtil.forEach( vios -> { + log.trace("getViosStorageFiberChannelAdapters() - VIOS: " + vios.name); + + vios.storage.fiberChannelAdapters.forEach( adapter -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + tagsMap.put("location", adapter.physicalLocation); + log.trace("getViosStorageFiberChannelAdapters() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("id", adapter.id); + fieldsMap.put("numOfReads", adapter.numOfReads); + fieldsMap.put("numOfWrites", adapter.numOfWrites); + fieldsMap.put("readBytes", adapter.readBytes); + fieldsMap.put("writeBytes", adapter.writeBytes); + fieldsMap.put("transmittedBytes", adapter.transmittedBytes); + fieldsMap.put("physicalLocation", adapter.physicalLocation); + log.trace("getViosStorageFiberChannelAdapters() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + }); + + return list; + } + + // VIO Storage SSP TODO + List getViosStorageSharedStoragePools() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.viosUtil.forEach( vios -> { + log.trace("getViosStorageSharedStoragePools() - VIOS: " + vios.name); + + vios.storage.fiberChannelAdapters.forEach( adapter -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + tagsMap.put("id", adapter.id); + tagsMap.put("location", adapter.physicalLocation); + log.trace("getViosStorageSharedStoragePools() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("numOfReads", adapter.numOfReads); + fieldsMap.put("numOfWrites", adapter.numOfWrites); + fieldsMap.put("readBytes", adapter.readBytes); + fieldsMap.put("writeBytes", adapter.writeBytes); + fieldsMap.put("transmittedBytes", adapter.transmittedBytes); + fieldsMap.put("physicalLocation", adapter.physicalLocation); + log.trace("getViosStorageSharedStoragePools() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + }); + + return list; + } + + // VIO Storage - Physical + List getViosStoragePhysicalAdapters() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.viosUtil.forEach( vios -> { + log.trace("getViosStoragePhysicalAdapters() - VIOS: " + vios.name); + + vios.storage.genericPhysicalAdapters.forEach( adapter -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + tagsMap.put("id", adapter.id); + tagsMap.put("location", adapter.physicalLocation); + log.trace("getViosStoragePhysicalAdapters() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("numOfReads", adapter.numOfReads); + fieldsMap.put("numOfWrites", adapter.numOfWrites); + fieldsMap.put("readBytes", adapter.readBytes); + fieldsMap.put("writeBytes", adapter.writeBytes); + fieldsMap.put("transmittedBytes", adapter.transmittedBytes); + fieldsMap.put("type", adapter.type); + fieldsMap.put("physicalLocation", adapter.physicalLocation); + log.trace("getViosStoragePhysicalAdapters() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + }); + + return list; + } + + + // VIO Storage - Virtual + List getViosStorageVirtualAdapters() { + + List list = new ArrayList<>(); + metrics.systemUtil.sample.viosUtil.forEach( vios -> { + log.trace("getViosStorageVirtualAdapters() - VIOS: " + vios.name); + + vios.storage.genericVirtualAdapters.forEach( adapter -> { + + HashMap tagsMap = new HashMap<>(); + tagsMap.put("servername", name); + tagsMap.put("viosname", vios.name); + tagsMap.put("location", adapter.physicalLocation); + tagsMap.put("id", adapter.id); + log.trace("getViosStorageVirtualAdapters() - tags: " + tagsMap.toString()); + + HashMap fieldsMap = new HashMap<>(); + fieldsMap.put("numOfReads", adapter.numOfReads); + fieldsMap.put("numOfWrites", adapter.numOfWrites); + fieldsMap.put("readBytes", adapter.readBytes); + fieldsMap.put("writeBytes", adapter.writeBytes); + fieldsMap.put("transmittedBytes", adapter.transmittedBytes); + fieldsMap.put("type", adapter.type); + fieldsMap.put("physicalLocation", adapter.physicalLocation); + log.trace("getViosStorageVirtualAdapters() - fields: " + fieldsMap.toString()); + + list.add(new Measurement(tagsMap, fieldsMap)); + }); + + }); + + return list; + } } diff --git a/src/main/java/biz/nellemann/hmci/Measurement.java b/src/main/java/biz/nellemann/hmci/Measurement.java index 3b22441..5bbfbfb 100644 --- a/src/main/java/biz/nellemann/hmci/Measurement.java +++ b/src/main/java/biz/nellemann/hmci/Measurement.java @@ -20,9 +20,9 @@ import java.util.Map; public class Measurement { final Map tags; - final Map fields; + final Map fields; - Measurement(Map tags, Map fields) { + Measurement(Map tags, Map fields) { this.tags = tags; this.fields = fields; } diff --git a/src/main/java/biz/nellemann/hmci/SystemEnergy.java b/src/main/java/biz/nellemann/hmci/SystemEnergy.java index a4854b5..678c78e 100644 --- a/src/main/java/biz/nellemann/hmci/SystemEnergy.java +++ b/src/main/java/biz/nellemann/hmci/SystemEnergy.java @@ -47,10 +47,10 @@ class SystemEnergy extends MetaSystem { List list = new ArrayList<>(); HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", system.name); + tagsMap.put("servername", system.name); log.trace("getPowerMetrics() - tags: " + tagsMap.toString()); - Map fieldsMap = new HashMap<>(); + Map fieldsMap = new HashMap<>(); fieldsMap.put("powerReading", metrics.systemUtil.sample.energyUtil.powerUtil.powerReading); log.trace("getPowerMetrics() - fields: " + fieldsMap.toString()); @@ -64,10 +64,10 @@ class SystemEnergy extends MetaSystem { List list = new ArrayList<>(); HashMap tagsMap = new HashMap<>(); - tagsMap.put("system", system.name); + tagsMap.put("servername", system.name); log.trace("getThermalMetrics() - tags: " + tagsMap.toString()); - Map fieldsMap = new HashMap<>(); + Map fieldsMap = new HashMap<>(); for(Temperature t : metrics.systemUtil.sample.energyUtil.thermalUtil.cpuTemperatures) { fieldsMap.put("cpuTemperature_" + t.entityInstance, t.temperatureReading); diff --git a/src/main/java/biz/nellemann/hmci/pcm/GenericAdapter.java b/src/main/java/biz/nellemann/hmci/pcm/GenericAdapter.java index 49fec9f..1aa39c8 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/GenericAdapter.java +++ b/src/main/java/biz/nellemann/hmci/pcm/GenericAdapter.java @@ -1,5 +1,7 @@ package biz.nellemann.hmci.pcm; +import com.serjltt.moshi.adapters.FirstElement; + import java.util.ArrayList; import java.util.List; @@ -8,11 +10,23 @@ public class GenericAdapter { public String id = ""; public String type = ""; public String physicalLocation = ""; - public List receivedPackets = new ArrayList<>(); - public List sentPackets = new ArrayList<>(); - public List droppedPackets = new ArrayList<>(); - public List sentBytes = new ArrayList<>(); - public List receivedBytes = new ArrayList<>(); - public List transferredBytes = new ArrayList<>(); + + @FirstElement + public Number receivedPackets = 0.0; + + @FirstElement + public Number sentPackets = 0.0; + + @FirstElement + public Number droppedPackets = 0.0; + + @FirstElement + public Number sentBytes = 0.0; + + @FirstElement + public Number receivedBytes = 0.0; + + @FirstElement + public Number transferredBytes = 0.0; } diff --git a/src/main/java/biz/nellemann/hmci/pcm/Network.java b/src/main/java/biz/nellemann/hmci/pcm/Network.java index dd2df78..d0449e5 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/Network.java +++ b/src/main/java/biz/nellemann/hmci/pcm/Network.java @@ -5,6 +5,7 @@ import java.util.List; public class Network { + public List clientLpars = new ArrayList<>(); public List genericAdapters = new ArrayList<>(); public List sharedAdapters = new ArrayList<>(); public List virtualEthernetAdapters = new ArrayList<>(); diff --git a/src/main/java/biz/nellemann/hmci/pcm/PhysicalProcessorPool.java b/src/main/java/biz/nellemann/hmci/pcm/PhysicalProcessorPool.java index 9f63bea..1d42657 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/PhysicalProcessorPool.java +++ b/src/main/java/biz/nellemann/hmci/pcm/PhysicalProcessorPool.java @@ -1,14 +1,25 @@ package biz.nellemann.hmci.pcm; +import com.serjltt.moshi.adapters.FirstElement; + import java.util.ArrayList; import java.util.List; public class PhysicalProcessorPool { - public List assignedProcUnits = new ArrayList<>(); - public List utilizedProcUnits = new ArrayList<>(); - public List availableProcUnits = new ArrayList<>(); - public List configuredProcUnits = new ArrayList<>(); - public List borrowedProcUnits = new ArrayList<>(); + @FirstElement + public Number assignedProcUnits = 0.0; + + @FirstElement + public Number utilizedProcUnits = 0.0; + + @FirstElement + public Number availableProcUnits = 0.0; + + @FirstElement + public Number configuredProcUnits = 0.0; + + @FirstElement + public Number borrowedProcUnits = 0.0; } diff --git a/src/main/java/biz/nellemann/hmci/pcm/ServerMemory.java b/src/main/java/biz/nellemann/hmci/pcm/ServerMemory.java index e143482..dee9616 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/ServerMemory.java +++ b/src/main/java/biz/nellemann/hmci/pcm/ServerMemory.java @@ -16,4 +16,7 @@ public class ServerMemory { @FirstElement public Number assignedMemToLpars = 0.0; + @FirstElement + public Number virtualPersistentMem = 0.0; + } diff --git a/src/main/java/biz/nellemann/hmci/pcm/SystemFirmware.java b/src/main/java/biz/nellemann/hmci/pcm/SystemFirmware.java new file mode 100644 index 0000000..2938367 --- /dev/null +++ b/src/main/java/biz/nellemann/hmci/pcm/SystemFirmware.java @@ -0,0 +1,16 @@ +package biz.nellemann.hmci.pcm; + +import com.serjltt.moshi.adapters.FirstElement; + +import java.util.ArrayList; +import java.util.List; + +public class SystemFirmware { + + @FirstElement + public Number utilizedProcUnits = 0.0; + + @FirstElement + public Number assignedMem = 0.0; + +} diff --git a/src/main/java/biz/nellemann/hmci/pcm/UtilInfo.java b/src/main/java/biz/nellemann/hmci/pcm/UtilInfo.java index a5e44b3..39dc0ed 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/UtilInfo.java +++ b/src/main/java/biz/nellemann/hmci/pcm/UtilInfo.java @@ -1,5 +1,7 @@ package biz.nellemann.hmci.pcm; +import com.serjltt.moshi.adapters.FirstElement; + import java.util.ArrayList; import java.util.List; @@ -13,6 +15,8 @@ public class UtilInfo { public String mtms = ""; public String name = ""; public String uuid = ""; - public List metricArrayOrder = new ArrayList<>(); + + @FirstElement + public String metricArrayOrder = ""; } diff --git a/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java b/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java index fea35c2..2f9a3d4 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java +++ b/src/main/java/biz/nellemann/hmci/pcm/UtilSample.java @@ -9,6 +9,7 @@ public class UtilSample { public String sampleType = ""; public SampleInfo sampleInfo = new SampleInfo(); + public SystemFirmware systemFirmwareUtil = new SystemFirmware(); public ServerUtil serverUtil = new ServerUtil(); public EnergyUtil energyUtil = new EnergyUtil(); public List viosUtil = new ArrayList<>(); diff --git a/src/main/java/biz/nellemann/hmci/pcm/VirtualFiberChannelAdapter.java b/src/main/java/biz/nellemann/hmci/pcm/VirtualFiberChannelAdapter.java index fd9401d..a946805 100644 --- a/src/main/java/biz/nellemann/hmci/pcm/VirtualFiberChannelAdapter.java +++ b/src/main/java/biz/nellemann/hmci/pcm/VirtualFiberChannelAdapter.java @@ -1,5 +1,7 @@ package biz.nellemann.hmci.pcm; +import com.serjltt.moshi.adapters.FirstElement; + import java.util.ArrayList; import java.util.List; @@ -10,11 +12,23 @@ public class VirtualFiberChannelAdapter { public String physicalLocation = ""; public String physicalPortWWPN = ""; public Integer viosId = 0; - public List numOfReads = new ArrayList<>(); - public List numOfWrites = new ArrayList<>(); - public List readBytes = new ArrayList<>(); - public List writeBytes = new ArrayList<>(); - public List runningSpeed = new ArrayList<>(); - public List transmittedBytes = new ArrayList<>(); + + @FirstElement + public Number numOfReads = 0.0; + + @FirstElement + public Number numOfWrites = 0.0; + + @FirstElement + public Number readBytes = 0.0; + + @FirstElement + public Number writeBytes = 0.0; + + @FirstElement + public Number runningSpeed = 0.0; + + @FirstElement + public Number transmittedBytes = 0.0; } diff --git a/src/test/groovy/biz/nellemann/hmci/LogicalPartitionTest.groovy b/src/test/groovy/biz/nellemann/hmci/LogicalPartitionTest.groovy index 0b08cac..95f9e7a 100644 --- a/src/test/groovy/biz/nellemann/hmci/LogicalPartitionTest.groovy +++ b/src/test/groovy/biz/nellemann/hmci/LogicalPartitionTest.groovy @@ -24,6 +24,29 @@ class LogicalPartitionTest extends Specification { } + + void "test getDetails"() { + + setup: + def testFile = new File(getClass().getResource('/pcm-data-logical-partition.json').toURI()) + def testJson = testFile.getText('UTF-8') + ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166", "Test Name","Test Type", "Test Model", "Test S/N") + LogicalPartition lpar = new LogicalPartition("2DE05DB6-8AD5-448F-8327-0F488D287E82", "9Flash01", "OS400", system) + + when: + lpar.processMetrics(testJson) + List listOfMeasurements = lpar.getDetails() + + then: + listOfMeasurements.size() == 1 + listOfMeasurements.first().fields['affinityScore'] == 100.0 + listOfMeasurements.first().fields['osType'] == 'Linux' + listOfMeasurements.first().fields['type'] == 'AIX/Linux' + listOfMeasurements.first().tags['lparname'] == '9Flash01' + + } + + void "test getMemoryMetrics"() { setup: @@ -39,7 +62,7 @@ class LogicalPartitionTest extends Specification { then: listOfMeasurements.size() == 1 listOfMeasurements.first().fields['logicalMem'] == 8192.000 - listOfMeasurements.first().tags['partition'] == '9Flash01' + listOfMeasurements.first().tags['lparname'] == '9Flash01' } @@ -58,7 +81,7 @@ class LogicalPartitionTest extends Specification { then: listOfMeasurements.size() == 1 listOfMeasurements.first().fields['utilizedProcUnits'] == 0.001 - listOfMeasurements.first().tags['partition'] == '9Flash01' + listOfMeasurements.first().tags['lparname'] == '9Flash01' } @@ -77,7 +100,7 @@ class LogicalPartitionTest extends Specification { then: listOfMeasurements.size() == 1 listOfMeasurements.first().fields['receivedBytes'] == 276.467 - listOfMeasurements.first().tags['sea'] == 'ent5' + listOfMeasurements.first().tags['location'] == 'U9009.42A.21F64EV-V13-C32' } void "test getVirtualFiberChannelAdaptersMetrics"() { @@ -90,7 +113,7 @@ class LogicalPartitionTest extends Specification { when: lpar.processMetrics(testJson) - List listOfMeasurements = lpar.getVirtualFiberChannelAdaptersMetrics() + List listOfMeasurements = lpar.getVirtualFibreChannelAdapterMetrics() then: listOfMeasurements.size() == 4 diff --git a/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy b/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy index cf12150..95a7e8f 100644 --- a/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy +++ b/src/test/groovy/biz/nellemann/hmci/ManagedSystemTest.groovy @@ -24,6 +24,23 @@ class ManagedSystemTest extends Specification { } + void "test getDetails"() { + + setup: + def testFile = new File(getClass().getResource('/pcm-data-managed-system.json').toURI()) + def testJson = testFile.getText('UTF-8') + ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166", "Test Name","Test Type", "Test Model", "Test S/N") + + when: + system.processMetrics(testJson) + List listOfMeasurements = system.getDetails() + + then: + listOfMeasurements.size() == 1 + listOfMeasurements.first().tags['servername'] == 'Test Name' + listOfMeasurements.first().fields['utilizedProcUnits'] == 0.0 + listOfMeasurements.first().fields['assignedMem'] == 5632.0 + } void "test getMemoryMetrics"() { @@ -103,7 +120,6 @@ class ManagedSystemTest extends Specification { listOfMeasurements.size() == 2 listOfMeasurements.first().fields['assignedMem'] == 8192.000 listOfMeasurements.first().fields['utilizedMem'] == 2093.000 - listOfMeasurements.first().fields['utilizedMemPct'] == 25.000 } void "test getViosProcessorMetrics"() { From 00e24b8abb7dea3db90739abd9f65290b59cf4bc Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Thu, 25 Mar 2021 20:48:21 +0100 Subject: [PATCH 2/5] Update example dashboards for v1.2 --- README.md | 68 +- ...naged Systems - Energy-1616701422249.json} | 186 +-- ...s - Logical Partitions-1616701467130.json} | 437 +++++-- ...ed Systems - Resources-1616701489526.json} | 1011 +++++++++-------- ... - Virtual I_O Servers-1616701514116.json} | 333 ++---- 5 files changed, 1150 insertions(+), 885 deletions(-) rename doc/{IBM Power - HMC Managed Systems - Energy-1610631834504.json => IBM Power - HMC Managed Systems - Energy-1616701422249.json} (78%) rename doc/{IBM Power - HMC Managed Systems - Logical Partitions-1610631789596.json => IBM Power - HMC Managed Systems - Logical Partitions-1616701467130.json} (64%) rename doc/{IBM Power - HMC Managed Systems - Resources-1610631925310.json => IBM Power - HMC Managed Systems - Resources-1616701489526.json} (62%) rename doc/{IBM Power - HMC Managed Systems - Virtual I_O Servers-1610631911504.json => IBM Power - HMC Managed Systems - Virtual I_O Servers-1616701514116.json} (74%) diff --git a/README.md b/README.md index 695bd84..b98c832 100644 --- a/README.md +++ b/README.md @@ -12,18 +12,21 @@ Metrics includes: ## Installation and Setup -### HMC Setup Instructions +### Power HMC Setup Instructions - Login to your HMC - Navigate to *Users and Security* - Create a new read-only **hmci** user, which will be used to connect to the REST API. - Click *Manage User Profiles and Access*, edit the newly created hmci user and click *User Properties*: - Enable *Allow remote access via the web* - - Set *Session timeout in minutes* to **0** -- Navigate to *HMC Mangement* and *Console Settings* + - Set *Session timeout minutes* to **120** + - Set *Verify timeout minutes* to **15** + - Set *Idle timeout minutes* to **15** + - Set *Minimum time in days between password changes* to **0** +- Navigate to *HMC Management* and *Console Settings* - Click *Change Performance Monitoring Settings*: - Enable *Performance Monitoring Data Collection for Managed Servers*: **All On** - - Set *Performance Data Storage* to **1** day or more + - Set *Performance Data Storage* to **1** day or preferable more ### InfluxDB and Grafana Setup Instructions @@ -37,39 +40,17 @@ Install InfluxDB on an *LPAR* or other server, which is network accessible by th - Ensure you have **correct date/time** and NTPd running to keep it accurate! - The only requirement for **hmci** is the Java runtime, version 8 (or later) - Install **HMCi** from [downloads](https://bitbucket.org/mnellemann/hmci/downloads/) (rpm, deb or jar) or build from source -- 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 :) +- 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 the *--conf* option. +- Run the *bin/hmci* program in a shell, as a @reboot cron task or setup a proper service :) There is a systemd service example in the *doc/* folder. - 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. - -## 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) - - -## Known problems - -### 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 -written to InfluxDB (which uses the name as key). - -### Renaming partitions - -If you rename a partition, the metrics in InfluxDB will still be available by the old name, and new metrics will be -available by the new name of the partition. There is no easy way to migrate the old data, but you can delete it easily: - - DELETE WHERE partition = 'lpar-name'; - - ## Notes +### Compatibility with nextract Plus + +From version 1.2 *HMCi* is made compatible with the similar [nextract Plus](https://www.ibm.com/support/pages/nextract-plus-hmc-rest-api-performance-statistics) tool from Nigel Griffiths. This means you can use the excellent Grafana [dashboards](https://grafana.com/grafana/dashboards/13819) made by Nigel with *HMCi*. + ### Start InfluxDB and Grafana at boot on RedHat 7+ systemctl enable influxdb @@ -88,6 +69,29 @@ Examples for changing the default InfluxDB retention policy for the hmci databas ALTER RETENTION POLICY "autogen" ON "hmci" DURATION 156w ALTER RETENTION POLICY "autogen" ON "hmci" DURATION 90d +## 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) + +## Known problems + +### 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 +written to InfluxDB (which uses the name as key). + +### Renaming partitions + +If you rename a partition, the metrics in InfluxDB will still be available by the old name, and new metrics will be available by the new name of the partition. There is no easy way to migrate the old data, but you can delete it easily: + + DELETE WHERE partition = 'lpar-name'; + + ## Development Information diff --git a/doc/IBM Power - HMC Managed Systems - Energy-1610631834504.json b/doc/IBM Power - HMC Managed Systems - Energy-1616701422249.json similarity index 78% rename from doc/IBM Power - HMC Managed Systems - Energy-1610631834504.json rename to doc/IBM Power - HMC Managed Systems - Energy-1616701422249.json index 2cdfdf6..1a8c46c 100644 --- a/doc/IBM Power - HMC Managed Systems - Energy-1610631834504.json +++ b/doc/IBM Power - HMC Managed Systems - Energy-1616701422249.json @@ -22,7 +22,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "7.3.1" + "version": "7.4.2" }, { "type": "panel", @@ -61,7 +61,7 @@ "gnetId": null, "graphTooltip": 0, "id": null, - "iteration": 1610631800176, + "iteration": 1616701412999, "links": [], "panels": [ { @@ -70,6 +70,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_HMCI}", + "description": "", "fieldConfig": { "defaults": { "custom": {}, @@ -104,7 +105,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 2, "points": false, "renderer": "flot", @@ -114,7 +115,7 @@ "steppedLine": false, "targets": [ { - "alias": "$tag_system", + "alias": "$tag_servername", "groupBy": [ { "params": [ @@ -124,7 +125,7 @@ }, { "params": [ - "system" + "servername" ], "type": "tag" }, @@ -135,7 +136,7 @@ "type": "fill" } ], - "measurement": "SystemEnergyPower", + "measurement": "server_energy_power", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -144,7 +145,7 @@ [ { "params": [ - "value" + "powerReading" ], "type": "field" }, @@ -156,9 +157,9 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" } ] } @@ -167,7 +168,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Power Usage", + "title": "Power Consumption", "tooltip": { "shared": true, "sort": 0, @@ -183,6 +184,7 @@ }, "yaxes": [ { + "$$hashKey": "object:315", "format": "watt", "label": null, "logBase": 1, @@ -191,6 +193,7 @@ "show": true }, { + "$$hashKey": "object:316", "format": "short", "label": null, "logBase": 1, @@ -250,12 +253,13 @@ "fields": "", "values": false }, + "text": {}, "textMode": "auto" }, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "targets": [ { - "alias": "$tag_system", + "alias": "$tag_servername", "groupBy": [ { "params": [ @@ -265,7 +269,7 @@ }, { "params": [ - "system" + "servername" ], "type": "tag" }, @@ -276,7 +280,7 @@ "type": "fill" } ], - "measurement": "SystemEnergyPower", + "measurement": "server_energy_power", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -285,7 +289,7 @@ [ { "params": [ - "value" + "powerReading" ], "type": "field" }, @@ -297,16 +301,16 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" } ] } ], "timeFrom": null, "timeShift": null, - "title": "Power Usage", + "title": "Power Consumption", "type": "stat" }, { @@ -320,12 +324,13 @@ }, "id": 9, "panels": [], - "repeat": "ManagedSystem", - "title": "Temperatures", + "repeat": "ServerName", + "title": "$ServerName Thermal", "type": "row" }, { "datasource": "${DS_HMCI}", + "description": "Inlet air temperature.", "fieldConfig": { "defaults": { "color": { @@ -374,12 +379,13 @@ "fields": "", "values": false }, + "text": {}, "textMode": "auto" }, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "targets": [ { - "alias": "$tag_system - $tag_name", + "alias": "$tag_servername - $tag_name", "groupBy": [ { "params": [ @@ -389,13 +395,7 @@ }, { "params": [ - "system" - ], - "type": "tag" - }, - { - "params": [ - "name" + "servername" ], "type": "tag" }, @@ -406,7 +406,7 @@ "type": "fill" } ], - "measurement": "SystemEnergyThermal", + "measurement": "server_energy_thermal", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -415,7 +415,7 @@ [ { "params": [ - "value" + "inletTemperature_1" ], "type": "field" }, @@ -427,22 +427,16 @@ ], "tags": [ { - "key": "name", - "operator": "=", - "value": "inletTemperature_1" - }, - { - "condition": "AND", - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" } ] } ], "timeFrom": null, "timeShift": null, - "title": "$ManagedSystem - Inlet", + "title": "$ServerName - Inlet", "type": "stat" }, { @@ -451,23 +445,14 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_HMCI}", + "description": "", "fieldConfig": { "defaults": { "custom": {}, "links": [], - "mappings": [], "thresholds": { "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "steps": [] }, "unit": "celsius" }, @@ -501,7 +486,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 2, "points": false, "renderer": "flot", @@ -511,7 +496,7 @@ "steppedLine": false, "targets": [ { - "alias": "$tag_name", + "alias": "$col", "groupBy": [ { "params": [ @@ -525,12 +510,6 @@ ], "type": "tag" }, - { - "params": [ - "name" - ], - "type": "tag" - }, { "params": [ "linear" @@ -538,36 +517,92 @@ "type": "fill" } ], - "measurement": "SystemEnergyThermal", + "measurement": "server_energy_thermal", "orderByTime": "ASC", "policy": "default", + "query": "SELECT mean(\"cpuTemperature*\") FROM \"server_energy_thermal\" WHERE (\"servername\" =~ /^$ServerName$/) AND $timeFilter GROUP BY time($__interval), \"system\", \"servername\" fill(linear)", + "rawQuery": false, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ - "value" + "cpuTemperature_1" ], "type": "field" }, { "params": [], "type": "mean" + }, + { + "params": [ + "CPU-1" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "cpuTemperature_2" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "CPU-2" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "cpuTemperature_3" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "CPU-3" + ], + "type": "alias" + } + ], + [ + { + "params": [ + "cpuTemperature_4" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "CPU-4" + ], + "type": "alias" } ] ], "tags": [ { - "key": "name", + "key": "servername", "operator": "=~", - "value": "/cpuTemperature_\\d+/" - }, - { - "condition": "AND", - "key": "system", - "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" } ] } @@ -576,7 +611,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem - CPU", + "title": "$ServerName - CPU Temperature", "tooltip": { "shared": true, "sort": 2, @@ -618,7 +653,7 @@ } ], "refresh": "30s", - "schemaVersion": 26, + "schemaVersion": 27, "style": "dark", "tags": [ "POWER" @@ -629,15 +664,16 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\"", + "definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", + "description": null, "error": null, "hide": 0, "includeAll": false, "label": null, "multi": true, - "name": "ManagedSystem", + "name": "ServerName", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\"", + "query": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", "refresh": 1, "regex": "", "skipUrlSync": false, @@ -672,5 +708,5 @@ "timezone": "", "title": "IBM Power - HMC Managed Systems - Energy", "uid": "oHcrgD1Mk", - "version": 10 + "version": 18 } \ No newline at end of file diff --git a/doc/IBM Power - HMC Managed Systems - Logical Partitions-1610631789596.json b/doc/IBM Power - HMC Managed Systems - Logical Partitions-1616701467130.json similarity index 64% rename from doc/IBM Power - HMC Managed Systems - Logical Partitions-1610631789596.json rename to doc/IBM Power - HMC Managed Systems - Logical Partitions-1616701467130.json index 4fc9017..f08bda8 100644 --- a/doc/IBM Power - HMC Managed Systems - Logical Partitions-1610631789596.json +++ b/doc/IBM Power - HMC Managed Systems - Logical Partitions-1616701467130.json @@ -20,7 +20,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "7.3.1" + "version": "7.4.2" }, { "type": "panel", @@ -54,7 +54,7 @@ "gnetId": 1510, "graphTooltip": 0, "id": null, - "iteration": 1610609134341, + "iteration": 1616701430705, "links": [], "panels": [ { @@ -107,7 +107,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -118,7 +118,7 @@ "style": {}, "targets": [ { - "alias": "$tag_partition $tag_name", + "alias": "$tag_servername $tag_lparname", "dsType": "influxdb", "groupBy": [ { @@ -129,13 +129,13 @@ }, { "params": [ - "name" + "lparname" ], "type": "tag" }, { "params": [ - "partition" + "servername" ], "type": "tag" }, @@ -147,7 +147,7 @@ } ], "hide": false, - "measurement": "PartitionProcessor", + "measurement": "lpar_processor", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -156,7 +156,7 @@ [ { "params": [ - "value" + "utilizedProcUnits" ], "type": "field" }, @@ -168,21 +168,15 @@ ], "tags": [ { - "key": "name", - "operator": "=", - "value": "utilizedProcUnits" + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "system", + "key": "lparname", "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" + "value": "/^$LparName$/" } ] } @@ -281,7 +275,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -292,7 +286,7 @@ "style": {}, "targets": [ { - "alias": "$tag_partition - VLAN $tag_vlanId: $tag_name", + "alias": "$tag_lparname - VLAN $tag_vlanId", "dsType": "influxdb", "groupBy": [ { @@ -303,7 +297,7 @@ }, { "params": [ - "name" + "lparname" ], "type": "tag" }, @@ -313,12 +307,6 @@ ], "type": "tag" }, - { - "params": [ - "partition" - ], - "type": "tag" - }, { "params": [ "null" @@ -327,7 +315,7 @@ } ], "hide": false, - "measurement": "PartitionVirtualEthernetAdapters", + "measurement": "lpar_network_virtual", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -336,7 +324,7 @@ [ { "params": [ - "value" + "transferredBytes" ], "type": "field" }, @@ -348,21 +336,15 @@ ], "tags": [ { - "key": "partition", + "key": "lparname", "operator": "=~", - "value": "/^$Partition$/" + "value": "/^$LparName$/" }, { "condition": "AND", - "key": "name", - "operator": "!~", - "value": "/Physical/" - }, - { - "condition": "AND", - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" } ] } @@ -422,8 +404,13 @@ "error": false, "fieldConfig": { "defaults": { + "color": {}, "custom": {}, - "links": [] + "thresholds": { + "mode": "absolute", + "steps": [] + }, + "unit": "Bps" }, "overrides": [] }, @@ -460,7 +447,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -471,7 +458,7 @@ "style": {}, "targets": [ { - "alias": "$tag_partition $tag_wwpn : $tag_name", + "alias": "$tag_lparname writeBytes", "dsType": "influxdb", "groupBy": [ { @@ -482,42 +469,24 @@ }, { "params": [ - "wwpn" + "lparname" ], "type": "tag" - }, - { - "params": [ - "partition" - ], - "type": "tag" - }, - { - "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" } ], "hide": false, - "measurement": "PartitionVirtualFiberChannelAdapters", + "measurement": "lpar_storage_virtual", "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, + "query": "SELECT mean(\"writeBytes\") FROM \"lpar_storage_virtual\" WHERE (\"servername\" =~ /^$ServerName$/ AND \"lparname\" =~ /^$LparName$/) AND $timeFilter GROUP BY time($interval), \"lparname\"", + "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ - "value" + "writeBytes" ], "type": "field" }, @@ -529,21 +498,74 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "name", - "operator": "!=", - "value": "transmittedBytes" + "key": "lparname", + "operator": "=~", + "value": "/^$LparName$/" + } + ] + }, + { + "alias": "$tag_lparname readBytes", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "lparname" + ], + "type": "tag" + } + ], + "hide": false, + "measurement": "lpar_storage_virtual", + "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": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "readBytes" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "*-1" + ], + "type": "math" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "partition", + "key": "lparname", "operator": "=~", - "value": "/^$Partition$/" + "value": "/^$LparName$/" } ] } @@ -637,12 +659,13 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": true + "showThresholdMarkers": true, + "text": {} }, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "targets": [ { - "alias": "$tag_partition", + "alias": "$tag_lparname", "dsType": "influxdb", "groupBy": [ { @@ -653,7 +676,7 @@ }, { "params": [ - "partition" + "lparname" ], "type": "tag" }, @@ -665,7 +688,7 @@ } ], "hide": false, - "measurement": "PartitionAffinityScore", + "measurement": "lpar_details", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -674,7 +697,7 @@ [ { "params": [ - "value" + "affinityScore" ], "type": "field" }, @@ -686,21 +709,15 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "partition", + "key": "lparname", "operator": "=~", - "value": "/^$Partition$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "affinityScore" + "value": "/^$LparName$/" } ] } @@ -709,10 +726,232 @@ "timeShift": null, "title": "NUMA Affinity Score", "type": "gauge" + }, + { + "aliasColors": {}, + "bars": false, + "content": "", + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "color": {}, + "custom": {}, + "thresholds": { + "mode": "absolute", + "steps": [] + }, + "unit": "Bps" + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 1, + "grid": {}, + "gridPos": { + "h": 10, + "w": 12, + "x": 12, + "y": 34 + }, + "hiddenSeries": false, + "id": 12, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "show": false, + "sort": "avg", + "sortDesc": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 1, + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.2", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_lparname writeBytes", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "lparname" + ], + "type": "tag" + } + ], + "hide": false, + "measurement": "lpar_storage_generic", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT mean(\"writeBytes\") FROM \"lpar_storage_virtual\" WHERE (\"servername\" =~ /^$ServerName$/ AND \"lparname\" =~ /^$LparName$/) AND $timeFilter GROUP BY time($interval), \"lparname\"", + "rawQuery": false, + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "writeBytes" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" + }, + { + "condition": "AND", + "key": "lparname", + "operator": "=~", + "value": "/^$LparName$/" + } + ] + }, + { + "alias": "$tag_lparname readBytes", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "lparname" + ], + "type": "tag" + } + ], + "hide": false, + "measurement": "lpar_storage_generic", + "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": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "readBytes" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + }, + { + "params": [ + "*-1" + ], + "type": "math" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" + }, + { + "condition": "AND", + "key": "lparname", + "operator": "=~", + "value": "/^$LparName$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "Virtual Generic Adapters", + "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: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 + } } ], "refresh": "30s", - "schemaVersion": 26, + "schemaVersion": 27, "style": "dark", "tags": [ "Power" @@ -724,16 +963,17 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", + "description": null, "error": null, "hide": 0, "includeAll": true, - "label": "System", + "label": "Server Name", "multi": true, "multiFormat": "regex values", - "name": "ManagedSystem", + "name": "ServerName", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "query": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -750,16 +990,17 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", + "definition": "SHOW TAG VALUES FROM \"lpar_processor\" WITH KEY = \"lparname\" WHERE servername =~ /$ServerName/", + "description": null, "error": null, "hide": 0, "includeAll": true, "label": "Logical Partition", "multi": true, "multiFormat": "regex values", - "name": "Partition", + "name": "LparName", "options": [], - "query": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", + "query": "SHOW TAG VALUES FROM \"lpar_processor\" WITH KEY = \"lparname\" WHERE servername =~ /$ServerName/", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -806,5 +1047,5 @@ "timezone": "browser", "title": "IBM Power - HMC Managed Systems - Logical Partitions", "uid": "Xl7oHESGz", - "version": 6 + "version": 8 } \ No newline at end of file diff --git a/doc/IBM Power - HMC Managed Systems - Resources-1610631925310.json b/doc/IBM Power - HMC Managed Systems - Resources-1616701489526.json similarity index 62% rename from doc/IBM Power - HMC Managed Systems - Resources-1610631925310.json rename to doc/IBM Power - HMC Managed Systems - Resources-1616701489526.json index 4cce76d..e1e98a6 100644 --- a/doc/IBM Power - HMC Managed Systems - Resources-1610631925310.json +++ b/doc/IBM Power - HMC Managed Systems - Resources-1616701489526.json @@ -20,7 +20,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "7.3.1" + "version": "7.4.2" }, { "type": "panel", @@ -60,7 +60,7 @@ "gnetId": 1465, "graphTooltip": 0, "id": null, - "iteration": 1610631917525, + "iteration": 1616701472507, "links": [], "panels": [ { @@ -75,7 +75,7 @@ "id": 20, "panels": [], "repeat": "ManagedSystem", - "title": "$ManagedSystem Overview", + "title": "$ServerName Resource Overview", "type": "row" }, { @@ -86,28 +86,16 @@ "dashes": false, "datasource": "${DS_HMCI}", "decimals": 2, + "description": "", "editable": true, "error": false, "fieldConfig": { "defaults": { - "custom": { - "align": null, - "filterable": false - }, + "custom": {}, "links": [], - "mappings": [], "thresholds": { "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "steps": [] } }, "overrides": [] @@ -142,7 +130,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -153,7 +141,7 @@ "style": {}, "targets": [ { - "alias": "$tag_pool $tag_name", + "alias": "$tag_poolname", "dsType": "influxdb", "groupBy": [ { @@ -164,13 +152,13 @@ }, { "params": [ - "name" + "servername" ], "type": "tag" }, { "params": [ - "pool" + "poolname" ], "type": "tag" }, @@ -182,7 +170,7 @@ } ], "hide": false, - "measurement": "SystemSharedProcessorPool", + "measurement": "server_sharedProcessorPool", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -191,7 +179,7 @@ [ { "params": [ - "value" + "utilizedProcUnits" ], "type": "field" }, @@ -203,15 +191,9 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=~", - "value": "/Units/" + "value": "/^$ServerName$/" } ] } @@ -220,7 +202,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem Shared Processor Pools", + "title": "Shared Processor Pools", "tooltip": { "msResolution": false, "shared": true, @@ -272,23 +254,11 @@ "error": false, "fieldConfig": { "defaults": { - "custom": { - "align": null - }, + "custom": {}, "links": [], - "mappings": [], "thresholds": { "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "steps": [] } }, "overrides": [] @@ -323,7 +293,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -334,7 +304,7 @@ "style": {}, "targets": [ { - "alias": "$tag_name", + "alias": "Utilized", "dsType": "influxdb", "groupBy": [ { @@ -345,7 +315,7 @@ }, { "params": [ - "name" + "servername" ], "type": "tag" }, @@ -357,7 +327,7 @@ } ], "hide": false, - "measurement": "SystemProcessor", + "measurement": "server_processor", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -366,7 +336,7 @@ [ { "params": [ - "value" + "utilizedProcUnits" ], "type": "field" }, @@ -378,16 +348,162 @@ ], "tags": [ { - "condition": "", - "key": "name", + "key": "servername", "operator": "=~", - "value": "/Units/" + "value": "/^$ServerName$/" + } + ] + }, + { + "alias": "Available", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" }, { - "condition": "AND", - "key": "system", + "params": [ + "servername" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "server_processor", + "orderByTime": "ASC", + "policy": "default", + "refId": "B", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "availableProcUnits" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" + } + ] + }, + { + "alias": "Configurable", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "servername" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "server_processor", + "orderByTime": "ASC", + "policy": "default", + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "configurableProcUnits" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" + } + ] + }, + { + "alias": "Total", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "servername" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "server_processor", + "orderByTime": "ASC", + "policy": "default", + "refId": "D", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "totalProcUnits" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" } ] } @@ -396,11 +512,11 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem Processor Units", + "title": "Processor Units", "tooltip": { "msResolution": false, "shared": true, - "sort": 0, + "sort": 2, "value_type": "cumulative" }, "type": "graph", @@ -453,22 +569,10 @@ "description": "", "fieldConfig": { "defaults": { - "custom": { - "align": null - }, - "mappings": [], + "custom": {}, "thresholds": { "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "steps": [] } }, "overrides": [] @@ -508,7 +612,7 @@ } ], "hide": false, - "measurement": "SystemProcessor", + "measurement": "server_processor", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -517,7 +621,7 @@ [ { "params": [ - "value" + "utilizedProcUnits" ], "type": "field" }, @@ -529,22 +633,16 @@ ], "tags": [ { - "key": "name", - "operator": "=", - "value": "utilizedProcUnits" - }, - { - "condition": "AND", - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" } ] } ], "timeFrom": null, "timeShift": null, - "title": "$ManagedSystem Processor Utilization", + "title": "Processor Utilization", "tooltip": { "show": true, "showHistogram": true @@ -569,7 +667,7 @@ "yBucketSize": null }, { - "collapsed": false, + "collapsed": true, "datasource": "${DS_HMCI}", "gridPos": { "h": 1, @@ -578,334 +676,323 @@ "y": 16 }, "id": 22, - "panels": [], + "panels": [ + { + "aliasColors": {}, + "bars": false, + "content": "", + "dashLength": 10, + "dashes": false, + "datasource": "${DS_HMCI}", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 1, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 17 + }, + "hiddenSeries": false, + "id": 16, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": false, + "rightSide": false, + "show": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.2", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_location", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "location" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "vios_storage_FC", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "transmittedBytes" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "$ServerName - Physical Fiber Channel Adapters", + "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:1448", + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:1449", + "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_HMCI}", + "description": "", + "editable": true, + "error": false, + "fieldConfig": { + "defaults": { + "custom": {}, + "links": [] + }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 2, + "grid": {}, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 25 + }, + "hiddenSeries": false, + "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": false, + "hideEmpty": true, + "hideZero": true, + "max": true, + "min": true, + "rightSide": false, + "show": false, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "links": [], + "mode": "", + "nullPointMode": "connected", + "options": { + "alertThreshold": true + }, + "percentage": false, + "pluginVersion": "7.4.2", + "pointradius": 5, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, + "style": {}, + "targets": [ + { + "alias": "$tag_location", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "location" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "vios_network_shared", + "orderByTime": "ASC", + "policy": "default", + "refId": "A", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "transferredBytes" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" + } + ] + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "$ServerName - Shared Adapters", + "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:1686", + "format": "Bps", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "$$hashKey": "object:1687", + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + } + ], "repeat": "ManagedSystem", - "title": "$ManagedSystem Network", + "title": "$ServerName Network", "type": "row" }, - { - "aliasColors": {}, - "bars": false, - "content": "", - "dashLength": 10, - "dashes": false, - "datasource": "${DS_HMCI}", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 17 - }, - "hiddenSeries": false, - "id": 16, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": false, - "show": false, - "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_device transmitted", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "device" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "SystemFiberChannelAdapters", - "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": "name", - "operator": "=", - "value": "transmittedBytes" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "$ManagedSystem - Physical Fiber Channel Adapters", - "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:1448", - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:1449", - "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_HMCI}", - "description": "", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 25 - }, - "hiddenSeries": false, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": false, - "show": false, - "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_device", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$interval" - ], - "type": "time" - }, - { - "params": [ - "device" - ], - "type": "tag" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "SystemSharedAdapters", - "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": "name", - "operator": "=", - "value": "transferredBytes" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "$ManagedSystem - Shared Adapters", - "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:1686", - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "$$hashKey": "object:1687", - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, { "collapsed": false, "datasource": "${DS_HMCI}", @@ -913,12 +1000,12 @@ "h": 1, "w": 24, "x": 0, - "y": 33 + "y": 17 }, "id": 21, "panels": [], "repeat": "ManagedSystem", - "title": "$ManagedSystem By Partition", + "title": "$ServerName By Partition", "type": "row" }, { @@ -945,7 +1032,7 @@ "h": 7, "w": 12, "x": 0, - "y": 34 + "y": 18 }, "hiddenSeries": false, "id": 12, @@ -972,7 +1059,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -983,7 +1070,7 @@ "style": {}, "targets": [ { - "alias": "$tag_partition Utilized Processor Units", + "alias": "$tag_lparname", "dsType": "influxdb", "groupBy": [ { @@ -994,13 +1081,7 @@ }, { "params": [ - "name" - ], - "type": "tag" - }, - { - "params": [ - "partition" + "lparname" ], "type": "tag" }, @@ -1012,7 +1093,7 @@ } ], "hide": false, - "measurement": "PartitionProcessor", + "measurement": "lpar_processor", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -1021,7 +1102,7 @@ [ { "params": [ - "value" + "utilizedProcUnits" ], "type": "field" }, @@ -1033,21 +1114,15 @@ ], "tags": [ { - "key": "name", - "operator": "=", - "value": "utilizedProcUnits" + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "system", + "key": "lparname", "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" + "value": "/^$LparName$/" } ] } @@ -1056,7 +1131,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem Processor Utilization", + "title": "LPAR Processor Utilization", "tooltip": { "msResolution": false, "shared": true, @@ -1098,11 +1173,10 @@ }, { "datasource": "${DS_HMCI}", + "description": "", "fieldConfig": { "defaults": { - "custom": { - "align": null - }, + "custom": {}, "mappings": [], "thresholds": { "mode": "absolute", @@ -1125,7 +1199,7 @@ "h": 7, "w": 12, "x": 12, - "y": 34 + "y": 18 }, "id": 23, "links": [], @@ -1139,12 +1213,13 @@ "fields": "", "values": false }, - "showUnfilled": true + "showUnfilled": true, + "text": {} }, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "targets": [ { - "alias": "$tag_partition", + "alias": "$tag_lparname", "dsType": "influxdb", "groupBy": [ { @@ -1155,13 +1230,13 @@ }, { "params": [ - "name" + "servername" ], "type": "tag" }, { "params": [ - "partition" + "lparname" ], "type": "tag" }, @@ -1173,7 +1248,7 @@ } ], "hide": false, - "measurement": "PartitionMemory", + "measurement": "lpar_memory", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -1182,7 +1257,7 @@ [ { "params": [ - "value" + "logicalMem" ], "type": "field" }, @@ -1194,33 +1269,27 @@ ], "tags": [ { - "key": "name", - "operator": "=", - "value": "logicalMem" + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "system", + "key": "lparname", "operator": "=~", - "value": "/^$ManagedSystem$/" - }, - { - "condition": "AND", - "key": "partition", - "operator": "=~", - "value": "/^$Partition$/" + "value": "/^$LparName$/" } ] } ], "timeFrom": null, "timeShift": null, - "title": "$ManagedSystem Memory Usage", + "title": "LPAR Memory Usage", "type": "bargauge" } ], "refresh": "30s", - "schemaVersion": 26, + "schemaVersion": 27, "style": "dark", "tags": [ "Power" @@ -1232,16 +1301,17 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", + "description": null, "error": null, "hide": 0, "includeAll": false, - "label": "System", + "label": "Server", "multi": true, "multiFormat": "regex values", - "name": "ManagedSystem", + "name": "ServerName", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "query": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -1258,16 +1328,17 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", + "definition": "SHOW TAG VALUES FROM \"lpar_processor\" WITH KEY = \"lparname\" WHERE servername =~ /$ServerName/", + "description": null, "error": null, "hide": 0, "includeAll": true, - "label": "Logical Partition", + "label": "Partition", "multi": true, "multiFormat": "regex values", - "name": "Partition", + "name": "LparName", "options": [], - "query": "SHOW TAG VALUES FROM \"PartitionProcessor\" WITH KEY = \"partition\" WHERE system =~ /$ManagedSystem/", + "query": "SHOW TAG VALUES FROM \"lpar_processor\" WITH KEY = \"lparname\" WHERE servername =~ /$ServerName/", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -1314,5 +1385,5 @@ "timezone": "browser", "title": "IBM Power - HMC Managed Systems - Resources", "uid": "ClJhHPIGz", - "version": 12 + "version": 19 } \ No newline at end of file diff --git a/doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1610631911504.json b/doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1616701514116.json similarity index 74% rename from doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1610631911504.json rename to doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1616701514116.json index caa0c74..ecc65cc 100644 --- a/doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1610631911504.json +++ b/doc/IBM Power - HMC Managed Systems - Virtual I_O Servers-1616701514116.json @@ -20,7 +20,7 @@ "type": "grafana", "id": "grafana", "name": "Grafana", - "version": "7.3.1" + "version": "7.4.2" }, { "type": "panel", @@ -54,11 +54,12 @@ "gnetId": 1465, "graphTooltip": 0, "id": null, - "iteration": 1610631883782, + "iteration": 1616701495725, "links": [], "panels": [ { "datasource": "${DS_HMCI}", + "description": "", "fieldConfig": { "defaults": { "custom": {}, @@ -98,9 +99,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": true + "showThresholdMarkers": true, + "text": {} }, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "targets": [ { "alias": "$tag_vios", @@ -114,13 +116,7 @@ }, { "params": [ - "vios" - ], - "type": "tag" - }, - { - "params": [ - "name" + "viosname" ], "type": "tag" }, @@ -132,7 +128,7 @@ } ], "hide": false, - "measurement": "SystemViosMemory", + "measurement": "vios_memory", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -141,7 +137,7 @@ [ { "params": [ - "value" + "utilizedPct" ], "type": "field" }, @@ -153,28 +149,22 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "vios", + "key": "viosname", "operator": "=~", - "value": "/^$Vios$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "utilizedMemPct" + "value": "/^$ViosName$/" } ] } ], "timeFrom": null, "timeShift": null, - "title": "$ManagedSystem - $Vios - Memory", + "title": "$ServerName - $ViosName Memory", "type": "gauge" }, { @@ -184,6 +174,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_HMCI}", + "description": "", "editable": true, "error": false, "fieldConfig": { @@ -224,7 +215,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -235,7 +226,7 @@ "style": {}, "targets": [ { - "alias": "$tag_vios: $tag_name", + "alias": "$tag_viosname", "dsType": "influxdb", "groupBy": [ { @@ -246,7 +237,7 @@ }, { "params": [ - "vios" + "viosname" ], "type": "tag" }, @@ -264,7 +255,7 @@ } ], "hide": false, - "measurement": "SystemViosProcessor", + "measurement": "vios_processor", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -273,7 +264,7 @@ [ { "params": [ - "value" + "utilizedProcUnits" ], "type": "field" }, @@ -285,21 +276,15 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "vios", + "key": "viosname", "operator": "=~", - "value": "/^$Vios$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=~", - "value": "/utilized/" + "value": "/^$ViosName$/" } ] } @@ -308,7 +293,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem - $Vios - Processors", + "title": "$ServerName - $ViosName - Processors", "tooltip": { "msResolution": false, "shared": true, @@ -355,6 +340,7 @@ "dashLength": 10, "dashes": false, "datasource": "${DS_HMCI}", + "description": "", "editable": true, "error": false, "fieldConfig": { @@ -395,7 +381,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -406,7 +392,7 @@ "style": {}, "targets": [ { - "alias": "$tag_vios: $tag_id ($tag_device)", + "alias": "$tag_viosname: $tag_id ($tag_location)", "dsType": "influxdb", "groupBy": [ { @@ -417,13 +403,13 @@ }, { "params": [ - "vios" + "viosname" ], "type": "tag" }, { "params": [ - "device" + "location" ], "type": "tag" }, @@ -441,7 +427,7 @@ } ], "hide": false, - "measurement": "SystemFiberChannelAdapters", + "measurement": "vios_storage_FC", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -450,7 +436,7 @@ [ { "params": [ - "value" + "transmittedBytes" ], "type": "field" }, @@ -462,21 +448,15 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "vios", + "key": "viosname", "operator": "=~", - "value": "/^$Vios$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=", - "value": "transmittedBytes" + "value": "/^$ViosName$/" } ] } @@ -485,7 +465,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem - $Vios - Fiber Channel Adapters", + "title": "$ServerName - $ViosName - Fiber Channel Adapters", "tooltip": { "msResolution": false, "shared": true, @@ -546,8 +526,8 @@ "fillGradient": 1, "grid": {}, "gridPos": { - "h": 10, - "w": 12, + "h": 11, + "w": 24, "x": 0, "y": 20 }, @@ -573,7 +553,7 @@ "alertThreshold": true }, "percentage": false, - "pluginVersion": "7.3.1", + "pluginVersion": "7.4.2", "pointradius": 5, "points": false, "renderer": "flot", @@ -584,7 +564,7 @@ "style": {}, "targets": [ { - "alias": "$tag_vios: $tag_name", + "alias": "$tag_viosname - shared", "dsType": "influxdb", "groupBy": [ { @@ -595,13 +575,7 @@ }, { "params": [ - "vios" - ], - "type": "tag" - }, - { - "params": [ - "name" + "viosname" ], "type": "tag" }, @@ -613,7 +587,7 @@ } ], "hide": false, - "measurement": "SystemVirtualEthernetAdapters", + "measurement": "vios_network_shared", "orderByTime": "ASC", "policy": "default", "refId": "A", @@ -622,7 +596,7 @@ [ { "params": [ - "value" + "transferredBytes" ], "type": "field" }, @@ -634,128 +608,20 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "vios", + "key": "viosname", "operator": "=~", - "value": "/^$Vios$/" - }, - { - "condition": "AND", - "key": "name", - "operator": "=~", - "value": "/.*Bytes/" + "value": "/^$ViosName$/" } ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "$ManagedSystem - $Vios - Virtual Ethernet Adapters", - "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": "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": false - } - ], - "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": 2, - "grid": {}, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 20 - }, - "hiddenSeries": false, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": true, - "rightSide": false, - "show": false, - "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", + "alias": "$tag_viosname - generic", "dsType": "influxdb", "groupBy": [ { @@ -766,13 +632,7 @@ }, { "params": [ - "vios" - ], - "type": "tag" - }, - { - "params": [ - "name" + "viosname" ], "type": "tag" }, @@ -784,16 +644,16 @@ } ], "hide": false, - "measurement": "SystemSharedAdapters", + "measurement": "vios_network_generic", "orderByTime": "ASC", "policy": "default", - "refId": "A", + "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ - "value" + "transferredBytes" ], "type": "field" }, @@ -805,21 +665,72 @@ ], "tags": [ { - "key": "system", + "key": "servername", "operator": "=~", - "value": "/^$ManagedSystem$/" + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "vios", + "key": "viosname", "operator": "=~", - "value": "/^$Vios$/" + "value": "/^$ViosName$/" + } + ] + }, + { + "alias": "$tag_viosname - virtual", + "dsType": "influxdb", + "groupBy": [ + { + "params": [ + "$interval" + ], + "type": "time" + }, + { + "params": [ + "viosname" + ], + "type": "tag" + }, + { + "params": [ + "null" + ], + "type": "fill" + } + ], + "hide": false, + "measurement": "vios_network_virtual", + "orderByTime": "ASC", + "policy": "default", + "refId": "C", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "transferredBytes" + ], + "type": "field" + }, + { + "params": [], + "type": "mean" + } + ] + ], + "tags": [ + { + "key": "servername", + "operator": "=~", + "value": "/^$ServerName$/" }, { "condition": "AND", - "key": "name", - "operator": "=", - "value": "transferredBytes" + "key": "viosname", + "operator": "=~", + "value": "/^$ViosName$/" } ] } @@ -828,7 +739,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "$ManagedSystem - $Vios - Shared Adapters", + "title": "$ServerName - $ViosName - Network", "tooltip": { "msResolution": false, "shared": true, @@ -870,7 +781,7 @@ } ], "refresh": "30s", - "schemaVersion": 26, + "schemaVersion": 27, "style": "dark", "tags": [ "Power", @@ -884,16 +795,17 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "definition": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", + "description": null, "error": null, "hide": 0, "includeAll": false, - "label": "System", + "label": "Server", "multi": true, "multiFormat": "regex values", - "name": "ManagedSystem", + "name": "ServerName", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemProcessor\" WITH KEY = \"system\" WHERE time > now() - 24h", + "query": "SHOW TAG VALUES FROM \"server_processor\" WITH KEY = \"servername\" WHERE time > now() - 24h", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -910,16 +822,17 @@ "allValue": null, "current": {}, "datasource": "${DS_HMCI}", - "definition": "SHOW TAG VALUES FROM \"SystemFiberChannelAdapters\" WITH KEY = \"vios\" WHERE system =~ /$ManagedSystem/", + "definition": "SHOW TAG VALUES FROM \"vios_details\" WITH KEY = \"viosname\" WHERE servername =~ /$ServerName/ AND time > now() - 24h", + "description": null, "error": null, "hide": 0, "includeAll": true, "label": "Virtual I/O Server", "multi": true, "multiFormat": "regex values", - "name": "Vios", + "name": "ViosName", "options": [], - "query": "SHOW TAG VALUES FROM \"SystemFiberChannelAdapters\" WITH KEY = \"vios\" WHERE system =~ /$ManagedSystem/", + "query": "SHOW TAG VALUES FROM \"vios_details\" WITH KEY = \"viosname\" WHERE servername =~ /$ServerName/ AND time > now() - 24h", "refresh": 1, "refresh_on_load": false, "regex": "", @@ -966,5 +879,5 @@ "timezone": "browser", "title": "IBM Power - HMC Managed Systems - Virtual I/O Servers", "uid": "DDNEv5vGz", - "version": 10 + "version": 11 } \ No newline at end of file From 5ba667806264563fd3221089e2c25b4a8a6b6759 Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Thu, 25 Mar 2021 21:09:21 +0100 Subject: [PATCH 3/5] Cleanup README. --- README.md | 60 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index b98c832..a74253e 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # HMC Insights -**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 can be used to visualize the metrics from InfluxDB. This software is not supported or endorsed by International Business Machines (IBM). +**HMCi** is a utility that collects metrics from one or more *IBM Power HMC*. The metric data is processed and saved into an InfluxDB time-series database. Grafana can be used to visualize the metrics from InfluxDB. This software is free to use and icensed under the Apache [License](https://bitbucket.org/mnellemann/hmci/src/master/LICENSE), Version 2.0, but is not supported or endorsed by International Business Machines (IBM). Metrics includes: -- *Managed Systems* - the physical Power servers -- *Logical Partitions* - the virtualized servers running AIX, Linux and IBM-i (AS/400) -- *Virtual I/O Servers* - the i/o partition(s) taking care of network and storage -- *Energy* - power consumption and temperatures (needs to be enabled and not available for E880, E980) + + - *Managed Systems* - the physical Power servers + - *Logical Partitions* - the virtualized servers running AIX, Linux and IBM-i (AS/400) + - *Virtual I/O Servers* - the i/o partition(s) taking care of network and storage + - *Energy* - power consumption and temperatures (needs to be enabled and not available for E880, E980) ![architecture](https://bitbucket.org/mnellemann/hmci/downloads/HMCi.png) @@ -53,12 +54,13 @@ From version 1.2 *HMCi* is made compatible with the similar [nextract Plus](http ### Start InfluxDB and Grafana at boot on RedHat 7+ - systemctl enable influxdb - systemctl start influxdb - - systemctl enable grafana-server - systemctl start grafana-server +```shell +systemctl enable influxdb +systemctl start influxdb +systemctl enable grafana-server +systemctl start grafana-server +``` ### InfluxDB Retention Policy @@ -66,17 +68,19 @@ Per default the *hmci* influx database has no retention policy, so data will be 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 +```text +ALTER RETENTION POLICY "autogen" ON "hmci" DURATION 156w +ALTER RETENTION POLICY "autogen" ON "hmci" DURATION 90d +``` ## 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) + - [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) ## Known problems @@ -89,9 +93,9 @@ written to InfluxDB (which uses the name as key). If you rename a partition, the metrics in InfluxDB will still be available by the old name, and new metrics will be available by the new name of the partition. There is no easy way to migrate the old data, but you can delete it easily: - DELETE WHERE partition = 'lpar-name'; - - +```text +DELETE WHERE partition = 'lpar-name'; +``` ## Development Information @@ -102,8 +106,9 @@ You need Java (JDK) version 8 or later to build hmci. Use the gradle build tool, which will download all required dependencies: - ./gradlew clean build - +```shell +./gradlew clean build +``` ### Local Testing @@ -111,18 +116,23 @@ Use the gradle build tool, which will download all required dependencies: Start the InfluxDB container: - docker run --name=influxdb --rm -d -p 8086:8086 influxdb:1.8-alpine +```shell +docker run --name=influxdb --rm -d -p 8086:8086 influxdb:1.8-alpine +``` To execute the Influx client from within the container: - docker exec -it influxdb influx - +```shell +docker exec -it influxdb influx +``` #### Grafana container Start the Grafana container, linking it to the InfluxDB container: - docker run --name grafana --link influxdb:influxdb --rm -d -p 3000:3000 grafana/grafana:7.1.3 +```shell +docker run --name grafana --link influxdb:influxdb --rm -d -p 3000:3000 grafana/grafana:7.1.3 +``` Setup Grafana to connect to the InfluxDB container by defining a new datasource on URL *http://influxdb:8086* named *hmci*. From 2157ee477b663368a8f939c8711dc7bc8f104e1e Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Thu, 25 Mar 2021 21:21:13 +0100 Subject: [PATCH 4/5] Update reference to the Apache 2.0 LICENSE. --- README.md | 2 +- .../java/biz/nellemann/hmci/Configuration.java | 15 +++++++++++++++ .../java/biz/nellemann/hmci/VersionProvider.java | 15 +++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a74253e..1c25e03 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*. The metric data is processed and saved into an InfluxDB time-series database. Grafana can be used to visualize the metrics from InfluxDB. This software is free to use and icensed under the Apache [License](https://bitbucket.org/mnellemann/hmci/src/master/LICENSE), Version 2.0, but is not supported or endorsed by International Business Machines (IBM). +**HMCi** is a utility that collects metrics from one or more *IBM Power HMC*. The metric data is processed and saved into an InfluxDB time-series database. Grafana can be used to visualize the metrics from InfluxDB. This software is free to use and is licensed under the [Apache 2.0 License](https://bitbucket.org/mnellemann/syslogd/src/master/LICENSE), but is not supported or endorsed by International Business Machines (IBM). Metrics includes: diff --git a/src/main/java/biz/nellemann/hmci/Configuration.java b/src/main/java/biz/nellemann/hmci/Configuration.java index 0c99c54..893460a 100644 --- a/src/main/java/biz/nellemann/hmci/Configuration.java +++ b/src/main/java/biz/nellemann/hmci/Configuration.java @@ -1,3 +1,18 @@ +/* + * 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 org.tomlj.Toml; diff --git a/src/main/java/biz/nellemann/hmci/VersionProvider.java b/src/main/java/biz/nellemann/hmci/VersionProvider.java index 9af9148..0651de2 100644 --- a/src/main/java/biz/nellemann/hmci/VersionProvider.java +++ b/src/main/java/biz/nellemann/hmci/VersionProvider.java @@ -1,3 +1,18 @@ +/* + * 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 picocli.CommandLine; From ea6e163670242c65e20e40aad8291e00ae5d7f65 Mon Sep 17 00:00:00 2001 From: Mark Nellemann Date: Fri, 26 Mar 2021 13:26:03 +0100 Subject: [PATCH 5/5] Corrections of influx series names. --- src/main/java/biz/nellemann/hmci/InfluxClient.java | 13 +++++++------ .../java/biz/nellemann/hmci/LogicalPartition.java | 4 +++- src/main/java/biz/nellemann/hmci/ManagedSystem.java | 5 +++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/biz/nellemann/hmci/InfluxClient.java b/src/main/java/biz/nellemann/hmci/InfluxClient.java index 61fe8c9..ad32b16 100644 --- a/src/main/java/biz/nellemann/hmci/InfluxClient.java +++ b/src/main/java/biz/nellemann/hmci/InfluxClient.java @@ -228,11 +228,10 @@ class InfluxClient { return processMeasurementMap(metrics, timestamp, "vios_storage_FC"); } - /* private static List getSystemViosSharedStoragePools(ManagedSystem system, Instant timestamp) { List metrics = system.getViosStorageSharedStoragePools(); return processMeasurementMap(metrics, timestamp, "vios_storage_SSP"); - }*/ + } private static List getSystemViosStoragePhysicalAdapters(ManagedSystem system, Instant timestamp) { List metrics = system.getViosStoragePhysicalAdapters(); @@ -241,7 +240,7 @@ class InfluxClient { private static List getSystemViosStorageVirtualAdapters(ManagedSystem system, Instant timestamp) { List metrics = system.getViosStorageVirtualAdapters(); - return processMeasurementMap(metrics, timestamp, "vios_storage_virtual"); + return processMeasurementMap(metrics, timestamp, "vios_storage_vFC"); } @@ -290,17 +289,19 @@ class InfluxClient { private static List getPartitionNetworkVirtual(LogicalPartition partition, Instant timestamp) { List metrics = partition.getVirtualEthernetAdapterMetrics(); - return processMeasurementMap(metrics, timestamp, "lpar_network_virtual"); + return processMeasurementMap(metrics, timestamp, "lpar_net_virtual"); // Not 'network' } + // TODO: lpar_net_sriov + private static List getPartitionStorageVirtualGeneric(LogicalPartition partition, Instant timestamp) { List metrics = partition.getVirtualGenericAdapterMetrics(); - return processMeasurementMap(metrics, timestamp, "lpar_storage_generic"); + return processMeasurementMap(metrics, timestamp, "lpar_storage_virtual"); } private static List getPartitionStorageVirtualFibreChannel(LogicalPartition partition, Instant timestamp) { List metrics = partition.getVirtualFibreChannelAdapterMetrics(); - return processMeasurementMap(metrics, timestamp, "lpar_storage_virtual"); + return processMeasurementMap(metrics, timestamp, "lpar_storage_vFC"); } diff --git a/src/main/java/biz/nellemann/hmci/LogicalPartition.java b/src/main/java/biz/nellemann/hmci/LogicalPartition.java index 8fb1bcc..4bcc2fb 100644 --- a/src/main/java/biz/nellemann/hmci/LogicalPartition.java +++ b/src/main/java/biz/nellemann/hmci/LogicalPartition.java @@ -208,7 +208,9 @@ class LogicalPartition extends MetaSystem { fieldsMap.put("numOfWrites", adapter.numOfWrites); fieldsMap.put("writeBytes", adapter.writeBytes); fieldsMap.put("readBytes", adapter.readBytes); - //fieldsMap.put("transmittedBytes", adapter.transmittedBytes); + fieldsMap.put("runningSpeed", adapter.runningSpeed); + fieldsMap.put("transmittedBytes", adapter.transmittedBytes); + fieldsMap.put("transferredByte", adapter.transmittedBytes); // TODO: Must be error in dashboard, remove when checked. //fieldsMap.put("wwpn", adapter.wwpn); //fieldsMap.put("wwpn2", adapter.wwpn2); log.trace("getVirtualFibreChannelAdapterMetrics() - fields: " + fieldsMap.toString()); diff --git a/src/main/java/biz/nellemann/hmci/ManagedSystem.java b/src/main/java/biz/nellemann/hmci/ManagedSystem.java index 5a0d05a..da61972 100644 --- a/src/main/java/biz/nellemann/hmci/ManagedSystem.java +++ b/src/main/java/biz/nellemann/hmci/ManagedSystem.java @@ -450,8 +450,8 @@ class ManagedSystem extends MetaSystem { List getViosStorageSharedStoragePools() { List list = new ArrayList<>(); +/* metrics.systemUtil.sample.viosUtil.forEach( vios -> { - log.trace("getViosStorageSharedStoragePools() - VIOS: " + vios.name); vios.storage.fiberChannelAdapters.forEach( adapter -> { @@ -474,8 +474,9 @@ class ManagedSystem extends MetaSystem { list.add(new Measurement(tagsMap, fieldsMap)); }); + log.trace("getViosStorageSharedStoragePools() - VIOS: " + vios.name); }); - +*/ return list; }