Initial work on preparing metrics and writing those to InfluxDB
This commit is contained in:
parent
05909c7267
commit
30726da763
26
README.md
Normal file
26
README.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
# HMC Insights
|
||||
|
||||
Small Java-based utility to fetch metrics from one or more HMC's and push those to an InfluxDB time-series database.
|
||||
|
||||
## TODO Liste
|
||||
|
||||
- Use TOML for configuration file, to support multiple HMC's - https://github.com/tomlj/tomlj
|
||||
|
||||
|
||||
## Usage Instructions
|
||||
|
||||
...
|
||||
|
||||
## Development Information
|
||||
|
||||
|
||||
### InfluxDB for test and development
|
||||
|
||||
Start the influxdb container
|
||||
|
||||
docker run --name=influxdb -d -p 8086:8086 influxdb
|
||||
|
||||
|
||||
Use the influx client from the container
|
||||
|
||||
docker exec -it influxdb influx
|
|
@ -25,6 +25,7 @@ dependencies {
|
|||
implementation 'org.codehaus.groovy:groovy-all:3.0.5'
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.8.0'
|
||||
implementation 'org.influxdb:influxdb-java:2.19'
|
||||
// implementation 'org.tomlj:tomlj:1.0.0'
|
||||
implementation 'org.slf4j:slf4j-api:1.7.+'
|
||||
runtimeOnly 'ch.qos.logback:logback-classic:1.+'
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import groovy.util.logging.Slf4j
|
|||
class App {
|
||||
|
||||
HmcClient hmc
|
||||
InfluxClient influx
|
||||
|
||||
Map<String,ManagedSystem> systems = new HashMap<String, ManagedSystem>()
|
||||
Map<String, LogicalPartition> partitions = new HashMap<String, LogicalPartition>()
|
||||
|
@ -19,36 +20,40 @@ class App {
|
|||
def cli = new CliBuilder()
|
||||
cli.h(longOpt: 'help', 'display usage')
|
||||
cli.v(longOpt: 'version', 'display version')
|
||||
cli.c(longOpt: 'config', args: 1, required: true, defaultValue: '~/.config/hmci.properties', 'configuration file')
|
||||
cli.c(longOpt: 'config', args: 1, required: true, defaultValue: '~/.config/hmci.toml', 'configuration file')
|
||||
|
||||
|
||||
OptionAccessor options = cli.parse(args)
|
||||
if (options.h) cli.usage()
|
||||
|
||||
if(options.c) {
|
||||
//println("TODO: Use configuration file: " + options.config)
|
||||
File configurationFile = new File((String)options.config)
|
||||
if(configurationFile.exists()) {
|
||||
log.info("Configuration file found at: " + configurationFile.toString())
|
||||
} else {
|
||||
log.warn("No configuration file found at: " + configurationFile.toString())
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Read configuration file or create new empty file,
|
||||
// pass the properties or configuration bean to App.
|
||||
|
||||
println("HMC Insights")
|
||||
|
||||
hmc = new HmcClient("https://10.32.64.39:12443", "hmci", "hmcihmci")
|
||||
hmc.login()
|
||||
scanHmc()
|
||||
getMetricsForSystems()
|
||||
//getMetricsForPartitions()
|
||||
|
||||
scan()
|
||||
|
||||
metricsForSystems()
|
||||
|
||||
metricsForPartitions()
|
||||
writeMetricsForManagedSystems()
|
||||
|
||||
hmc?.logoff()
|
||||
influx?.logoff()
|
||||
|
||||
}
|
||||
|
||||
|
||||
void scan() {
|
||||
void scanHmc() {
|
||||
|
||||
try {
|
||||
|
||||
|
@ -79,7 +84,7 @@ class App {
|
|||
}
|
||||
|
||||
|
||||
void metricsForSystems() {
|
||||
void getMetricsForSystems() {
|
||||
|
||||
try {
|
||||
|
||||
|
@ -105,7 +110,7 @@ class App {
|
|||
|
||||
}
|
||||
|
||||
void metricsForPartitions() {
|
||||
void getMetricsForPartitions() {
|
||||
|
||||
try {
|
||||
|
||||
|
@ -132,6 +137,18 @@ class App {
|
|||
}
|
||||
}
|
||||
|
||||
void writeMetricsForManagedSystems() {
|
||||
|
||||
if(!influx) {
|
||||
influx = new InfluxClient("http://127.0.0.1:8086", "root", "", "hmci")
|
||||
influx.login()
|
||||
}
|
||||
|
||||
systems.each {systemId, system ->
|
||||
influx.writeManagedSystem(system)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void main(String... args) {
|
||||
new App(args)
|
||||
|
|
|
@ -109,9 +109,6 @@ class HmcClient {
|
|||
* @return
|
||||
*/
|
||||
Map<String, ManagedSystem> getManagedSystems() {
|
||||
|
||||
log.debug("getManagedSystems()")
|
||||
|
||||
URL url = new URL(String.format("%s/rest/api/uom/ManagedSystem", baseUrl))
|
||||
Response response = getResponse(url)
|
||||
String responseBody = response.body.string()
|
||||
|
@ -121,13 +118,15 @@ class HmcClient {
|
|||
feed?.entry?.each { entry ->
|
||||
entry.content.each { content ->
|
||||
content.ManagedSystem.each { system ->
|
||||
ManagedSystem managedSystem = new ManagedSystem(entry.id as String)
|
||||
managedSystem.name = system.SystemName
|
||||
managedSystem.model = system.MachineTypeModelAndSerialNumber.Model
|
||||
managedSystem.type = system.MachineTypeModelAndSerialNumber.MachineType
|
||||
managedSystem.serialNumber = system.MachineTypeModelAndSerialNumber.SerialNumber
|
||||
ManagedSystem managedSystem = new ManagedSystem(
|
||||
entry.id as String,
|
||||
system.SystemName as String,
|
||||
system.MachineTypeModelAndSerialNumber?.MachineType as String,
|
||||
system.MachineTypeModelAndSerialNumber?.Model as String,
|
||||
system.MachineTypeModelAndSerialNumber?.SerialNumber as String
|
||||
)
|
||||
managedSystemsMap.put(managedSystem.id, managedSystem)
|
||||
log.debug("getManagedSystems() " + managedSystem.toString())
|
||||
log.debug("getManagedSystems() - Found system: " + managedSystem.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -144,8 +143,6 @@ class HmcClient {
|
|||
* @return
|
||||
*/
|
||||
Map<String, LogicalPartition> getLogicalPartitionsForManagedSystemWithId(String systemId) {
|
||||
log.debug("getLogicalPartitionsForManagedSystem() - systemId: " + systemId)
|
||||
|
||||
URL url = new URL(String.format("%s/rest/api/uom/ManagedSystem/%s/LogicalPartition", baseUrl, systemId))
|
||||
Response response = getResponse(url)
|
||||
String responseBody = response.body.string()
|
||||
|
@ -157,9 +154,12 @@ class HmcClient {
|
|||
entry.content.each { content ->
|
||||
//log.debug("Content")
|
||||
content.LogicalPartition.each { partition ->
|
||||
LogicalPartition logicalPartition = new LogicalPartition(partition.PartitionUUID as String, systemId)
|
||||
logicalPartition.name = partition.PartitionName
|
||||
logicalPartition.type = partition.PartitionType
|
||||
LogicalPartition logicalPartition = new LogicalPartition(
|
||||
partition.PartitionUUID as String,
|
||||
systemId as String,
|
||||
partition.PartitionName as String,
|
||||
partition.PartitionType as String
|
||||
)
|
||||
partitionMap.put(logicalPartition.id, logicalPartition)
|
||||
log.debug("getLogicalPartitionsForManagedSystem() - Found partition: " + logicalPartition.toString())
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ class HmcClient {
|
|||
*/
|
||||
String getPcmDataForManagedSystem(String systemId) {
|
||||
log.debug("getPcmDataForManagedSystem() - " + systemId)
|
||||
URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/ProcessedMetrics?NoOfSamples=1", baseUrl, systemId))
|
||||
URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/ProcessedMetrics?NoOfSamples=0", baseUrl, systemId))
|
||||
Response response = getResponse(url)
|
||||
String responseBody = response.body.string()
|
||||
|
||||
|
@ -206,7 +206,7 @@ class HmcClient {
|
|||
String getPcmDataForLogicalPartition(String systemId, String partitionId) {
|
||||
|
||||
log.debug(String.format("getPcmDataForLogicalPartition() - %s @ %s", partitionId, systemId))
|
||||
URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/LogicalPartition/%s/ProcessedMetrics?NoOfSamples=1", baseUrl, systemId, partitionId))
|
||||
URL url = new URL(String.format("%s/rest/api/pcm/ManagedSystem/%s/LogicalPartition/%s/ProcessedMetrics?NoOfSamples=0", baseUrl, systemId, partitionId))
|
||||
Response response = getResponse(url)
|
||||
String responseBody = response.body.string()
|
||||
|
||||
|
|
|
@ -1,5 +1,159 @@
|
|||
package biz.nellemann.hmci
|
||||
|
||||
import groovy.util.logging.Slf4j
|
||||
import org.influxdb.dto.BatchPoints
|
||||
|
||||
import java.time.Instant
|
||||
import java.util.concurrent.TimeUnit
|
||||
import org.influxdb.InfluxDB
|
||||
import org.influxdb.BatchOptions
|
||||
import org.influxdb.InfluxDBFactory
|
||||
import org.influxdb.dto.QueryResult
|
||||
import org.influxdb.dto.Query
|
||||
import org.influxdb.dto.Point
|
||||
|
||||
|
||||
@Slf4j
|
||||
class InfluxClient {
|
||||
|
||||
final String url
|
||||
final String username
|
||||
final String password
|
||||
final String database
|
||||
|
||||
InfluxDB influxDB
|
||||
|
||||
InfluxClient(String url, String username, String password, String database) {
|
||||
this.url = url
|
||||
this.username = username
|
||||
this.password = password
|
||||
this.database = database
|
||||
}
|
||||
|
||||
void login() {
|
||||
if(!influxDB) {
|
||||
influxDB = InfluxDBFactory.connect(url, username, password);
|
||||
createDatabase()
|
||||
}
|
||||
}
|
||||
|
||||
void logoff() {
|
||||
influxDB?.close();
|
||||
}
|
||||
|
||||
void createDatabase() {
|
||||
try {
|
||||
// Create a database...
|
||||
// https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/
|
||||
influxDB.query(new Query("CREATE DATABASE " + database));
|
||||
influxDB.setDatabase(database);
|
||||
|
||||
// ... and a retention policy, if necessary.
|
||||
// https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/
|
||||
/*String retentionPolicyName = "one_day_only";
|
||||
influxDB.query(new Query("CREATE RETENTION POLICY " + retentionPolicyName
|
||||
+ " ON " + database + " DURATION 1d REPLICATION 1 DEFAULT"));
|
||||
influxDB.setRetentionPolicy(retentionPolicyName);*/
|
||||
|
||||
// Enable batch writes to get better performance.
|
||||
influxDB.enableBatch(BatchOptions.DEFAULTS);
|
||||
} catch(Exception e) {
|
||||
log.error("createDatabase()", e)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void write() {
|
||||
// Write points to InfluxDB.
|
||||
influxDB.write(Point.measurement("h2o_feet")
|
||||
.time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
|
||||
.tag("location", "santa_monica")
|
||||
.addField("level description", "below 3 feet")
|
||||
.addField("water_level", 2.064d)
|
||||
.build());
|
||||
|
||||
influxDB.write(Point.measurement("h2o_feet")
|
||||
.time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
|
||||
.tag("location", "coyote_creek")
|
||||
.addField("level description", "between 6 and 9 feet")
|
||||
.addField("water_level", 8.12d)
|
||||
.build());
|
||||
|
||||
}
|
||||
|
||||
|
||||
void read() {
|
||||
// Query your data using InfluxQL.
|
||||
// https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/#the-basic-select-statement
|
||||
QueryResult queryResult = influxDB.query(new Query("SELECT * FROM h2o_feet"));
|
||||
println(queryResult);
|
||||
}
|
||||
|
||||
|
||||
void writeManagedSystem(ManagedSystem system) {
|
||||
|
||||
if(system.metrics == null) {
|
||||
log.warn("writeManagedSystem() - null metrics, skipping")
|
||||
return
|
||||
}
|
||||
|
||||
Instant timestamp = system.getTimestamp()
|
||||
if(!timestamp) {
|
||||
log.warn("writeManagedSystem() - no timestamp, skipping")
|
||||
return
|
||||
}
|
||||
|
||||
BatchPoints batchPoints = BatchPoints
|
||||
.database(database)
|
||||
//.retentionPolicy("defaultPolicy")
|
||||
.build();
|
||||
|
||||
/*
|
||||
ServerProcessor processor
|
||||
ServerMemory memory
|
||||
PhysicalProcessorPool physicalProcessorPool
|
||||
SharedProcessorPool sharedProcessorPool
|
||||
|
||||
+ VIOS
|
||||
*/
|
||||
|
||||
|
||||
batchPoints.point(getSystemMemory(system, timestamp));
|
||||
batchPoints.point(getSystemProcessor(system, timestamp));
|
||||
|
||||
influxDB.write(batchPoints);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static Point getSystemMemory(ManagedSystem system, Instant timestamp) {
|
||||
|
||||
Point.Builder point1Builder = Point.measurement("SystemMemory")
|
||||
.time(timestamp.toEpochMilli(), TimeUnit.MILLISECONDS)
|
||||
.tag("name", system.name)
|
||||
|
||||
Map memoryMap = system.getMemoryMetrics()
|
||||
memoryMap.each {fieldName, fieldValue ->
|
||||
point1Builder.addField(fieldName, fieldValue)
|
||||
}
|
||||
|
||||
return point1Builder.build();
|
||||
}
|
||||
|
||||
|
||||
private static Point getSystemProcessor(ManagedSystem system, Instant timestamp) {
|
||||
|
||||
Point.Builder point1Builder = Point.measurement("SystemProcessor")
|
||||
.time(timestamp.toEpochMilli(), TimeUnit.MILLISECONDS)
|
||||
.tag("name", system.name)
|
||||
|
||||
Map memoryMap = system.getProcessorMetrics()
|
||||
memoryMap.each {fieldName, fieldValue ->
|
||||
point1Builder.addField(fieldName, fieldValue)
|
||||
}
|
||||
|
||||
return point1Builder.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,34 +1,24 @@
|
|||
package biz.nellemann.hmci
|
||||
|
||||
import biz.nellemann.hmci.pojo.PcmData
|
||||
import biz.nellemann.hmci.pojo.SystemUtil
|
||||
import groovy.json.JsonSlurper
|
||||
import groovy.util.logging.Slf4j
|
||||
|
||||
@Slf4j
|
||||
class LogicalPartition {
|
||||
class LogicalPartition extends MetaSystem {
|
||||
|
||||
public String id
|
||||
public String name
|
||||
public String type
|
||||
public String systemId
|
||||
|
||||
protected PcmData metrics
|
||||
|
||||
LogicalPartition(String id, String systemId) {
|
||||
LogicalPartition(String id, String systemId, String name, String type) {
|
||||
this.id = id
|
||||
this.systemId = systemId
|
||||
this.name = name
|
||||
this.type = type
|
||||
}
|
||||
|
||||
String toString() {
|
||||
return "[${id}] ${name} (${type})"
|
||||
}
|
||||
|
||||
|
||||
void processMetrics(String json) {
|
||||
log.debug("processMetrics()")
|
||||
def pcmMap = new JsonSlurper().parseText(json)
|
||||
metrics = new PcmData(pcmMap as Map)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
package biz.nellemann.hmci
|
||||
|
||||
|
||||
import biz.nellemann.hmci.pojo.PcmData
|
||||
import groovy.json.JsonSlurper
|
||||
import groovy.util.logging.Slf4j
|
||||
|
||||
|
||||
@Slf4j
|
||||
class ManagedSystem {
|
||||
class ManagedSystem extends MetaSystem {
|
||||
|
||||
public String id
|
||||
public String name
|
||||
|
@ -14,10 +12,13 @@ class ManagedSystem {
|
|||
public String model
|
||||
public String serialNumber
|
||||
|
||||
protected PcmData metrics
|
||||
|
||||
ManagedSystem(String id) {
|
||||
ManagedSystem(String id, String name, String type, String model, String serialNumber) {
|
||||
this.id = id
|
||||
this.name = name
|
||||
this.type = type
|
||||
this.model = model
|
||||
this.serialNumber = serialNumber
|
||||
}
|
||||
|
||||
String toString() {
|
||||
|
@ -25,10 +26,26 @@ class ManagedSystem {
|
|||
}
|
||||
|
||||
|
||||
void processMetrics(String json) {
|
||||
log.debug("processMetrics()")
|
||||
def pcmMap = new JsonSlurper().parseText(json)
|
||||
metrics = new PcmData(pcmMap as Map)
|
||||
Map<String,BigDecimal> getMemoryMetrics() {
|
||||
|
||||
HashMap<String, BigDecimal> map = [
|
||||
totalMem: metrics.systemUtil.utilSamples.first().serverUtil.memory.totalMem.first(),
|
||||
availableMem: metrics.systemUtil.utilSamples.first().serverUtil.memory.availableMem.first(),
|
||||
configurableMem: metrics.systemUtil.utilSamples.first().serverUtil.memory.configurableMem.first(),
|
||||
assignedMemToLpars: metrics.systemUtil.utilSamples.first().serverUtil.memory.assignedMemToLpars.first()
|
||||
]
|
||||
|
||||
return map
|
||||
}
|
||||
|
||||
|
||||
Map<String,BigDecimal> getProcessorMetrics() {
|
||||
|
||||
HashMap<String, BigDecimal> map = [
|
||||
availableProcUnits: metrics.systemUtil.utilSamples.first().serverUtil.processor.availableProcUnits.first(),
|
||||
]
|
||||
|
||||
return map
|
||||
}
|
||||
|
||||
}
|
||||
|
|
36
src/main/groovy/biz/nellemann/hmci/MetaSystem.groovy
Normal file
36
src/main/groovy/biz/nellemann/hmci/MetaSystem.groovy
Normal file
|
@ -0,0 +1,36 @@
|
|||
package biz.nellemann.hmci
|
||||
|
||||
import biz.nellemann.hmci.pojo.PcmData
|
||||
import groovy.json.JsonSlurper
|
||||
import groovy.util.logging.Slf4j
|
||||
|
||||
import java.time.Instant
|
||||
import java.time.format.DateTimeFormatter
|
||||
import java.time.format.DateTimeParseException
|
||||
|
||||
@Slf4j
|
||||
class MetaSystem {
|
||||
|
||||
protected PcmData metrics
|
||||
|
||||
void processMetrics(String json) {
|
||||
def pcmMap = new JsonSlurper().parseText(json)
|
||||
metrics = new PcmData(pcmMap as Map)
|
||||
}
|
||||
|
||||
|
||||
Instant getTimestamp() {
|
||||
|
||||
String timeStamp = metrics.systemUtil.utilSamples.first().sampleInfo.timeStamp
|
||||
Instant instant
|
||||
try {
|
||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss[XXX][X]");
|
||||
instant = Instant.from(dateTimeFormatter.parse(timeStamp))
|
||||
} catch(DateTimeParseException e) {
|
||||
log.warn("getTimestamp() - parse error: " + timeStamp)
|
||||
}
|
||||
return instant
|
||||
}
|
||||
|
||||
|
||||
}
|
11
src/main/groovy/biz/nellemann/hmci/pojo/SampleInfo.groovy
Normal file
11
src/main/groovy/biz/nellemann/hmci/pojo/SampleInfo.groovy
Normal file
|
@ -0,0 +1,11 @@
|
|||
package biz.nellemann.hmci.pojo
|
||||
|
||||
import groovy.transform.ToString
|
||||
|
||||
@ToString
|
||||
class SampleInfo {
|
||||
|
||||
String timeStamp
|
||||
Integer status
|
||||
|
||||
}
|
|
@ -6,6 +6,7 @@ import groovy.transform.ToString
|
|||
class UtilSample {
|
||||
|
||||
String sampleType
|
||||
SampleInfo sampleInfo
|
||||
ServerUtil serverUtil
|
||||
List<ViosUtil> viosUtil
|
||||
List<LparUtil> lparsUtil
|
||||
|
|
|
@ -44,8 +44,8 @@ class HmcClientTest extends Specification {
|
|||
mockServer.enqueue(new MockResponse().setBody(testXml));
|
||||
|
||||
when:
|
||||
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166")
|
||||
Map<String, ManagedSystem> partitions = hmc.getLogicalPartitionsForManagedSystemWithId(system.id)
|
||||
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166", "Test Name","Test Type", "Test Model", "Test S/N")
|
||||
Map<String, LogicalPartition> partitions = hmc.getLogicalPartitionsForManagedSystemWithId(system.id)
|
||||
|
||||
then:
|
||||
partitions.size() == 12
|
||||
|
|
37
src/test/groovy/biz/nellemann/hmci/InfluxClientTest.groovy
Normal file
37
src/test/groovy/biz/nellemann/hmci/InfluxClientTest.groovy
Normal file
|
@ -0,0 +1,37 @@
|
|||
package biz.nellemann.hmci
|
||||
|
||||
import okhttp3.mockwebserver.MockWebServer
|
||||
import spock.lang.Specification
|
||||
|
||||
class InfluxClientTest extends Specification {
|
||||
|
||||
InfluxClient influxClient
|
||||
|
||||
def setup() {
|
||||
influxClient = new InfluxClient("http://localhost:8086", "root", "", "hmci")
|
||||
influxClient.login()
|
||||
}
|
||||
|
||||
def cleanup() {
|
||||
influxClient.logoff()
|
||||
}
|
||||
|
||||
|
||||
void "write some managed system data to influx"() {
|
||||
|
||||
setup:
|
||||
def testFile = new File(getClass().getResource('/pcm-data-managed-system.json').toURI())
|
||||
def testJson = testFile.getText('UTF-8')
|
||||
|
||||
when:
|
||||
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166", "TestSystem", "TestType", "TestModel", "Test s/n")
|
||||
system.processMetrics(testJson)
|
||||
influxClient.writeManagedSystem(system)
|
||||
|
||||
then:
|
||||
system.metrics.systemUtil.utilInfo.name == "S822L-8247-213C1BA"
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -12,7 +12,7 @@ class LogicalPartitionTest extends Specification {
|
|||
def testJson = testFile.getText('UTF-8')
|
||||
|
||||
when:
|
||||
LogicalPartition lpar = new LogicalPartition("2DE05DB6-8AD5-448F-8327-0F488D287E82", "e09834d1-c930-3883-bdad-405d8e26e166")
|
||||
LogicalPartition lpar = new LogicalPartition("2DE05DB6-8AD5-448F-8327-0F488D287E82", "e09834d1-c930-3883-bdad-405d8e26e166", "9Flash01", "OS400")
|
||||
lpar.processMetrics(testJson)
|
||||
|
||||
then:
|
||||
|
|
|
@ -11,7 +11,7 @@ class ManagedSystemTest extends Specification {
|
|||
def testJson = testFile.getText('UTF-8')
|
||||
|
||||
when:
|
||||
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166")
|
||||
ManagedSystem system = new ManagedSystem("e09834d1-c930-3883-bdad-405d8e26e166", "Test Name","Test Type", "Test Model", "Test S/N")
|
||||
system.processMetrics(testJson)
|
||||
|
||||
then:
|
||||
|
|
|
@ -1,223 +0,0 @@
|
|||
{
|
||||
"utilInfo": {
|
||||
"version": "1.3.0",
|
||||
"metricType": "Processed",
|
||||
"frequency": 30,
|
||||
"startTimeStamp": "2020-08-07T12:37:30+0200",
|
||||
"endTimeStamp": "2020-08-07T12:37:30+0200",
|
||||
"mtms": "9009-42A*21F64EV",
|
||||
"name": "Server-9009-42A-SN21F64EV",
|
||||
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||
"metricArrayOrder": [
|
||||
"AVG"
|
||||
]
|
||||
},
|
||||
"utilSamples": [
|
||||
{
|
||||
"sampleType": "LogicalPartition",
|
||||
"sampleInfo": {
|
||||
"timeStamp": "2020-08-07T12:37:30+0200",
|
||||
"status": 2,
|
||||
"errorInfo": [
|
||||
{
|
||||
"errId": "3004",
|
||||
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
||||
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||
"reportedBy": "ManagedSystem",
|
||||
"occurrenceCount": 1
|
||||
},
|
||||
{
|
||||
"errId": "3004",
|
||||
"errMsg": "Failed to fetch SRIOV adapter physical port statistics due to a technical error.",
|
||||
"uuid": "b597e4da-2aab-3f52-8616-341d62153559",
|
||||
"reportedBy": "ManagedSystem",
|
||||
"occurrenceCount": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"lparsUtil": [
|
||||
{
|
||||
"id": 10,
|
||||
"uuid": "2DE05DB6-8AD5-448F-8327-0F488D287E82",
|
||||
"name": "P9-PowerVC",
|
||||
"state": "Running",
|
||||
"type": "AIX/Linux",
|
||||
"osType": "Linux",
|
||||
"affinityScore": 100,
|
||||
"memory": {
|
||||
"logicalMem": [
|
||||
112640.000
|
||||
],
|
||||
"backedPhysicalMem": [
|
||||
112640.000
|
||||
]
|
||||
},
|
||||
"processor": {
|
||||
"poolId": 0,
|
||||
"weight": 128,
|
||||
"mode": "uncap",
|
||||
"maxVirtualProcessors": [
|
||||
8.000
|
||||
],
|
||||
"currentVirtualProcessors": [
|
||||
4.000
|
||||
],
|
||||
"maxProcUnits": [
|
||||
8.000
|
||||
],
|
||||
"entitledProcUnits": [
|
||||
1.000
|
||||
],
|
||||
"utilizedProcUnits": [
|
||||
0.574
|
||||
],
|
||||
"utilizedCappedProcUnits": [
|
||||
0.498
|
||||
],
|
||||
"utilizedUncappedProcUnits": [
|
||||
0.076
|
||||
],
|
||||
"idleProcUnits": [
|
||||
0.376
|
||||
],
|
||||
"donatedProcUnits": [
|
||||
0.000
|
||||
],
|
||||
"timeSpentWaitingForDispatch": [
|
||||
0.000
|
||||
],
|
||||
"timePerInstructionExecution": [
|
||||
0.000
|
||||
]
|
||||
},
|
||||
"network": {
|
||||
"virtualEthernetAdapters": [
|
||||
{
|
||||
"physicalLocation": "U9009.42A.21F64EV-V10-C2",
|
||||
"vlanId": 1,
|
||||
"vswitchId": 0,
|
||||
"isPortVlanId": true,
|
||||
"viosId": 1,
|
||||
"sharedEthernetAdapterId": "ent5",
|
||||
"receivedPackets": [
|
||||
11.933
|
||||
],
|
||||
"sentPackets": [
|
||||
7.767
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
2020.467
|
||||
],
|
||||
"receivedBytes": [
|
||||
4291.167
|
||||
],
|
||||
"receivedPhysicalPackets": [
|
||||
11.933
|
||||
],
|
||||
"sentPhysicalPackets": [
|
||||
7.767
|
||||
],
|
||||
"droppedPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPhysicalBytes": [
|
||||
2020.467
|
||||
],
|
||||
"receivedPhysicalBytes": [
|
||||
4291.167
|
||||
],
|
||||
"transferredBytes": [
|
||||
6311.634
|
||||
],
|
||||
"transferredPhysicalBytes": [
|
||||
6311.634
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"storage": {
|
||||
"genericVirtualAdapters": [
|
||||
{
|
||||
"id": "vhost5",
|
||||
"type": "virtual",
|
||||
"viosId": 1,
|
||||
"physicalLocation": "U9009.42A.21F64EV-V10-C3",
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.000
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
0.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
null
|
||||
]
|
||||
}
|
||||
],
|
||||
"virtualFiberChannelAdapters": [
|
||||
{
|
||||
"wwpn": "c050760b1d10002a",
|
||||
"wwpn2": "c050760b1d10002b",
|
||||
"physicalLocation": "U9009.42A.21F64EV-V10-C87",
|
||||
"physicalPortWWPN": "100000109b89aca8",
|
||||
"viosId": 1,
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
2.867
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
138786.133
|
||||
],
|
||||
"runningSpeed": [
|
||||
8.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
0.000
|
||||
]
|
||||
},
|
||||
{
|
||||
"wwpn": "c050760b1d10002c",
|
||||
"wwpn2": "c050760b1d10002d",
|
||||
"physicalLocation": "U9009.42A.21F64EV-V10-C88",
|
||||
"physicalPortWWPN": "100000109b7db96a",
|
||||
"viosId": 2,
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
2.933
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
140731.733
|
||||
],
|
||||
"runningSpeed": [
|
||||
8.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
0.000
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,805 +0,0 @@
|
|||
{
|
||||
"systemUtil": {
|
||||
"utilInfo": {
|
||||
"version": "1.3.0",
|
||||
"metricType": "Processed",
|
||||
"frequency": 30,
|
||||
"startTimeStamp": "2020-08-07T10:44:00+0200",
|
||||
"endTimeStamp": "2020-08-07T10:44:00+0200",
|
||||
"mtms": "8247-22L*213C1BA",
|
||||
"name": "S822L-8247-213C1BA",
|
||||
"uuid": "e09834d1-c930-3883-bdad-405d8e26e166",
|
||||
"metricArrayOrder": [
|
||||
"AVG"
|
||||
]
|
||||
},
|
||||
"utilSamples": [
|
||||
{
|
||||
"sampleType": "ManagedSystem",
|
||||
"sampleInfo": {
|
||||
"timeStamp": "2020-08-07T10:44:00+0200",
|
||||
"status": 0
|
||||
},
|
||||
"systemFirmwareUtil": {
|
||||
"utilizedProcUnits": [
|
||||
0.000
|
||||
],
|
||||
"assignedMem": [
|
||||
5632.000
|
||||
]
|
||||
},
|
||||
"serverUtil": {
|
||||
"processor": {
|
||||
"totalProcUnits": [
|
||||
24.000
|
||||
],
|
||||
"utilizedProcUnits": [
|
||||
0.017
|
||||
],
|
||||
"availableProcUnits": [
|
||||
16.000
|
||||
],
|
||||
"configurableProcUnits": [
|
||||
24.000
|
||||
]
|
||||
},
|
||||
"memory": {
|
||||
"totalMem": [
|
||||
1048576.000
|
||||
],
|
||||
"availableMem": [
|
||||
1001984.000
|
||||
],
|
||||
"configurableMem": [
|
||||
1048576.000
|
||||
],
|
||||
"assignedMemToLpars": [
|
||||
40960.000
|
||||
]
|
||||
},
|
||||
"physicalProcessorPool": {
|
||||
"assignedProcUnits": [
|
||||
23.879
|
||||
],
|
||||
"utilizedProcUnits": [
|
||||
0.007
|
||||
],
|
||||
"availableProcUnits": [
|
||||
23.872
|
||||
],
|
||||
"configuredProcUnits": [
|
||||
0.000
|
||||
],
|
||||
"borrowedProcUnits": [
|
||||
16.000
|
||||
]
|
||||
},
|
||||
"sharedProcessorPool": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "DefaultPool",
|
||||
"assignedProcUnits": [
|
||||
23.879
|
||||
],
|
||||
"utilizedProcUnits": [
|
||||
0.005
|
||||
],
|
||||
"availableProcUnits": [
|
||||
23.874
|
||||
],
|
||||
"configuredProcUnits": [
|
||||
6.000
|
||||
],
|
||||
"borrowedProcUnits": [
|
||||
16.000
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"viosUtil": [
|
||||
{
|
||||
"id": 1,
|
||||
"uuid": "2F30379A-860B-4661-A24E-CD8E449C81AC",
|
||||
"name": "VIOS1",
|
||||
"state": "Running",
|
||||
"affinityScore": 100,
|
||||
"memory": {
|
||||
"assignedMem": [
|
||||
8192.000
|
||||
],
|
||||
"utilizedMem": [
|
||||
2061.000
|
||||
]
|
||||
},
|
||||
"processor": {
|
||||
"weight": 0,
|
||||
"mode": "share_idle_procs_active",
|
||||
"maxVirtualProcessors": [
|
||||
2.000
|
||||
],
|
||||
"currentVirtualProcessors": [
|
||||
0.000
|
||||
],
|
||||
"maxProcUnits": [
|
||||
2.000
|
||||
],
|
||||
"entitledProcUnits": [
|
||||
1.000
|
||||
],
|
||||
"utilizedProcUnits": [
|
||||
0.006
|
||||
],
|
||||
"utilizedCappedProcUnits": [
|
||||
0.079
|
||||
],
|
||||
"utilizedUncappedProcUnits": [
|
||||
0.000
|
||||
],
|
||||
"idleProcUnits": [
|
||||
0.073
|
||||
],
|
||||
"donatedProcUnits": [
|
||||
0.921
|
||||
],
|
||||
"timeSpentWaitingForDispatch": [
|
||||
0.000
|
||||
],
|
||||
"timePerInstructionExecution": [
|
||||
51.000
|
||||
]
|
||||
},
|
||||
"network": {
|
||||
"clientLpars": [
|
||||
"62F4D488-C838-41E2-B83B-E68E004E3B63"
|
||||
],
|
||||
"genericAdapters": [
|
||||
{
|
||||
"id": "ent2",
|
||||
"type": "physical",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C10-T3",
|
||||
"receivedPackets": [
|
||||
29.733
|
||||
],
|
||||
"sentPackets": [
|
||||
25.900
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
7508.933
|
||||
],
|
||||
"receivedBytes": [
|
||||
5676.000
|
||||
],
|
||||
"transferredBytes": [
|
||||
13184.933
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ent6",
|
||||
"type": "virtual",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C3-T1",
|
||||
"receivedPackets": [
|
||||
12.967
|
||||
],
|
||||
"sentPackets": [
|
||||
9.700
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
3348.667
|
||||
],
|
||||
"receivedBytes": [
|
||||
2401.733
|
||||
],
|
||||
"transferredBytes": [
|
||||
5750.400
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ent4",
|
||||
"type": "virtual",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C2-T1",
|
||||
"receivedPackets": [
|
||||
26.900
|
||||
],
|
||||
"sentPackets": [
|
||||
33.800
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
8853.333
|
||||
],
|
||||
"receivedBytes": [
|
||||
8214.933
|
||||
],
|
||||
"transferredBytes": [
|
||||
17068.266
|
||||
]
|
||||
}
|
||||
],
|
||||
"sharedAdapters": [
|
||||
{
|
||||
"id": "ent5",
|
||||
"type": "sea",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C2-T1",
|
||||
"receivedPackets": [
|
||||
56.633
|
||||
],
|
||||
"sentPackets": [
|
||||
59.700
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
16362.267
|
||||
],
|
||||
"receivedBytes": [
|
||||
13890.933
|
||||
],
|
||||
"transferredBytes": [
|
||||
30253.200
|
||||
],
|
||||
"bridgedAdapters": [
|
||||
"ent2",
|
||||
"ent4",
|
||||
"ent4"
|
||||
]
|
||||
}
|
||||
],
|
||||
"virtualEthernetAdapters": [
|
||||
{
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C2",
|
||||
"vlanId": 1,
|
||||
"vswitchId": 0,
|
||||
"isPortVlanId": true,
|
||||
"receivedPackets": [
|
||||
10.467
|
||||
],
|
||||
"sentPackets": [
|
||||
14.667
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
1931.333
|
||||
],
|
||||
"receivedBytes": [
|
||||
3875.433
|
||||
],
|
||||
"receivedPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"droppedPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPhysicalBytes": [
|
||||
0.000
|
||||
],
|
||||
"receivedPhysicalBytes": [
|
||||
0.000
|
||||
],
|
||||
"transferredBytes": [
|
||||
5806.766
|
||||
],
|
||||
"transferredPhysicalBytes": [
|
||||
0.000
|
||||
]
|
||||
},
|
||||
{
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C3",
|
||||
"vlanId": 1,
|
||||
"vswitchId": 0,
|
||||
"isPortVlanId": true,
|
||||
"receivedPackets": [
|
||||
6.100
|
||||
],
|
||||
"sentPackets": [
|
||||
1.700
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
1420.533
|
||||
],
|
||||
"receivedBytes": [
|
||||
575.100
|
||||
],
|
||||
"receivedPhysicalPackets": [
|
||||
6.100
|
||||
],
|
||||
"sentPhysicalPackets": [
|
||||
1.700
|
||||
],
|
||||
"droppedPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPhysicalBytes": [
|
||||
1420.533
|
||||
],
|
||||
"receivedPhysicalBytes": [
|
||||
575.100
|
||||
],
|
||||
"transferredBytes": [
|
||||
1995.633
|
||||
],
|
||||
"transferredPhysicalBytes": [
|
||||
1995.633
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"storage": {
|
||||
"clientLpars": [
|
||||
"62F4D488-C838-41E2-B83B-E68E004E3B63"
|
||||
],
|
||||
"genericPhysicalAdapters": [
|
||||
{
|
||||
"id": "sissas0",
|
||||
"type": "sas",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C14-T1",
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
4.533
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
2321.067
|
||||
],
|
||||
"transmittedBytes": [
|
||||
2321.067
|
||||
]
|
||||
}
|
||||
],
|
||||
"genericVirtualAdapters": [
|
||||
{
|
||||
"id": "vhost1",
|
||||
"type": "virtual",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C6",
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.000
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
0.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
0.000
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "vhost0",
|
||||
"type": "virtual",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C5",
|
||||
"numOfReads": [
|
||||
0.500
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.500
|
||||
],
|
||||
"readBytes": [
|
||||
256.000
|
||||
],
|
||||
"writeBytes": [
|
||||
256.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
512.000
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "vhost2",
|
||||
"type": "virtual",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V1-C7",
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.000
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
0.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
0.000
|
||||
]
|
||||
}
|
||||
],
|
||||
"fiberChannelAdapters": [
|
||||
{
|
||||
"id": "fcs0",
|
||||
"wwpn": "10000090faba5108",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C12-T1",
|
||||
"numOfPorts": 3,
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.467
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
30583.467
|
||||
],
|
||||
"runningSpeed": [
|
||||
8.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
30583.467
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "fcs1",
|
||||
"wwpn": "10000090faba5109",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C12-T2",
|
||||
"numOfPorts": 0,
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.000
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
0.000
|
||||
],
|
||||
"runningSpeed": [
|
||||
0.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
0.000
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"uuid": "2BA128CE-38E4-4522-B823-7471633C2717",
|
||||
"name": "VIOS2",
|
||||
"state": "Running",
|
||||
"affinityScore": 100,
|
||||
"memory": {
|
||||
"assignedMem": [
|
||||
8192.000
|
||||
],
|
||||
"utilizedMem": [
|
||||
2090.000
|
||||
]
|
||||
},
|
||||
"processor": {
|
||||
"weight": 0,
|
||||
"mode": "share_idle_procs_active",
|
||||
"maxVirtualProcessors": [
|
||||
2.000
|
||||
],
|
||||
"currentVirtualProcessors": [
|
||||
0.000
|
||||
],
|
||||
"maxProcUnits": [
|
||||
2.000
|
||||
],
|
||||
"entitledProcUnits": [
|
||||
1.000
|
||||
],
|
||||
"utilizedProcUnits": [
|
||||
0.005
|
||||
],
|
||||
"utilizedCappedProcUnits": [
|
||||
0.042
|
||||
],
|
||||
"utilizedUncappedProcUnits": [
|
||||
0.000
|
||||
],
|
||||
"idleProcUnits": [
|
||||
0.037
|
||||
],
|
||||
"donatedProcUnits": [
|
||||
0.958
|
||||
],
|
||||
"timeSpentWaitingForDispatch": [
|
||||
0.000
|
||||
],
|
||||
"timePerInstructionExecution": [
|
||||
52.000
|
||||
]
|
||||
},
|
||||
"network": {
|
||||
"genericAdapters": [
|
||||
{
|
||||
"id": "ent6",
|
||||
"type": "virtual",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V2-C3-T1",
|
||||
"receivedPackets": [
|
||||
12.233
|
||||
],
|
||||
"sentPackets": [
|
||||
9.000
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
3011.200
|
||||
],
|
||||
"receivedBytes": [
|
||||
2265.067
|
||||
],
|
||||
"transferredBytes": [
|
||||
5276.267
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ent4",
|
||||
"type": "virtual",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V2-C2-T1",
|
||||
"receivedPackets": [
|
||||
4.600
|
||||
],
|
||||
"sentPackets": [
|
||||
1.000
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
706.000
|
||||
],
|
||||
"receivedBytes": [
|
||||
3247.600
|
||||
],
|
||||
"transferredBytes": [
|
||||
3953.600
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "ent2",
|
||||
"type": "physical",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C6-T3",
|
||||
"receivedPackets": [
|
||||
5.167
|
||||
],
|
||||
"sentPackets": [
|
||||
0.000
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
0.000
|
||||
],
|
||||
"receivedBytes": [
|
||||
380.333
|
||||
],
|
||||
"transferredBytes": [
|
||||
380.333
|
||||
]
|
||||
}
|
||||
],
|
||||
"sharedAdapters": [
|
||||
{
|
||||
"id": "ent5",
|
||||
"type": "sea",
|
||||
"physicalLocation": "U8247.22L.213C1BA-V2-C2-T1",
|
||||
"receivedPackets": [
|
||||
9.767
|
||||
],
|
||||
"sentPackets": [
|
||||
1.000
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
706.000
|
||||
],
|
||||
"receivedBytes": [
|
||||
3627.933
|
||||
],
|
||||
"transferredBytes": [
|
||||
4333.933
|
||||
],
|
||||
"bridgedAdapters": [
|
||||
"ent2",
|
||||
"ent4",
|
||||
"ent4"
|
||||
]
|
||||
}
|
||||
],
|
||||
"virtualEthernetAdapters": [
|
||||
{
|
||||
"physicalLocation": "U8247.22L.213C1BA-V2-C2",
|
||||
"vlanId": 1,
|
||||
"vswitchId": 0,
|
||||
"isPortVlanId": true,
|
||||
"receivedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPackets": [
|
||||
0.000
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
0.000
|
||||
],
|
||||
"receivedBytes": [
|
||||
0.000
|
||||
],
|
||||
"receivedPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"droppedPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPhysicalBytes": [
|
||||
0.000
|
||||
],
|
||||
"receivedPhysicalBytes": [
|
||||
0.000
|
||||
],
|
||||
"transferredBytes": [
|
||||
0.000
|
||||
],
|
||||
"transferredPhysicalBytes": [
|
||||
0.000
|
||||
]
|
||||
},
|
||||
{
|
||||
"physicalLocation": "U8247.22L.213C1BA-V2-C3",
|
||||
"vlanId": 1,
|
||||
"vswitchId": 0,
|
||||
"isPortVlanId": true,
|
||||
"receivedPackets": [
|
||||
5.867
|
||||
],
|
||||
"sentPackets": [
|
||||
1.567
|
||||
],
|
||||
"droppedPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentBytes": [
|
||||
1306.633
|
||||
],
|
||||
"receivedBytes": [
|
||||
517.900
|
||||
],
|
||||
"receivedPhysicalPackets": [
|
||||
5.867
|
||||
],
|
||||
"sentPhysicalPackets": [
|
||||
1.567
|
||||
],
|
||||
"droppedPhysicalPackets": [
|
||||
0.000
|
||||
],
|
||||
"sentPhysicalBytes": [
|
||||
1306.633
|
||||
],
|
||||
"receivedPhysicalBytes": [
|
||||
517.900
|
||||
],
|
||||
"transferredBytes": [
|
||||
1824.533
|
||||
],
|
||||
"transferredPhysicalBytes": [
|
||||
1824.533
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"storage": {
|
||||
"clientLpars": [
|
||||
"62F4D488-C838-41E2-B83B-E68E004E3B63"
|
||||
],
|
||||
"genericPhysicalAdapters": [
|
||||
{
|
||||
"id": "sissas1",
|
||||
"type": "sas",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C15-T1",
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
6.400
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
3276.800
|
||||
],
|
||||
"transmittedBytes": [
|
||||
3276.800
|
||||
]
|
||||
}
|
||||
],
|
||||
"fiberChannelAdapters": [
|
||||
{
|
||||
"id": "fcs1",
|
||||
"wwpn": "10000090fab674d7",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C2-T2",
|
||||
"numOfPorts": 0,
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.000
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
0.000
|
||||
],
|
||||
"runningSpeed": [
|
||||
0.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
0.000
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "fcs0",
|
||||
"wwpn": "10000090fab674d6",
|
||||
"physicalLocation": "U78CB.001.WZS0BYF-P1-C2-T1",
|
||||
"numOfPorts": 3,
|
||||
"numOfReads": [
|
||||
0.000
|
||||
],
|
||||
"numOfWrites": [
|
||||
0.400
|
||||
],
|
||||
"readBytes": [
|
||||
0.000
|
||||
],
|
||||
"writeBytes": [
|
||||
26214.400
|
||||
],
|
||||
"runningSpeed": [
|
||||
8.000
|
||||
],
|
||||
"transmittedBytes": [
|
||||
26214.400
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue