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
|
# System Input Plugin
|
||||||
|
|
||||||
The system plugin gathers general stats on system load, uptime,
|
The system plugin gathers general stats on system load, uptime,
|
||||||
and number of users logged in. It is basically equivalent
|
and number of users logged in. It is similar to the unix `uptime` command.
|
||||||
to the unix `uptime` command.
|
|
||||||
|
|
||||||
### Configuration:
|
### Configuration:
|
||||||
|
|
||||||
|
@ -11,10 +10,15 @@ to the unix `uptime` command.
|
||||||
[[inputs.system]]
|
[[inputs.system]]
|
||||||
# no configuration
|
# 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
|
- system
|
||||||
|
- fields:
|
||||||
- load1 (float)
|
- load1 (float)
|
||||||
- load15 (float)
|
- load15 (float)
|
||||||
- load5 (float)
|
- load5 (float)
|
||||||
|
@ -23,17 +27,10 @@ to the unix `uptime` command.
|
||||||
- uptime (integer, seconds)
|
- uptime (integer, seconds)
|
||||||
- uptime_format (string)
|
- uptime_format (string)
|
||||||
|
|
||||||
### Tags:
|
|
||||||
|
|
||||||
None
|
|
||||||
|
|
||||||
### Example Output:
|
### Example Output:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ telegraf --config ~/ws/telegraf.conf --input-filter system --test
|
system,host=tyrion load1=3.72,load5=2.4,load15=2.1,n_users=3i,n_cpus=4i 1483964144000000000
|
||||||
* Plugin: system, Collection 1
|
system,host=tyrion uptime=1249632i 1483964144000000000
|
||||||
* Plugin: inputs.system, Collection 1
|
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"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -28,23 +29,27 @@ func (_ *SystemStats) Gather(acc telegraf.Accumulator) error {
|
||||||
return err
|
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()
|
hostinfo, err := host.Info()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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{}{
|
acc.AddCounter("system", map[string]interface{}{
|
||||||
"uptime": hostinfo.Uptime,
|
"uptime": hostinfo.Uptime,
|
||||||
}, nil)
|
}, nil)
|
||||||
|
|
Loading…
Reference in New Issue