diff --git a/plugins/procstat/README.md b/plugins/procstat/README.md index ba023be91..2330363b8 100644 --- a/plugins/procstat/README.md +++ b/plugins/procstat/README.md @@ -1,10 +1,15 @@ -# Procstat plugin +# Telegraf plugin: procstat + +#### Description The procstat plugin can be used to monitor system resource usage by an -individual process. +individual process using their /proc data. Processes can be specified either by pid file or by executable name. Procstat -plugin will use `pgrep` when executable name is provided to obtain the pid. Proctsta plugin will transmit IO, memory, cpu, file descriptor related measurements for every process specified. A prefix can be set to isolate individual process specific measurements. +plugin will use `pgrep` when executable name is provided to obtain the pid. +Proctsta plugin will transmit IO, memory, cpu, file descriptor related +measurements for every process specified. A prefix can be set to isolate +individual process specific measurements. Example: @@ -19,3 +24,37 @@ Example: pid_file = "/var/run/lxc/dnsmasq.pid" prefix = "dnsmasq" ``` + +# Measurements +Note: prefix will set by the user, per process. + +File descriptor related measurement names: +- procstat_prefix_num_fds value=4 + +Context switch related measurement names: +- procstat_prefix_voluntary_context_switches value=250 +- procstat_prefix_involuntary_context_switches value=0 + +I/O related measurement names: +- procstat_prefix_read_count value=396 +- procstat_prefix_write_count value=1 +- procstat_prefix_read_bytes value=1019904 +- procstat_prefix_write_bytes value=1 + +CPU related measurement names: +- procstat_prefix_cpu_user value=0 +- procstat_prefix_cpu_system value=0.01 +- procstat_prefix_cpu_idle value=0 +- procstat_prefix_cpu_nice value=0 +- procstat_prefix_cpu_iowait value=0 +- procstat_prefix_cpu_irq value=0 +- procstat_prefix_cpu_soft_irq value=0 +- procstat_prefix_cpu_soft_steal value=0 +- procstat_prefix_cpu_soft_stolen value=0 +- procstat_prefix_cpu_soft_guest value=0 +- procstat_prefix_cpu_soft_guest_nice value=0 + +Memory related measurement names: +- procstat_prefix_memory_rss value=1777664 +- procstat_prefix_memory_vms value=24227840 +- procstat_prefix_memory_swap value=282624 diff --git a/plugins/procstat/procstat.go b/plugins/procstat/procstat.go index df7c3c84b..82d85107d 100644 --- a/plugins/procstat/procstat.go +++ b/plugins/procstat/procstat.go @@ -2,13 +2,15 @@ package procstat import ( "fmt" - "github.com/influxdb/telegraf/plugins" - "github.com/shirou/gopsutil/process" "io/ioutil" "os/exec" "strconv" "strings" "sync" + + "github.com/shirou/gopsutil/process" + + "github.com/influxdb/telegraf/plugins" ) type Specification struct { @@ -26,12 +28,12 @@ func NewProcstat() *Procstat { } var sampleConfig = ` - [[process.specifications]] - # pid file - pid_file = "/path/to/foo.pid" + [[procstat.specifications]] + prefix = "nginx" # required + # Use one of pid_file or exe to find process + pid_file = "/var/run/nginx.pid" # executable name (used by pgrep) - exe = "/path/to/foo" - name = "foo" # required + # exe = "nginx" ` func (_ *Procstat) SampleConfig() string { @@ -39,7 +41,7 @@ func (_ *Procstat) SampleConfig() string { } func (_ *Procstat) Description() string { - return "Monitor process cpu and memory usage" + return "Monitor process cpu and memory usage" } func (p *Procstat) Gather(acc plugins.Accumulator) error { diff --git a/plugins/procstat/procstat_test.go b/plugins/procstat/procstat_test.go index 0f02162d1..e0d17ac4d 100644 --- a/plugins/procstat/procstat_test.go +++ b/plugins/procstat/procstat_test.go @@ -1,13 +1,15 @@ package procstat import ( - "github.com/influxdb/telegraf/testutil" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" "io/ioutil" "os" "strconv" "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/influxdb/telegraf/testutil" ) func TestGather(t *testing.T) { diff --git a/plugins/procstat/spec_processor.go b/plugins/procstat/spec_processor.go index af33467eb..81d5fdfa7 100644 --- a/plugins/procstat/spec_processor.go +++ b/plugins/procstat/spec_processor.go @@ -2,8 +2,10 @@ package procstat import ( "fmt" - "github.com/influxdb/telegraf/plugins" + "github.com/shirou/gopsutil/process" + + "github.com/influxdb/telegraf/plugins" ) type SpecProcessor struct {