0.3.0: procstat

This commit is contained in:
Cameron Sparr 2015-12-14 23:37:25 -06:00
parent f284c8c154
commit 0e55c371b7
2 changed files with 24 additions and 13 deletions

View File

@ -3,6 +3,8 @@
### Release Notes ### Release Notes
- **breaking change** the `io` plugin has been renamed `diskio` - **breaking change** the `io` plugin has been renamed `diskio`
- **breaking change** Plugin measurements aggregated into a single measurement. - **breaking change** Plugin measurements aggregated into a single measurement.
- `procstat` cpu measurements are now prepended with `cpu_time_` instead of
only `cpu_`
### Features ### Features
- Plugin measurements aggregated into a single measurement. - Plugin measurements aggregated into a single measurement.

View File

@ -12,6 +12,7 @@ import (
type SpecProcessor struct { type SpecProcessor struct {
Prefix string Prefix string
tags map[string]string tags map[string]string
fields map[string]interface{}
acc plugins.Accumulator acc plugins.Accumulator
proc *process.Process proc *process.Process
} }
@ -23,7 +24,12 @@ func (p *SpecProcessor) add(metric string, value interface{}) {
} else { } else {
mname = p.Prefix + "_" + metric mname = p.Prefix + "_" + metric
} }
p.acc.Add(mname, value, p.tags) p.fields[mname] = value
}
func (p *SpecProcessor) flush() {
p.acc.AddFields("procstat", p.fields, p.tags)
p.fields = make(map[string]interface{})
} }
func NewSpecProcessor( func NewSpecProcessor(
@ -39,6 +45,7 @@ func NewSpecProcessor(
return &SpecProcessor{ return &SpecProcessor{
Prefix: prefix, Prefix: prefix,
tags: tags, tags: tags,
fields: make(map[string]interface{}),
acc: acc, acc: acc,
proc: p, proc: p,
} }
@ -60,6 +67,7 @@ func (p *SpecProcessor) pushMetrics() {
if err := p.pushMemoryStats(); err != nil { if err := p.pushMemoryStats(); err != nil {
log.Printf("procstat, mem stats not available: %s", err.Error()) log.Printf("procstat, mem stats not available: %s", err.Error())
} }
p.flush()
} }
func (p *SpecProcessor) pushFDStats() error { func (p *SpecProcessor) pushFDStats() error {
@ -94,21 +102,22 @@ func (p *SpecProcessor) pushIOStats() error {
} }
func (p *SpecProcessor) pushCPUStats() error { func (p *SpecProcessor) pushCPUStats() error {
cpu, err := p.proc.CPUTimes() cpu_time, err := p.proc.CPUTimes()
if err != nil { if err != nil {
return err return err
} }
p.add("cpu_user", cpu.User) p.add("cpu_time_user", cpu_time.User)
p.add("cpu_system", cpu.System) p.add("cpu_time_system", cpu_time.System)
p.add("cpu_idle", cpu.Idle) p.add("cpu_time_idle", cpu_time.Idle)
p.add("cpu_nice", cpu.Nice) p.add("cpu_time_nice", cpu_time.Nice)
p.add("cpu_iowait", cpu.Iowait) p.add("cpu_time_iowait", cpu_time.Iowait)
p.add("cpu_irq", cpu.Irq) p.add("cpu_time_irq", cpu_time.Irq)
p.add("cpu_soft_irq", cpu.Softirq) p.add("cpu_time_soft_irq", cpu_time.Softirq)
p.add("cpu_soft_steal", cpu.Steal) p.add("cpu_time_soft_steal", cpu_time.Steal)
p.add("cpu_soft_stolen", cpu.Stolen) p.add("cpu_time_soft_stolen", cpu_time.Stolen)
p.add("cpu_soft_guest", cpu.Guest) p.add("cpu_time_soft_guest", cpu_time.Guest)
p.add("cpu_soft_guest_nice", cpu.GuestNice) p.add("cpu_time_soft_guest_nice", cpu_time.GuestNice)
return nil return nil
} }