From c1b7bb1c9c06c795240bc66e382249b9ad616bcd Mon Sep 17 00:00:00 2001 From: Bob Shannon Date: Tue, 20 Jun 2017 17:23:37 -0400 Subject: [PATCH] Add usage_busy and time_busy CPU metrics. Fixes #2710. --- plugins/inputs/system/CPU_README.md | 2 ++ plugins/inputs/system/cpu.go | 7 ++++++- plugins/inputs/system/cpu_test.go | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/system/CPU_README.md b/plugins/inputs/system/CPU_README.md index 01d57855bdf99..7f2aadf8b1b05 100644 --- a/plugins/inputs/system/CPU_README.md +++ b/plugins/inputs/system/CPU_README.md @@ -68,6 +68,7 @@ Measurement names: - cpu_time_user - cpu_time_system - cpu_time_idle +- cpu_time_busy - cpu_time_nice - cpu_time_iowait - cpu_time_irq @@ -86,6 +87,7 @@ Measurement names: - cpu_usage_user - cpu_usage_system - cpu_usage_idle +- cpu_usage_busy - cpu_usage_nice - cpu_usage_iowait - cpu_usage_irq diff --git a/plugins/inputs/system/cpu.go b/plugins/inputs/system/cpu.go index e6aa9f22d9901..178b62ea6f0aa 100644 --- a/plugins/inputs/system/cpu.go +++ b/plugins/inputs/system/cpu.go @@ -62,6 +62,7 @@ func (s *CPUStats) Gather(acc telegraf.Accumulator) error { "time_user": cts.User, "time_system": cts.System, "time_idle": cts.Idle, + "time_busy": total - cts.Idle, "time_nice": cts.Nice, "time_iowait": cts.Iowait, "time_irq": cts.Irq, @@ -90,10 +91,14 @@ func (s *CPUStats) Gather(acc telegraf.Accumulator) error { if totalDelta == 0 { continue } + + usage_idle := 100 * (cts.Idle - lastCts.Idle) / totalDelta + fieldsG := map[string]interface{}{ "usage_user": 100 * (cts.User - lastCts.User - (cts.Guest - lastCts.Guest)) / totalDelta, "usage_system": 100 * (cts.System - lastCts.System) / totalDelta, - "usage_idle": 100 * (cts.Idle - lastCts.Idle) / totalDelta, + "usage_idle": usage_idle, + "usage_busy": 100 - usage_idle, "usage_nice": 100 * (cts.Nice - lastCts.Nice - (cts.GuestNice - lastCts.GuestNice)) / totalDelta, "usage_iowait": 100 * (cts.Iowait - lastCts.Iowait) / totalDelta, "usage_irq": 100 * (cts.Irq - lastCts.Irq) / totalDelta, diff --git a/plugins/inputs/system/cpu_test.go b/plugins/inputs/system/cpu_test.go index e071f22c59585..442d1e190d01d 100644 --- a/plugins/inputs/system/cpu_test.go +++ b/plugins/inputs/system/cpu_test.go @@ -59,6 +59,7 @@ func TestCPUStats(t *testing.T) { assertContainsTaggedFloat(t, &acc, "cpu", "time_user", 8.8, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_system", 8.2, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_idle", 80.1, 0, cputags) + assertContainsTaggedFloat(t, &acc, "cpu", "time_busy", 19.9, 0.0005, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_nice", 1.3, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_iowait", 0.8389, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_irq", 0.6, 0, cputags) @@ -78,6 +79,7 @@ func TestCPUStats(t *testing.T) { assertContainsTaggedFloat(t, &acc, "cpu", "time_user", 24.9, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_system", 10.9, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_idle", 157.9798, 0, cputags) + assertContainsTaggedFloat(t, &acc, "cpu", "time_busy", 42.0202, 0.0005, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_nice", 3.5, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_iowait", 0.929, 0, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "time_irq", 1.2, 0, cputags) @@ -89,6 +91,7 @@ func TestCPUStats(t *testing.T) { assertContainsTaggedFloat(t, &acc, "cpu", "usage_user", 7.8, 0.0005, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "usage_system", 2.7, 0.0005, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "usage_idle", 77.8798, 0.0005, cputags) + assertContainsTaggedFloat(t, &acc, "cpu", "usage_busy", 22.1202, 0.0005, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "usage_nice", 0, 0.0005, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "usage_iowait", 0.0901, 0.0005, cputags) assertContainsTaggedFloat(t, &acc, "cpu", "usage_irq", 0.6, 0.0005, cputags)