From 249a860c6fa966003152eb72e9a8102ab4454957 Mon Sep 17 00:00:00 2001 From: Cameron Sparr Date: Mon, 25 Apr 2016 19:57:38 -0600 Subject: [PATCH] procstat: fix newlines in tags --- plugins/inputs/procstat/procstat.go | 2 +- plugins/inputs/procstat/spec_processor.go | 114 +++++++--------------- 2 files changed, 34 insertions(+), 82 deletions(-) diff --git a/plugins/inputs/procstat/procstat.go b/plugins/inputs/procstat/procstat.go index fbacb9069..2a55f8618 100644 --- a/plugins/inputs/procstat/procstat.go +++ b/plugins/inputs/procstat/procstat.go @@ -136,7 +136,7 @@ func (p *Procstat) pidsFromFile() ([]int32, error) { out = append(out, int32(pid)) p.tagmap[int32(pid)] = map[string]string{ "pidfile": p.PidFile, - "pid": string(pidString), + "pid": strings.TrimSpace(string(pidString)), } } } diff --git a/plugins/inputs/procstat/spec_processor.go b/plugins/inputs/procstat/spec_processor.go index d76538ef8..d43b8ecc4 100644 --- a/plugins/inputs/procstat/spec_processor.go +++ b/plugins/inputs/procstat/spec_processor.go @@ -1,7 +1,6 @@ package procstat import ( - "fmt" "time" "github.com/shirou/gopsutil/process" @@ -17,21 +16,6 @@ type SpecProcessor struct { proc *process.Process } -func (p *SpecProcessor) add(metric string, value interface{}) { - var mname string - if p.Prefix == "" { - mname = metric - } else { - mname = p.Prefix + "_" + metric - } - p.fields[mname] = value -} - -func (p *SpecProcessor) flush() { - p.acc.AddFields("procstat", p.fields, p.tags) - p.fields = make(map[string]interface{}) -} - func NewSpecProcessor( prefix string, acc telegraf.Accumulator, @@ -51,90 +35,58 @@ func NewSpecProcessor( } func (p *SpecProcessor) pushMetrics() { - p.pushNThreadsStats() - p.pushFDStats() - p.pushCtxStats() - p.pushIOStats() - p.pushCPUStats() - p.pushMemoryStats() - p.flush() -} + fields := map[string]interface{}{} -func (p *SpecProcessor) pushNThreadsStats() error { numThreads, err := p.proc.NumThreads() - if err != nil { - return fmt.Errorf("NumThreads error: %s\n", err) + if err == nil { + fields["num_threads"] = numThreads } - p.add("num_threads", numThreads) - return nil -} -func (p *SpecProcessor) pushFDStats() error { fds, err := p.proc.NumFDs() - if err != nil { - return fmt.Errorf("NumFD error: %s\n", err) + if err == nil { + fields["num_fds"] = fds } - p.add("num_fds", fds) - return nil -} -func (p *SpecProcessor) pushCtxStats() error { ctx, err := p.proc.NumCtxSwitches() - if err != nil { - return fmt.Errorf("ContextSwitch error: %s\n", err) + if err == nil { + fields["voluntary_context_switches"] = ctx.Voluntary + fields["involuntary_context_switches"] = ctx.Involuntary } - p.add("voluntary_context_switches", ctx.Voluntary) - p.add("involuntary_context_switches", ctx.Involuntary) - return nil -} -func (p *SpecProcessor) pushIOStats() error { io, err := p.proc.IOCounters() - if err != nil { - return fmt.Errorf("IOCounters error: %s\n", err) + if err == nil { + fields["read_count"] = io.ReadCount + fields["write_count"] = io.WriteCount + fields["read_bytes"] = io.ReadBytes + fields["write_bytes"] = io.WriteCount } - p.add("read_count", io.ReadCount) - p.add("write_count", io.WriteCount) - p.add("read_bytes", io.ReadBytes) - p.add("write_bytes", io.WriteCount) - return nil -} -func (p *SpecProcessor) pushCPUStats() error { cpu_time, err := p.proc.CPUTimes() - if err != nil { - return err + if err == nil { + fields["cpu_time_user"] = cpu_time.User + fields["cpu_time_system"] = cpu_time.System + fields["cpu_time_idle"] = cpu_time.Idle + fields["cpu_time_nice"] = cpu_time.Nice + fields["cpu_time_iowait"] = cpu_time.Iowait + fields["cpu_time_irq"] = cpu_time.Irq + fields["cpu_time_soft_irq"] = cpu_time.Softirq + fields["cpu_time_steal"] = cpu_time.Steal + fields["cpu_time_stolen"] = cpu_time.Stolen + fields["cpu_time_guest"] = cpu_time.Guest + fields["cpu_time_guest_nice"] = cpu_time.GuestNice } - p.add("cpu_time_user", cpu_time.User) - p.add("cpu_time_system", cpu_time.System) - p.add("cpu_time_idle", cpu_time.Idle) - p.add("cpu_time_nice", cpu_time.Nice) - p.add("cpu_time_iowait", cpu_time.Iowait) - p.add("cpu_time_irq", cpu_time.Irq) - p.add("cpu_time_soft_irq", cpu_time.Softirq) - p.add("cpu_time_steal", cpu_time.Steal) - p.add("cpu_time_stolen", cpu_time.Stolen) - p.add("cpu_time_guest", cpu_time.Guest) - p.add("cpu_time_guest_nice", cpu_time.GuestNice) cpu_perc, err := p.proc.CPUPercent(time.Duration(0)) - if err != nil { - return err - } else if cpu_perc == 0 { - return nil + if err == nil && cpu_perc != 0 { + fields["cpu_usage"] = cpu_perc } - p.add("cpu_usage", cpu_perc) - return nil -} - -func (p *SpecProcessor) pushMemoryStats() error { mem, err := p.proc.MemoryInfo() - if err != nil { - return err + if err == nil { + fields["memory_rss"] = mem.RSS + fields["memory_vms"] = mem.VMS + fields["memory_swap"] = mem.Swap } - p.add("memory_rss", mem.RSS) - p.add("memory_vms", mem.VMS) - p.add("memory_swap", mem.Swap) - return nil + + p.acc.AddFields("procstat", fields, p.tags) }