作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


envoy这个组件的expoter路径为 /stats/prometheus,那么这样的特殊路径如何配置,才能让vm-agent抓取到?

  • 方法1:在 prometheus_cfg.yaml中使用static_config,对所有envoy配置 metric_path

    • 非常麻烦,而且需要让vm-agent不停加载配置
  • 方法2:使用filesd的方法来配置,然后在JSON中通过__metrics_path__字段指定特殊路径。
    • 不行,这个方法走不通
  • 方法3:使用httpsd来配置,然后在JSON中通过__metrics_path__字段指定特殊路径。
    • 这个方法OK

vm的源码中也能看出端倪:VictoriaMetrics-1.72.0-cluster/lib/promscrape/scrapework.go

// ScrapeWork represents a unit of work for scraping Prometheus metrics.
//
// It must be immutable during its lifetime, since it is read from concurrently running goroutines.
type ScrapeWork struct {
// Full URL (including query args) for the scrape.
ScrapeURL string // Interval for scraping the ScrapeURL.
ScrapeInterval time.Duration // Timeout for scraping the ScrapeURL.
ScrapeTimeout time.Duration // How to deal with conflicting labels.
// See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
HonorLabels bool // How to deal with scraped timestamps.
// See https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
HonorTimestamps bool // Whether to deny redirects during requests to scrape config.
DenyRedirects bool // OriginalLabels contains original labels before relabeling.
//
// These labels are needed for relabeling troubleshooting at /targets page.
OriginalLabels []prompbmarshal.Label // Labels to add to the scraped metrics.
//
// The list contains at least the following labels according to https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
//
// * job
// * __address__
// * __scheme__
// * __metrics_path__
// * __scrape_interval__
// * __scrape_timeout__
// * __param_<name>
// * __meta_*
// * user-defined labels set via `relabel_configs` section in `scrape_config`
//
// See also https://prometheus.io/docs/concepts/jobs_instances/
Labels []prompbmarshal.Label // ProxyURL HTTP proxy url
ProxyURL *proxy.URL // Auth config for ProxyUR:
ProxyAuthConfig *promauth.Config // Auth config
AuthConfig *promauth.Config // Optional `metric_relabel_configs`.
MetricRelabelConfigs *promrelabel.ParsedConfigs // The maximum number of metrics to scrape after relabeling.
SampleLimit int // Whether to disable response compression when querying ScrapeURL.
DisableCompression bool // Whether to disable HTTP keep-alive when querying ScrapeURL.
DisableKeepAlive bool // Whether to parse target responses in a streaming manner.
StreamParse bool // The interval for aligning the first scrape.
ScrapeAlignInterval time.Duration // The offset for the first scrape.
ScrapeOffset time.Duration // Optional limit on the number of unique series the scrape target can expose.
SeriesLimit int // The original 'job_name'
jobNameOriginal string
}

【解决了一个小问题】vm-agent中,如何对envoy这样的特殊expoter路径做处理?的更多相关文章

  1. 【解决了一个小问题】golang中引用一个路径较长的库,导致goland中出现"module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2"

    在项目中的go.mod文件中有这样一句: require ( github.com/xxx-devops/xx1/sdk/go v2.2.3 ) 项目的编译没有问题,但是goland中出现如下提示: ...

  2. mysql url 连接配置的一个小坑。 工作中不会遇到。 学习的时候会

    <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> & ...

  3. 【解决了一个小问题】golang protocol buffers 3中去掉json标签中的omitempty

    参考了这篇帖子:golang protobuf从生成的json标记中删除omitempty标记 由于是在windows上开发,因此写了一个python脚本来解决: remove_tag.py impo ...

  4. 【解决了一个小问题】golang gin框架中的模板,让模板中的参数不要做HTML转义

    代码中使用了类似的方式来向模板填充参数: c.HTML(200, "list.html", gin.H{"data":builder.String()}) 模板 ...

  5. 【解决了一个小问题】golang build中因为缓存文件损坏导致的编译错误

    编译的过程中出现了一个吓人的错误: GOROOT=C:\Go #gosetup GOPATH=C:\Users\ahfuzhang\go #gosetup C:\Go\bin\go.exe mod t ...

  6. 【解决了一个小问题】go.mod文件中引用另一个库,总会自动拉取新版本

    我的项目依赖某个旧的公共库: require ( git.xxx.com/myprj/mylib v0.0.43 ) 可以编译的时候,系统总会自动加上这样的路径: require ( git.xxx. ...

  7. 【解决了一个小问题】golang的go.mod中出现版本错误

    代码中的这一句使用prometheus2.28.0版本的代码: import "github.com/prometheus/prometheus/prompb" 我把require ...

  8. 【解决了一个小问题】golang samara的kafka客户端中使用错误版本号导致初始化失败

    发现在如下代码中存储kafka生产者初始化失败: config.Version = sarama.V0_10_2_1 //V2_2_0_0 producer, err := sarama.NewSyn ...

  9. 【解决了一个小问题】golang xorm中使用where id in (xxx),没办法使用参数替换

    代码中使用XORM来从数据库查询数据,有类似如下的代码: session.Where("id in (?)", strings,Join(arr, ",")) ...

  10. 【解决了一个小问题】gin框架中出现如下错误:"[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 500"

    POST到数据到一条gin框架的接口后,客户端收到400错误,并且返回了业务中返回的"decode json fail". 关键代码是: func report(c *gin.Co ...

随机推荐

  1. React Native 打包 App 发布 iOS 及加固混淆过程

    React Native 打包 App 发布 iOS 及加固混淆过程 摘要 本文将介绍如何使用 React Native 打包并发布 iOS 应用到 App Store,并介绍了如何进行应用的加固和混 ...

  2. Rocketmq学习2——Rocketmq消息过滤&事务消息&延迟消息原理源码浅析

    系列文章目录和关于我 零丶引入 在<Rocketmq学习1--Rocketmq架构&消息存储&刷盘机制>中我们学习了rocketmq的架构,以及消息存储设计,在此消息存储设 ...

  3. Ajax请求 content_type ajax发送Fromdata对象

    目录 Ajax请求入门 ajax实现简单计算器 content_type urlencode fromdata application/json 自定义request.JSON ajax发送Fromd ...

  4. # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint

    linux使用go连接etcd集群时报错: # github.com/coreos/etcd/clientv3/balancer/resolver/endpoint /root/go/pkg/mod/ ...

  5. CO01/CO02生产订单组件库存地点替换

    一.生产订单组件库存地点替换 当生产订单维护组件点击保存时,根据对应的工厂和工作中心,到配置表中查询对应的库存地点,并将自动带出的库存地点替换 二.隐式增强 在函数CO_VB_ORDER_POST中添 ...

  6. 一次惨痛教训让我写了个Windows定期备份文件脚本

    前言 说实话在写这篇文章的时候,咸鱼不禁又想起了那件男默女泪的往事   我喜欢做笔记,我觉得好记性不如烂笔头,所以在我的学生以及职业生涯阶段,我用过四款笔记应用--Onenote.语雀.印象笔记.Ty ...

  7. 完全免费白嫖 GPT-4 的终极方案!

    原文链接:https://icloudnative.io/posts/completely-free-to-use-gpt4/ GPT-4 目前是世界上最强的多模态大模型,能力甩 GPT-3.5 好几 ...

  8. freeswitch设置最大呼叫时长

    概述 freeswitch 作为开源VOIP软交换,对经过fs的每一通电话都要有足够的控制. 在一通电话呼叫中,通话时长是一个重要的数据,客户在实际使用过程中,会有各种针对呼叫时长的场景需求. 本篇文 ...

  9. Bash 常用命令总结

    基础常用命令 某个命令 --h,对这个命令进行解释 某个命令 --help,解释这个命令(更详细) man某个命令,文档式解释这个命令(更更详细)(执行该命令后,还可以按/+关键字进行查询结果的搜索) ...

  10. Liunx常用操作(11)-VI编辑器-末行模式命令

    vI编辑器三种模式 分别为命令模式.输入模式.末行模式.