51 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
| package temp
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/influxdata/telegraf"
 | |
| 	"github.com/influxdata/telegraf/plugins/inputs"
 | |
| 	"github.com/influxdata/telegraf/plugins/inputs/system"
 | |
| )
 | |
| 
 | |
| type Temperature struct {
 | |
| 	ps system.PS
 | |
| }
 | |
| 
 | |
| func (t *Temperature) Description() string {
 | |
| 	return "Read metrics about temperature"
 | |
| }
 | |
| 
 | |
| const sampleConfig = ""
 | |
| 
 | |
| func (t *Temperature) SampleConfig() string {
 | |
| 	return sampleConfig
 | |
| }
 | |
| 
 | |
| func (t *Temperature) Gather(acc telegraf.Accumulator) error {
 | |
| 	temps, err := t.ps.Temperature()
 | |
| 	if err != nil {
 | |
| 		if strings.Contains(err.Error(), "not implemented yet") {
 | |
| 			return fmt.Errorf("plugin is not supported on this platform: %v", err)
 | |
| 		}
 | |
| 		return fmt.Errorf("error getting temperatures info: %s", err)
 | |
| 	}
 | |
| 	for _, temp := range temps {
 | |
| 		tags := map[string]string{
 | |
| 			"sensor": temp.SensorKey,
 | |
| 		}
 | |
| 		fields := map[string]interface{}{
 | |
| 			"temp": temp.Temperature,
 | |
| 		}
 | |
| 		acc.AddFields("temp", fields, tags)
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func init() {
 | |
| 	inputs.Add("temp", func() telegraf.Input {
 | |
| 		return &Temperature{ps: system.NewSystemPS()}
 | |
| 	})
 | |
| }
 |