Add Splunk Metrics serializer (#4339)

This commit is contained in:
Lance O'Connor
2018-09-11 13:01:08 -07:00
committed by Daniel Nelson
parent e85a9e0956
commit c80aab0445
6 changed files with 471 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import (
"github.com/influxdata/telegraf/plugins/serializers/graphite"
"github.com/influxdata/telegraf/plugins/serializers/influx"
"github.com/influxdata/telegraf/plugins/serializers/json"
"github.com/influxdata/telegraf/plugins/serializers/splunkmetric"
)
// SerializerOutput is an interface for output plugins that are able to
@@ -60,6 +61,9 @@ type Config struct {
// Timestamp units to use for JSON formatted output
TimestampUnits time.Duration
// Include HEC routing fields for splunkmetric output
HecRouting bool
}
// NewSerializer a Serializer interface based on the given config.
@@ -73,6 +77,8 @@ func NewSerializer(config *Config) (Serializer, error) {
serializer, err = NewGraphiteSerializer(config.Prefix, config.Template, config.GraphiteTagSupport)
case "json":
serializer, err = NewJsonSerializer(config.TimestampUnits)
case "splunkmetric":
serializer, err = NewSplunkmetricSerializer(config.HecRouting)
default:
err = fmt.Errorf("Invalid data format: %s", config.DataFormat)
}
@@ -83,6 +89,10 @@ func NewJsonSerializer(timestampUnits time.Duration) (Serializer, error) {
return json.NewSerializer(timestampUnits)
}
func NewSplunkmetricSerializer(splunkmetric_hec_routing bool) (Serializer, error) {
return splunkmetric.NewSerializer(splunkmetric_hec_routing)
}
func NewInfluxSerializerConfig(config *Config) (Serializer, error) {
var sort influx.FieldSortOrder
if config.InfluxSortFields {