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
|
## optionally specify the path to the ipmitool executable
|
||||||
# path = "/usr/bin/ipmitool"
|
# 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
|
## optionally force session privilege level. Can be CALLBACK, USER, OPERATOR, ADMINISTRATOR
|
||||||
# privilege = "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"
|
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
|
### Example Output
|
||||||
|
|
||||||
|
|
|
@ -32,12 +32,18 @@ type Ipmi struct {
|
||||||
Servers []string
|
Servers []string
|
||||||
Timeout internal.Duration
|
Timeout internal.Duration
|
||||||
MetricVersion int
|
MetricVersion int
|
||||||
|
UseSudo bool
|
||||||
}
|
}
|
||||||
|
|
||||||
var sampleConfig = `
|
var sampleConfig = `
|
||||||
## optionally specify the path to the ipmitool executable
|
## optionally specify the path to the ipmitool executable
|
||||||
# path = "/usr/bin/ipmitool"
|
# 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
|
## optionally force session privilege level. Can be CALLBACK, USER, OPERATOR, ADMINISTRATOR
|
||||||
# privilege = "ADMINISTRATOR"
|
# privilege = "ADMINISTRATOR"
|
||||||
##
|
##
|
||||||
|
@ -112,7 +118,13 @@ func (m *Ipmi) parse(acc telegraf.Accumulator, server string) error {
|
||||||
if m.MetricVersion == 2 {
|
if m.MetricVersion == 2 {
|
||||||
opts = append(opts, "elist")
|
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)
|
out, err := internal.CombinedOutputTimeout(cmd, m.Timeout.Duration)
|
||||||
timestamp := time.Now()
|
timestamp := time.Now()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue