influxdb/telegraf/plugins/inputs/procstat.go

76 lines
2.1 KiB
Go

package inputs
import (
"errors"
"fmt"
)
// Procstat is based on telegraf procstat input plugin.
type Procstat struct {
baseInput
Exe string `json:"exe"`
}
// PluginName is based on telegraf plugin name.
func (p *Procstat) PluginName() string {
return "procstat"
}
// TOML encodes to toml string.
func (p *Procstat) TOML() string {
return fmt.Sprintf(`[[inputs.%s]]
## PID file to monitor process
pid_file = "/var/run/nginx.pid"
## executable name (ie, pgrep <exe>)
# exe = "%s"
## pattern as argument for pgrep (ie, pgrep -f <pattern>)
# pattern = "nginx"
## user as argument for pgrep (ie, pgrep -u <user>)
# user = "nginx"
## Systemd unit name
# systemd_unit = "nginx.service"
## CGroup name or path
# cgroup = "systemd/system.slice/nginx.service"
## Windows service name
# win_service = ""
## override for process_name
## This is optional; default is sourced from /proc/<pid>/status
# process_name = "bar"
## Field name prefix
# prefix = ""
## When true add the full cmdline as a tag.
# cmdline_tag = false
## Mode to use when calculating CPU usage. Can be one of 'solaris' or 'irix'.
# mode = "irix"
## Add the PID as a tag instead of as a field. When collecting multiple
## processes with otherwise matching tags this setting should be enabled to
## ensure each process has a unique identity.
##
## Enabling this option may result in a large number of series, especially
## when processes have a short lifetime.
# pid_tag = false
## Method to use when finding process IDs. Can be one of 'pgrep', or
## 'native'. The pgrep finder calls the pgrep executable in the PATH while
## the native finder performs the search directly in a manor dependent on the
## platform. Default is 'pgrep'
# pid_finder = "pgrep"
`, p.PluginName(), p.Exe)
}
// UnmarshalTOML decodes the parsed data to the object
func (p *Procstat) UnmarshalTOML(data interface{}) error {
dataOK, ok := data.(map[string]interface{})
if !ok {
return errors.New("bad exe for procstat input plugin")
}
p.Exe, _ = dataOK["exe"].(string)
return nil
}