Add use_sudo option to ipmi_sensor input (#6798)
This commit is contained in:
parent
94fc769e0b
commit
debb5e4fa6
|
@ -27,6 +27,11 @@ ipmitool -I lan -H SERVER -U USERID -P PASSW0RD sdr
|
|||
## optionally specify the path to the ipmitool executable
|
||||
# path = "/usr/bin/ipmitool"
|
||||
##
|
||||
## Setting 'use_sudo' to true will make use of sudo to run ipmitool.
|
||||
## Sudo must be configured to allow the telegraf user to run ipmitool
|
||||
## without a password.
|
||||
# use_sudo = false
|
||||
##
|
||||
## optionally force session privilege level. Can be CALLBACK, USER, OPERATOR, ADMINISTRATOR
|
||||
# privilege = "ADMINISTRATOR"
|
||||
##
|
||||
|
@ -86,6 +91,21 @@ ipmi device node. When using udev you can create the device node giving
|
|||
```
|
||||
KERNEL=="ipmi*", MODE="660", GROUP="telegraf"
|
||||
```
|
||||
Alternatively, it is possible to use sudo. You will need the following in your telegraf config:
|
||||
```toml
|
||||
[[inputs.ipmi_sensor]]
|
||||
use_sudo = true
|
||||
```
|
||||
|
||||
You will also need to update your sudoers file:
|
||||
|
||||
```bash
|
||||
$ visudo
|
||||
# Add the following line:
|
||||
Cmnd_Alias IPMITOOL = /usr/bin/ipmitool *
|
||||
telegraf ALL=(root) NOPASSWD: IPMITOOL
|
||||
Defaults!IPMITOOL !logfile, !syslog, !pam_session
|
||||
```
|
||||
|
||||
### Example Output
|
||||
|
||||
|
|
|
@ -32,12 +32,18 @@ type Ipmi struct {
|
|||
Servers []string
|
||||
Timeout internal.Duration
|
||||
MetricVersion int
|
||||
UseSudo bool
|
||||
}
|
||||
|
||||
var sampleConfig = `
|
||||
## optionally specify the path to the ipmitool executable
|
||||
# path = "/usr/bin/ipmitool"
|
||||
##
|
||||
## Setting 'use_sudo' to true will make use of sudo to run ipmitool.
|
||||
## Sudo must be configured to allow the telegraf user to run ipmitool
|
||||
## without a password.
|
||||
# use_sudo = false
|
||||
##
|
||||
## optionally force session privilege level. Can be CALLBACK, USER, OPERATOR, ADMINISTRATOR
|
||||
# privilege = "ADMINISTRATOR"
|
||||
##
|
||||
|
@ -112,7 +118,13 @@ func (m *Ipmi) parse(acc telegraf.Accumulator, server string) error {
|
|||
if m.MetricVersion == 2 {
|
||||
opts = append(opts, "elist")
|
||||
}
|
||||
cmd := execCommand(m.Path, opts...)
|
||||
name := m.Path
|
||||
if m.UseSudo {
|
||||
// -n - avoid prompting the user for input of any kind
|
||||
opts = append([]string{"-n", name}, opts...)
|
||||
name = "sudo"
|
||||
}
|
||||
cmd := execCommand(name, opts...)
|
||||
out, err := internal.CombinedOutputTimeout(cmd, m.Timeout.Duration)
|
||||
timestamp := time.Now()
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue