Skip to content

Commit

Permalink
Add user tag to procstat input (influxdata#4386)
Browse files Browse the repository at this point in the history
  • Loading branch information
glinton authored and otherpirate committed Mar 15, 2019
1 parent 051d31a commit 82f2351
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 0 deletions.
5 changes: 5 additions & 0 deletions plugins/inputs/procstat/process.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ type Process interface {
Percent(interval time.Duration) (float64, error)
Times() (*cpu.TimesStat, error)
RlimitUsage(bool) ([]process.RlimitStat, error)
Username() (string, error)
}

type PIDFinder interface {
Expand Down Expand Up @@ -58,6 +59,10 @@ func (p *Proc) PID() PID {
return PID(p.Process.Pid)
}

func (p *Proc) Username() (string, error) {
return p.Process.Username()
}

func (p *Proc) Percent(interval time.Duration) (float64, error) {
cpu_perc, err := p.Process.Percent(time.Duration(0))
if !p.hasCPUTimes && err == nil {
Expand Down
8 changes: 8 additions & 0 deletions plugins/inputs/procstat/procstat.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,14 @@ func (p *Procstat) addMetrics(proc Process, acc telegraf.Accumulator) {
}
}

//If user tag is not already set, set to actual name
if _, ok := proc.Tags()["user"]; !ok {
user, err := proc.Username()
if err == nil {
proc.Tags()["user"] = user
}
}

//If pid is not present as a tag, include it as a field.
if _, pidInTags := proc.Tags()["pid"]; !pidInTags {
fields["pid"] = int32(proc.PID())
Expand Down
4 changes: 4 additions & 0 deletions plugins/inputs/procstat/procstat_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,10 @@ func (p *testProc) PID() PID {
return p.pid
}

func (p *testProc) Username() (string, error) {
return "testuser", nil
}

func (p *testProc) Tags() map[string]string {
return p.tags
}
Expand Down

0 comments on commit 82f2351

Please sign in to comment.