Report available fields if utmp is unreadable (#4043)
(cherry picked from commit 120be7e87b
)
This commit is contained in:
parent
cdc40783d5
commit
6081bd0b5f
|
@ -1,8 +1,7 @@
|
|||
# System Input Plugin
|
||||
|
||||
The system plugin gathers general stats on system load, uptime,
|
||||
and number of users logged in. It is basically equivalent
|
||||
to the unix `uptime` command.
|
||||
and number of users logged in. It is similar to the unix `uptime` command.
|
||||
|
||||
### Configuration:
|
||||
|
||||
|
@ -11,10 +10,15 @@ to the unix `uptime` command.
|
|||
[[inputs.system]]
|
||||
# no configuration
|
||||
```
|
||||
#### Permissions:
|
||||
|
||||
### Measurements & Fields:
|
||||
The `n_users` field requires read access to `/var/run/utmp`, and may require
|
||||
the `telegraf` user to be added to the `utmp` group on some systems.
|
||||
|
||||
### Metrics:
|
||||
|
||||
- system
|
||||
- fields:
|
||||
- load1 (float)
|
||||
- load15 (float)
|
||||
- load5 (float)
|
||||
|
@ -23,17 +27,10 @@ to the unix `uptime` command.
|
|||
- uptime (integer, seconds)
|
||||
- uptime_format (string)
|
||||
|
||||
### Tags:
|
||||
|
||||
None
|
||||
|
||||
### Example Output:
|
||||
|
||||
```
|
||||
$ telegraf --config ~/ws/telegraf.conf --input-filter system --test
|
||||
* Plugin: system, Collection 1
|
||||
* Plugin: inputs.system, Collection 1
|
||||
> system,host=tyrion load1=3.72,load5=2.4,load15=2.1,n_users=3i,n_cpus=4i 1483964144000000000
|
||||
> system,host=tyrion uptime=1249632i 1483964144000000000
|
||||
> system,host=tyrion uptime_format="14 days, 11:07" 1483964144000000000
|
||||
system,host=tyrion load1=3.72,load5=2.4,load15=2.1,n_users=3i,n_cpus=4i 1483964144000000000
|
||||
system,host=tyrion uptime=1249632i 1483964144000000000
|
||||
system,host=tyrion uptime_format="14 days, 11:07" 1483964144000000000
|
||||
```
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
|
@ -28,23 +29,27 @@ func (_ *SystemStats) Gather(acc telegraf.Accumulator) error {
|
|||
return err
|
||||
}
|
||||
|
||||
fields := map[string]interface{}{
|
||||
"load1": loadavg.Load1,
|
||||
"load5": loadavg.Load5,
|
||||
"load15": loadavg.Load15,
|
||||
"n_cpus": runtime.NumCPU(),
|
||||
}
|
||||
|
||||
users, err := host.Users()
|
||||
if err == nil {
|
||||
fields["n_users"] = len(users)
|
||||
} else if !os.IsPermission(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
acc.AddGauge("system", fields, nil)
|
||||
|
||||
hostinfo, err := host.Info()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
users, err := host.Users()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
acc.AddGauge("system", map[string]interface{}{
|
||||
"load1": loadavg.Load1,
|
||||
"load5": loadavg.Load5,
|
||||
"load15": loadavg.Load15,
|
||||
"n_users": len(users),
|
||||
"n_cpus": runtime.NumCPU(),
|
||||
}, nil)
|
||||
acc.AddCounter("system", map[string]interface{}{
|
||||
"uptime": hostinfo.Uptime,
|
||||
}, nil)
|
||||
|
|
Loading…
Reference in New Issue