Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
77
plugins/processors/date/date.go
Normal file
77
plugins/processors/date/date.go
Normal file
|
@ -0,0 +1,77 @@
|
|||
//go:generate ../../../tools/readme_config_includer/generator
|
||||
package date
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/config"
|
||||
"github.com/influxdata/telegraf/plugins/processors"
|
||||
)
|
||||
|
||||
//go:embed sample.conf
|
||||
var sampleConfig string
|
||||
|
||||
const defaultTimezone = "UTC"
|
||||
|
||||
type Date struct {
|
||||
TagKey string `toml:"tag_key"`
|
||||
FieldKey string `toml:"field_key"`
|
||||
DateFormat string `toml:"date_format"`
|
||||
DateOffset config.Duration `toml:"date_offset"`
|
||||
Timezone string `toml:"timezone"`
|
||||
|
||||
location *time.Location
|
||||
}
|
||||
|
||||
func (*Date) SampleConfig() string {
|
||||
return sampleConfig
|
||||
}
|
||||
|
||||
func (d *Date) Init() error {
|
||||
// Check either TagKey or FieldKey specified
|
||||
if len(d.FieldKey) > 0 && len(d.TagKey) > 0 {
|
||||
return errors.New("field_key and tag_key cannot be specified at the same time")
|
||||
} else if len(d.FieldKey) == 0 && len(d.TagKey) == 0 {
|
||||
return errors.New("at least one of field_key or tag_key must be specified")
|
||||
}
|
||||
|
||||
// LoadLocation returns UTC if timezone is the empty string.
|
||||
var err error
|
||||
d.location, err = time.LoadLocation(d.Timezone)
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Date) Apply(in ...telegraf.Metric) []telegraf.Metric {
|
||||
for _, point := range in {
|
||||
tm := point.Time().In(d.location).Add(time.Duration(d.DateOffset))
|
||||
if len(d.TagKey) > 0 {
|
||||
point.AddTag(d.TagKey, tm.Format(d.DateFormat))
|
||||
} else if len(d.FieldKey) > 0 {
|
||||
switch d.DateFormat {
|
||||
case "unix":
|
||||
point.AddField(d.FieldKey, tm.Unix())
|
||||
case "unix_ms":
|
||||
point.AddField(d.FieldKey, tm.UnixNano()/1000000)
|
||||
case "unix_us":
|
||||
point.AddField(d.FieldKey, tm.UnixNano()/1000)
|
||||
case "unix_ns":
|
||||
point.AddField(d.FieldKey, tm.UnixNano())
|
||||
default:
|
||||
point.AddField(d.FieldKey, tm.Format(d.DateFormat))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return in
|
||||
}
|
||||
|
||||
func init() {
|
||||
processors.Add("date", func() telegraf.Processor {
|
||||
return &Date{
|
||||
Timezone: defaultTimezone,
|
||||
}
|
||||
})
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue