Split out guest cpu metrics on Linux. (#744)

Linux "guest" metrics for VMs are already accounted for in node_cpu
`user` and `nice` metrics.  Separate these into their own metric to
avoid duplication of data.
This commit is contained in:
Ben Kochie 2017-11-23 15:04:47 +01:00 committed by GitHub
parent a8d7d1101a
commit 2a80537547
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 27 deletions

View file

@ -1,3 +1,9 @@
## master / unreleased
**Breaking changes**
Linux node_cpu metrics now break out `guest` values into separate metrics. See Issue #737
## v0.15.0 / 2017-10-06
**Breaking changes**

View file

@ -38,6 +38,7 @@ var (
type cpuCollector struct {
cpu *prometheus.Desc
cpuGuest *prometheus.Desc
cpuFreq *prometheus.Desc
cpuFreqMin *prometheus.Desc
cpuFreqMax *prometheus.Desc
@ -57,6 +58,11 @@ func NewCPUCollector() (Collector, error) {
"Seconds the cpus spent in each mode.",
[]string{"cpu", "mode"}, nil,
),
cpuGuest: prometheus.NewDesc(
prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "guest_seconds_total"),
"Seconds the cpus spent in guests (VMs) for each mode.",
[]string{"cpu", "mode"}, nil,
),
cpuFreq: prometheus.NewDesc(
prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "frequency_hertz"),
"Current cpu thread frequency in hertz.",
@ -196,6 +202,7 @@ func (c *cpuCollector) updateStat(ch chan<- prometheus.Metric) error {
for cpuID, cpuStat := range stats.CPU {
cpuName := fmt.Sprintf("cpu%d", cpuID)
cpuNum := fmt.Sprintf("%d", cpuID)
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.User, cpuName, "user")
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.Nice, cpuName, "nice")
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.System, cpuName, "system")
@ -204,8 +211,10 @@ func (c *cpuCollector) updateStat(ch chan<- prometheus.Metric) error {
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.IRQ, cpuName, "irq")
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.SoftIRQ, cpuName, "softirq")
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.Steal, cpuName, "steal")
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.Guest, cpuName, "guest")
ch <- prometheus.MustNewConstMetric(c.cpu, prometheus.CounterValue, cpuStat.GuestNice, cpuName, "guest_nice")
// Guest CPU is also accounted for in cpuStat.User and cpuStat.Nice, expose these as separate metrics.
ch <- prometheus.MustNewConstMetric(c.cpuGuest, prometheus.CounterValue, cpuStat.Guest, cpuNum, "user")
ch <- prometheus.MustNewConstMetric(c.cpuGuest, prometheus.CounterValue, cpuStat.GuestNice, cpuNum, "nice")
}
return nil

View file

@ -201,8 +201,6 @@ node_buddyinfo_count{node="0",size="9",zone="Normal"} 0
node_context_switches 3.8014093e+07
# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="guest"} 0
node_cpu{cpu="cpu0",mode="guest_nice"} 0
node_cpu{cpu="cpu0",mode="idle"} 10870.69
node_cpu{cpu="cpu0",mode="iowait"} 2.2
node_cpu{cpu="cpu0",mode="irq"} 0.01
@ -211,8 +209,6 @@ node_cpu{cpu="cpu0",mode="softirq"} 34.1
node_cpu{cpu="cpu0",mode="steal"} 0
node_cpu{cpu="cpu0",mode="system"} 210.45
node_cpu{cpu="cpu0",mode="user"} 444.9
node_cpu{cpu="cpu1",mode="guest"} 0
node_cpu{cpu="cpu1",mode="guest_nice"} 0
node_cpu{cpu="cpu1",mode="idle"} 11107.87
node_cpu{cpu="cpu1",mode="iowait"} 5.91
node_cpu{cpu="cpu1",mode="irq"} 0
@ -221,8 +217,6 @@ node_cpu{cpu="cpu1",mode="softirq"} 0.46
node_cpu{cpu="cpu1",mode="steal"} 0
node_cpu{cpu="cpu1",mode="system"} 164.74
node_cpu{cpu="cpu1",mode="user"} 478.69
node_cpu{cpu="cpu2",mode="guest"} 0
node_cpu{cpu="cpu2",mode="guest_nice"} 0
node_cpu{cpu="cpu2",mode="idle"} 11123.21
node_cpu{cpu="cpu2",mode="iowait"} 4.41
node_cpu{cpu="cpu2",mode="irq"} 0
@ -231,8 +225,6 @@ node_cpu{cpu="cpu2",mode="softirq"} 3.26
node_cpu{cpu="cpu2",mode="steal"} 0
node_cpu{cpu="cpu2",mode="system"} 159.16
node_cpu{cpu="cpu2",mode="user"} 465.04
node_cpu{cpu="cpu3",mode="guest"} 0
node_cpu{cpu="cpu3",mode="guest_nice"} 0
node_cpu{cpu="cpu3",mode="idle"} 11132.3
node_cpu{cpu="cpu3",mode="iowait"} 5.33
node_cpu{cpu="cpu3",mode="irq"} 0
@ -241,8 +233,6 @@ node_cpu{cpu="cpu3",mode="softirq"} 0.6
node_cpu{cpu="cpu3",mode="steal"} 0
node_cpu{cpu="cpu3",mode="system"} 156.83
node_cpu{cpu="cpu3",mode="user"} 470.54
node_cpu{cpu="cpu4",mode="guest"} 0
node_cpu{cpu="cpu4",mode="guest_nice"} 0
node_cpu{cpu="cpu4",mode="idle"} 11403.21
node_cpu{cpu="cpu4",mode="iowait"} 2.17
node_cpu{cpu="cpu4",mode="irq"} 0
@ -251,8 +241,6 @@ node_cpu{cpu="cpu4",mode="softirq"} 0.08
node_cpu{cpu="cpu4",mode="steal"} 0
node_cpu{cpu="cpu4",mode="system"} 107.76
node_cpu{cpu="cpu4",mode="user"} 284.13
node_cpu{cpu="cpu5",mode="guest"} 0
node_cpu{cpu="cpu5",mode="guest_nice"} 0
node_cpu{cpu="cpu5",mode="idle"} 11362.7
node_cpu{cpu="cpu5",mode="iowait"} 6.72
node_cpu{cpu="cpu5",mode="irq"} 0
@ -261,8 +249,6 @@ node_cpu{cpu="cpu5",mode="softirq"} 0.3
node_cpu{cpu="cpu5",mode="steal"} 0
node_cpu{cpu="cpu5",mode="system"} 115.86
node_cpu{cpu="cpu5",mode="user"} 292.71
node_cpu{cpu="cpu6",mode="guest"} 0
node_cpu{cpu="cpu6",mode="guest_nice"} 0
node_cpu{cpu="cpu6",mode="idle"} 11397.21
node_cpu{cpu="cpu6",mode="iowait"} 3.19
node_cpu{cpu="cpu6",mode="irq"} 0
@ -271,8 +257,6 @@ node_cpu{cpu="cpu6",mode="softirq"} 0.29
node_cpu{cpu="cpu6",mode="steal"} 0
node_cpu{cpu="cpu6",mode="system"} 102.76
node_cpu{cpu="cpu6",mode="user"} 291.52
node_cpu{cpu="cpu7",mode="guest"} 0
node_cpu{cpu="cpu7",mode="guest_nice"} 0
node_cpu{cpu="cpu7",mode="idle"} 11392.82
node_cpu{cpu="cpu7",mode="iowait"} 5.55
node_cpu{cpu="cpu7",mode="irq"} 0
@ -301,6 +285,24 @@ node_cpu_frequency_max_hertz{cpu="cpu3"} 4.2e+09
node_cpu_frequency_min_hertz{cpu="cpu0"} 8e+08
node_cpu_frequency_min_hertz{cpu="cpu1"} 8e+08
node_cpu_frequency_min_hertz{cpu="cpu3"} 1e+06
# HELP node_cpu_guest_seconds_total Seconds the cpus spent for guests (VMs) in each mode.
# TYPE node_cpu_guest_seconds_total counter
node_cpu_guest_seconds_total{cpu="0",mode="nice"} 0.01
node_cpu_guest_seconds_total{cpu="0",mode="user"} 0.02
node_cpu_guest_seconds_total{cpu="1",mode="nice"} 0.02
node_cpu_guest_seconds_total{cpu="1",mode="user"} 0.03
node_cpu_guest_seconds_total{cpu="2",mode="nice"} 0.03
node_cpu_guest_seconds_total{cpu="2",mode="user"} 0.04
node_cpu_guest_seconds_total{cpu="3",mode="nice"} 0.04
node_cpu_guest_seconds_total{cpu="3",mode="user"} 0.05
node_cpu_guest_seconds_total{cpu="4",mode="nice"} 0.05
node_cpu_guest_seconds_total{cpu="4",mode="user"} 0.06
node_cpu_guest_seconds_total{cpu="5",mode="nice"} 0.06
node_cpu_guest_seconds_total{cpu="5",mode="user"} 0.07
node_cpu_guest_seconds_total{cpu="6",mode="nice"} 0.07
node_cpu_guest_seconds_total{cpu="6",mode="user"} 0.08
node_cpu_guest_seconds_total{cpu="7",mode="nice"} 0.08
node_cpu_guest_seconds_total{cpu="7",mode="user"} 0.09
# HELP node_cpu_package_throttles_total Number of times this cpu package has been throttled.
# TYPE node_cpu_package_throttles_total counter
node_cpu_package_throttles_total{node="0"} 30

View file

@ -1,12 +1,12 @@
cpu 301854 612 111922 8979004 3552 2 3944 0 0 0
cpu0 44490 19 21045 1087069 220 1 3410 0 0 0
cpu1 47869 23 16474 1110787 591 0 46 0 0 0
cpu2 46504 36 15916 1112321 441 0 326 0 0 0
cpu3 47054 102 15683 1113230 533 0 60 0 0 0
cpu4 28413 25 10776 1140321 217 0 8 0 0 0
cpu5 29271 101 11586 1136270 672 0 30 0 0 0
cpu6 29152 36 10276 1139721 319 0 29 0 0 0
cpu7 29098 268 10164 1139282 555 0 31 0 0 0
cpu 301854 612 111922 8979004 3552 2 3944 0 44 36
cpu0 44490 19 21045 1087069 220 1 3410 0 2 1
cpu1 47869 23 16474 1110787 591 0 46 0 3 2
cpu2 46504 36 15916 1112321 441 0 326 0 4 3
cpu3 47054 102 15683 1113230 533 0 60 0 5 4
cpu4 28413 25 10776 1140321 217 0 8 0 6 5
cpu5 29271 101 11586 1136270 672 0 30 0 7 6
cpu6 29152 36 10276 1139721 319 0 29 0 8 7
cpu7 29098 268 10164 1139282 555 0 31 0 9 8
intr 8885917 17 0 0 0 0 0 0 0 1 79281 0 0 0 0 0 0 0 231237 0 0 0 0 250586 103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 223424 190745 13 906 1283803 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 38014093
btime 1418183276