procstat plugin: store PID as a field

closes #1460
This commit is contained in:
Cameron Sparr 2016-07-13 18:49:17 -06:00
parent 21add2c799
commit d5e7439343
3 changed files with 6 additions and 6 deletions

View File

@ -49,6 +49,7 @@ should now look like:
- [#1334](https://github.com/influxdata/telegraf/issues/1334): Prometheus output, metric refresh and caching fixes. - [#1334](https://github.com/influxdata/telegraf/issues/1334): Prometheus output, metric refresh and caching fixes.
- [#1432](https://github.com/influxdata/telegraf/issues/1432): Panic fix for multiple graphite outputs under very high load. - [#1432](https://github.com/influxdata/telegraf/issues/1432): Panic fix for multiple graphite outputs under very high load.
- [#1412](https://github.com/influxdata/telegraf/pull/1412): Instrumental output has better reconnect behavior - [#1412](https://github.com/influxdata/telegraf/pull/1412): Instrumental output has better reconnect behavior
- [#1460](https://github.com/influxdata/telegraf/issues/1460): Remove PID from procstat plugin to fix cardinality issues.
## v1.0 beta 2 [2016-06-21] ## v1.0 beta 2 [2016-06-21]

View File

@ -70,7 +70,7 @@ func (p *Procstat) Gather(acc telegraf.Accumulator) error {
p.Exe, p.PidFile, p.Pattern, p.User, err.Error()) p.Exe, p.PidFile, p.Pattern, p.User, err.Error())
} else { } else {
for pid, proc := range p.pidmap { for pid, proc := range p.pidmap {
p := NewSpecProcessor(p.ProcessName, p.Prefix, acc, proc, p.tagmap[pid]) p := NewSpecProcessor(p.ProcessName, p.Prefix, pid, acc, proc, p.tagmap[pid])
p.pushMetrics() p.pushMetrics()
} }
} }
@ -140,7 +140,6 @@ func (p *Procstat) pidsFromFile() ([]int32, error) {
out = append(out, int32(pid)) out = append(out, int32(pid))
p.tagmap[int32(pid)] = map[string]string{ p.tagmap[int32(pid)] = map[string]string{
"pidfile": p.PidFile, "pidfile": p.PidFile,
"pid": strings.TrimSpace(string(pidString)),
} }
} }
} }
@ -165,7 +164,6 @@ func (p *Procstat) pidsFromExe() ([]int32, error) {
out = append(out, int32(ipid)) out = append(out, int32(ipid))
p.tagmap[int32(ipid)] = map[string]string{ p.tagmap[int32(ipid)] = map[string]string{
"exe": p.Exe, "exe": p.Exe,
"pid": pid,
} }
} else { } else {
outerr = err outerr = err
@ -193,7 +191,6 @@ func (p *Procstat) pidsFromPattern() ([]int32, error) {
out = append(out, int32(ipid)) out = append(out, int32(ipid))
p.tagmap[int32(ipid)] = map[string]string{ p.tagmap[int32(ipid)] = map[string]string{
"pattern": p.Pattern, "pattern": p.Pattern,
"pid": pid,
} }
} else { } else {
outerr = err outerr = err
@ -221,7 +218,6 @@ func (p *Procstat) pidsFromUser() ([]int32, error) {
out = append(out, int32(ipid)) out = append(out, int32(ipid))
p.tagmap[int32(ipid)] = map[string]string{ p.tagmap[int32(ipid)] = map[string]string{
"user": p.User, "user": p.User,
"pid": pid,
} }
} else { } else {
outerr = err outerr = err

View File

@ -10,6 +10,7 @@ import (
type SpecProcessor struct { type SpecProcessor struct {
Prefix string Prefix string
pid int32
tags map[string]string tags map[string]string
fields map[string]interface{} fields map[string]interface{}
acc telegraf.Accumulator acc telegraf.Accumulator
@ -19,6 +20,7 @@ type SpecProcessor struct {
func NewSpecProcessor( func NewSpecProcessor(
processName string, processName string,
prefix string, prefix string,
pid int32,
acc telegraf.Accumulator, acc telegraf.Accumulator,
p *process.Process, p *process.Process,
tags map[string]string, tags map[string]string,
@ -33,6 +35,7 @@ func NewSpecProcessor(
} }
return &SpecProcessor{ return &SpecProcessor{
Prefix: prefix, Prefix: prefix,
pid: pid,
tags: tags, tags: tags,
fields: make(map[string]interface{}), fields: make(map[string]interface{}),
acc: acc, acc: acc,
@ -45,7 +48,7 @@ func (p *SpecProcessor) pushMetrics() {
if p.Prefix != "" { if p.Prefix != "" {
prefix = p.Prefix + "_" prefix = p.Prefix + "_"
} }
fields := map[string]interface{}{} fields := map[string]interface{}{"pid": p.pid}
numThreads, err := p.proc.NumThreads() numThreads, err := p.proc.NumThreads()
if err == nil { if err == nil {