parent
e424d47ce6
commit
6827459b9f
|
@ -1,10 +1,15 @@
|
||||||
# Procstat plugin
|
# Telegraf plugin: procstat
|
||||||
|
|
||||||
|
#### Description
|
||||||
|
|
||||||
The procstat plugin can be used to monitor system resource usage by an
|
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
|
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:
|
Example:
|
||||||
|
|
||||||
|
@ -19,3 +24,37 @@ Example:
|
||||||
pid_file = "/var/run/lxc/dnsmasq.pid"
|
pid_file = "/var/run/lxc/dnsmasq.pid"
|
||||||
prefix = "dnsmasq"
|
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
|
||||||
|
|
|
@ -2,13 +2,15 @@ package procstat
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/influxdb/telegraf/plugins"
|
|
||||||
"github.com/shirou/gopsutil/process"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"github.com/shirou/gopsutil/process"
|
||||||
|
|
||||||
|
"github.com/influxdb/telegraf/plugins"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Specification struct {
|
type Specification struct {
|
||||||
|
@ -26,12 +28,12 @@ func NewProcstat() *Procstat {
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleConfig = `
|
var sampleConfig = `
|
||||||
[[process.specifications]]
|
[[procstat.specifications]]
|
||||||
# pid file
|
prefix = "nginx" # required
|
||||||
pid_file = "/path/to/foo.pid"
|
# Use one of pid_file or exe to find process
|
||||||
|
pid_file = "/var/run/nginx.pid"
|
||||||
# executable name (used by pgrep)
|
# executable name (used by pgrep)
|
||||||
exe = "/path/to/foo"
|
# exe = "nginx"
|
||||||
name = "foo" # required
|
|
||||||
`
|
`
|
||||||
|
|
||||||
func (_ *Procstat) SampleConfig() string {
|
func (_ *Procstat) SampleConfig() string {
|
||||||
|
@ -39,7 +41,7 @@ func (_ *Procstat) SampleConfig() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (_ *Procstat) Description() 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 {
|
func (p *Procstat) Gather(acc plugins.Accumulator) error {
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
package procstat
|
package procstat
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/influxdb/telegraf/testutil"
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
"github.com/influxdb/telegraf/testutil"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestGather(t *testing.T) {
|
func TestGather(t *testing.T) {
|
||||||
|
|
|
@ -2,8 +2,10 @@ package procstat
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/influxdb/telegraf/plugins"
|
|
||||||
"github.com/shirou/gopsutil/process"
|
"github.com/shirou/gopsutil/process"
|
||||||
|
|
||||||
|
"github.com/influxdb/telegraf/plugins"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SpecProcessor struct {
|
type SpecProcessor struct {
|
||||||
|
|
Loading…
Reference in New Issue