Add option to report input timestamp in prometheus output (#5292)
This commit is contained in:
committed by
Daniel Nelson
parent
452b13a4e3
commit
3380fdf69d
@@ -35,4 +35,7 @@ This plugin starts a [Prometheus](https://prometheus.io/) Client, it exposes all
|
||||
## If set, enable TLS with the given certificate.
|
||||
# tls_cert = "/etc/ssl/telegraf.crt"
|
||||
# tls_key = "/etc/ssl/telegraf.key"
|
||||
|
||||
## Export metric collection time.
|
||||
# export_timestamp = false
|
||||
```
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
@@ -38,6 +37,8 @@ type Sample struct {
|
||||
// Histograms and Summaries need a count and a sum
|
||||
Count uint64
|
||||
Sum float64
|
||||
// Metric timestamp
|
||||
Timestamp time.Time
|
||||
// Expiration is the deadline that this Sample is valid until.
|
||||
Expiration time.Time
|
||||
}
|
||||
@@ -64,6 +65,7 @@ type PrometheusClient struct {
|
||||
Path string `toml:"path"`
|
||||
CollectorsExclude []string `toml:"collectors_exclude"`
|
||||
StringAsLabel bool `toml:"string_as_label"`
|
||||
ExportTimestamp bool `toml:"export_timestamp"`
|
||||
|
||||
server *http.Server
|
||||
|
||||
@@ -103,6 +105,9 @@ var sampleConfig = `
|
||||
## If set, enable TLS with the given certificate.
|
||||
# tls_cert = "/etc/ssl/telegraf.crt"
|
||||
# tls_key = "/etc/ssl/telegraf.key"
|
||||
|
||||
## Export metric collection time.
|
||||
# export_timestamp = false
|
||||
`
|
||||
|
||||
func (p *PrometheusClient) auth(h http.Handler) http.Handler {
|
||||
@@ -159,7 +164,7 @@ func (p *PrometheusClient) Connect() error {
|
||||
case "gocollector":
|
||||
registry.Register(prometheus.NewGoCollector())
|
||||
case "process":
|
||||
registry.Register(prometheus.NewProcessCollector(os.Getpid(), ""))
|
||||
registry.Register(prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{}))
|
||||
default:
|
||||
return fmt.Errorf("unrecognized collector %s", collector)
|
||||
}
|
||||
@@ -282,6 +287,9 @@ func (p *PrometheusClient) Collect(ch chan<- prometheus.Metric) {
|
||||
name, labels, err.Error())
|
||||
}
|
||||
|
||||
if p.ExportTimestamp {
|
||||
metric = prometheus.NewMetricWithTimestamp(sample.Timestamp, metric)
|
||||
}
|
||||
ch <- metric
|
||||
}
|
||||
}
|
||||
@@ -398,6 +406,7 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
|
||||
SummaryValue: summaryvalue,
|
||||
Count: count,
|
||||
Sum: sum,
|
||||
Timestamp: point.Time(),
|
||||
Expiration: now.Add(p.ExpirationInterval.Duration),
|
||||
}
|
||||
mname = sanitize(point.Name())
|
||||
@@ -439,6 +448,7 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
|
||||
HistogramValue: histogramvalue,
|
||||
Count: count,
|
||||
Sum: sum,
|
||||
Timestamp: point.Time(),
|
||||
Expiration: now.Add(p.ExpirationInterval.Duration),
|
||||
}
|
||||
mname = sanitize(point.Name())
|
||||
@@ -463,6 +473,7 @@ func (p *PrometheusClient) Write(metrics []telegraf.Metric) error {
|
||||
sample := &Sample{
|
||||
Labels: labels,
|
||||
Value: value,
|
||||
Timestamp: point.Time(),
|
||||
Expiration: now.Add(p.ExpirationInterval.Duration),
|
||||
}
|
||||
|
||||
@@ -500,6 +511,7 @@ func init() {
|
||||
return &PrometheusClient{
|
||||
ExpirationInterval: internal.Duration{Duration: time.Second * 60},
|
||||
StringAsLabel: true,
|
||||
ExportTimestamp: true,
|
||||
fam: make(map[string]*MetricFamily),
|
||||
now: time.Now,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user