gpt4 book ai didi

go - 我们如何在 Prometheus 指标系列中添加我们自己的时间戳?

转载 作者:行者123 更新时间:2023-12-05 02:02:45 24 4
gpt4 key购买 nike

我正在尝试添加我自己的时间戳而不是 Prometheus 的时间戳。

例如:

node_value{endpoint="https",instance="xx.xx.xx.xx",job="prometheus,node="node1"}

489846 @1610014796.199

489933 @1610014826.199

要求:node_value(上图)是一个具有两个值和时间戳(由 prometheus 添加的抓取时间戳)的指标,而不是抓取时间戳,我想添加我自己的时间戳,这是我从第三方获取的。我们有这方面的规定吗?

注意:我使用的是 golang prometheus 客户端。

最佳答案

这可以使用 prometheus golang 客户端中提供的 NewMetricWithTimestamp,但要公开它,您必须编写一些代码。

首先,您必须编写一个新的 promehetus 收集器来实现 Collector interface ,然后您提供逻辑来为您的指标设置自定义时间戳。

假设我们要使用名为 myCollector 的收集器创建一个具有自定义时间戳的指标 my_metric:

package main

import (
"net/http"
"time"

"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/prometheus/common/log"
)

type myCollector struct {
metric *prometheus.Desc
}

func (c *myCollector) Describe(ch chan<- *prometheus.Desc) {
ch <- c.metric
}

func (c *myCollector) Collect(ch chan<- prometheus.Metric) {
// your logic should be placed here

t := time.Date(2009, time.November, 10, 23, 0, 0, 12345678, time.UTC)
s := prometheus.NewMetricWithTimestamp(t, prometheus.MustNewConstMetric(c.metric, prometheus.CounterValue, 123))

ch <- s
}

func main() {

collector := &myCollector{
metric: prometheus.NewDesc(
"my_metric",
"This is my metric with custom TS",
nil,
nil,
),
}
prometheus.MustRegister(collector)

http.Handle("/metrics", promhttp.Handler())
log.Info("Beginning to serve on port :8080")
http.ListenAndServe(":2112", nil)
}

现在,如果您检查 localhost:2112/metrics,您会看到这个,以及您想要的时间戳:

.
.
.
# HELP my_metric This is my metric with custom TS
# TYPE my_metric counter
my_metric 123 1257894000012
.
.
.

关于go - 我们如何在 Prometheus 指标系列中添加我们自己的时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65610580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com