Skip to content
Snippets Groups Projects
Commit c0d98ecd authored by Matt Davis's avatar Matt Davis Committed by Cameron Sparr
Browse files

Added initial support for gosensors module

parent b44644b6
No related branches found
No related tags found
No related merge requests found
......@@ -28,6 +28,7 @@ import (
_ "github.com/influxdb/telegraf/plugins/inputs/rabbitmq"
_ "github.com/influxdb/telegraf/plugins/inputs/redis"
_ "github.com/influxdb/telegraf/plugins/inputs/rethinkdb"
_ "github.com/influxdb/telegraf/plugins/inputs/sensors"
_ "github.com/influxdb/telegraf/plugins/inputs/statsd"
_ "github.com/influxdb/telegraf/plugins/inputs/system"
_ "github.com/influxdb/telegraf/plugins/inputs/trig"
......
package sensors
import (
"strings"
"github.com/md14454/gosensors"
"github.com/influxdb/telegraf/plugins/inputs"
)
type Sensors struct {
Sensors []string
}
func (_ *Sensors) Description() string {
return "Monitor sensors using lm-sensors package"
}
var sensorsSampleConfig = `
# By default, telegraf gathers stats from all sensors
# detected by the lm-sensors module.
#
# Only collect stats from the selected sensors. Sensors
# are listed as <chip name>:<feature name>. This
# information can be found by running the sensors command.
# e.g. sensors -u
# A * as the feature name will return all features of the chip
#
# sensors = ["coretemp-isa-0000:Core 0", "coretemp-isa-0001:*", ... ]
`
func (_ *Sensors) SampleConfig() string {
return sensorsSampleConfig
}
func (s *Sensors) Gather(acc inputs.Accumulator) error {
gosensors.Init()
defer gosensors.Cleanup()
for _, chip := range gosensors.GetDetectedChips() {
for _, feature := range chip.GetFeatures() {
chipName := chip.String()
featureLabel := feature.GetLabel()
if len(s.Sensors) != 0 {
var found bool
for _, sensor := range s.Sensors {
parts := strings.SplitN(":", sensor, 2)
if parts[0] == chipName {
if parts[1] == "*" || parts[1] == featureLabel {
found = true
break
}
}
}
if !found {
continue
}
}
tags := map[string]string{
"chip": chipName,
"adapter": chip.AdapterName(),
"feature-name": feature.Name,
"feature-label": featureLabel,
}
fieldName := chipName + ":" + featureLabel
fields := map[string]interface{}{
featureLabel: feature.GetValue(),
}
acc.AddFields("sensors", fields, tags)
}
}
return nil
}
func init() {
inputs.Add("sensors", func() inputs.Input {
return &Sensors{}
})
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment