diff --git a/plugins/inputs/procstat/process.go b/plugins/inputs/procstat/process.go index ab2fde601f5c8..8e3e934bbdc55 100644 --- a/plugins/inputs/procstat/process.go +++ b/plugins/inputs/procstat/process.go @@ -26,6 +26,7 @@ type Process interface { RlimitUsage(bool) ([]process.RlimitStat, error) Username() (string, error) CreateTime() (int64, error) + Ppid() (int32, error) } type PIDFinder interface { diff --git a/plugins/inputs/procstat/procstat.go b/plugins/inputs/procstat/procstat.go index 772fe77ae4f13..a27ea2c938d69 100644 --- a/plugins/inputs/procstat/procstat.go +++ b/plugins/inputs/procstat/procstat.go @@ -311,6 +311,11 @@ func (p *Procstat) addMetric(proc Process, acc telegraf.Accumulator, t time.Time } } + ppid, err := proc.Ppid() + if err == nil { + fields[prefix+"ppid"] = ppid + } + acc.AddFields("procstat", fields, proc.Tags(), t) } diff --git a/plugins/inputs/procstat/procstat_test.go b/plugins/inputs/procstat/procstat_test.go index c86ac53b385a0..4f1c15f40150e 100644 --- a/plugins/inputs/procstat/procstat_test.go +++ b/plugins/inputs/procstat/procstat_test.go @@ -164,6 +164,10 @@ func (p *testProc) RlimitUsage(_ bool) ([]process.RlimitStat, error) { return []process.RlimitStat{}, nil } +func (p *testProc) Ppid() (int32, error) { + return 0, nil +} + var pid = PID(42) var exe = "foo"