为了账号安全,请及时绑定邮箱和手机立即绑定

我们如何在普罗米修斯度量序列中添加自己的时间戳?

我们如何在普罗米修斯度量序列中添加自己的时间戳?

Go
犯罪嫌疑人X 2022-08-01 15:12:11
我正在尝试添加自己的时间戳,而不是普罗米修斯的时间戳。例如:node_value{endpoint=“https”,instance=“xx.xx.xx.xx”,job=“prometheus,node=”node1“}489846 @1610014796.199489933 @1610014826.199要求:node_value(上图)是一个具有两个值和时间戳的指标(由prometheus添加的刮擦时间戳),而不是刮取时间戳,我想添加我自己的时间戳,我从第三方获取。我们对此有规定吗?注意:我正在使用golang prometheus客户端。
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

使用prometheus golang客户端中提供的NewMetricWithTimestamp,这是可能的,但是为了公开它,你必须做一些代码。


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


假设我们将使用名为 :my_metricmyCollector


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

.

.

.


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信