I'm trying to play with the Prometheus Monitoring tool and it's providing the following response in some metrics I'm querying:
{
"status": "success",
"data": {
"resultType": "matrix",
"result": [{
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "guest"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "guest_nice"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "idle"
},
"values": [
[1518164248.959, "11969.01"],
[1518164263.959, "11983.93"],
[1518164278.959, "11998.83"],
[1518164293.959, "12013.73"],
[1518164308.959, "12028.64"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "iowait"
},
"values": [
[1518164248.959, "29.2"],
[1518164263.959, "29.21"],
[1518164278.959, "29.21"],
[1518164293.959, "29.22"],
[1518164308.959, "29.23"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "irq"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "nice"
},
"values": [
[1518164248.959, "2.49"],
[1518164263.959, "2.49"],
[1518164278.959, "2.49"],
[1518164293.959, "2.49"],
[1518164308.959, "2.49"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "softirq"
},
"values": [
[1518164248.959, "1.47"],
[1518164263.959, "1.48"],
[1518164278.959, "1.48"],
[1518164293.959, "1.48"],
[1518164308.959, "1.48"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "steal"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "system"
},
"values": [
[1518164248.959, "34.36"],
[1518164263.959, "34.38"],
[1518164278.959, "34.41"],
[1518164293.959, "34.44"],
[1518164308.959, "34.46"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu0",
"instance": "localhost:9100",
"job": "node",
"mode": "user"
},
"values": [
[1518164248.959, "40.93"],
[1518164263.959, "40.96"],
[1518164278.959, "41"],
[1518164293.959, "41.05"],
[1518164308.959, "41.08"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "guest"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "guest_nice"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "idle"
},
"values": [
[1518164248.959, "11980.39"],
[1518164263.959, "11995.32"],
[1518164278.959, "12010.24"],
[1518164293.959, "12025.17"],
[1518164308.959, "12040.07"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "iowait"
},
"values": [
[1518164248.959, "30.36"],
[1518164263.959, "30.36"],
[1518164278.959, "30.36"],
[1518164293.959, "30.36"],
[1518164308.959, "30.36"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "irq"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "nice"
},
"values": [
[1518164248.959, "0.02"],
[1518164263.959, "0.02"],
[1518164278.959, "0.02"],
[1518164293.959, "0.02"],
[1518164308.959, "0.02"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "softirq"
},
"values": [
[1518164248.959, "0.64"],
[1518164263.959, "0.64"],
[1518164278.959, "0.64"],
[1518164293.959, "0.64"],
[1518164308.959, "0.64"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "steal"
},
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "system"
},
"values": [
[1518164248.959, "22.17"],
[1518164263.959, "22.18"],
[1518164278.959, "22.2"],
[1518164293.959, "22.22"],
[1518164308.959, "22.24"]
]
}, {
"metric": {
"__name__": "node_cpu",
"cpu": "cpu1",
"instance": "localhost:9100",
"job": "node",
"mode": "user"
},
"values": [
[1518164248.959, "34.07"],
[1518164263.959, "34.09"],
[1518164278.959, "34.1"],
[1518164293.959, "34.11"],
[1518164308.959, "34.16"]
]
}]
}
}
I'm trying to deserialize this to an object and this is working except for this section:
"values": [
[1518164248.959, "0"],
[1518164263.959, "0"],
[1518164278.959, "0"],
[1518164293.959, "0"],
[1518164308.959, "0"]
]
It's deserializing, but value
is always null
.
I figure this is because I'm incorrectly interpreting this data through the object. This is what I've got:
public class CpuMetrics
{
public string status { get; set; }
public CpuData data { get; set; }
}
public class CpuData
{
public string resultType { get; set; }
public List<Result> result { get; set; }
}
public class Result
{
public Metric metric { get; set; }
public List<object> value { get; set; }
}
public class Metric
{
public string __name__ { get; set; }
public string cpu { get; set; }
public string instance { get; set; }
public string job { get; set; }
public string mode { get; set; }
}
Example of the object returning null:
Since this data is always consistent, I figured I wouldn't have to create a custom JsonConverter
in this case. Am I wrong? Should I create my own extension of the JsonConverter
to manage these specific fields?