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 { | ||||||
|  |  | ||||||
|  | @ -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