Skip to content

基于prometheus规范重新开发的presto_exporter,测试于presto0.203版本

Notifications You must be signed in to change notification settings

7A6A78/presto_exporter

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

presto_exporter

使用 Go 开发的 presto_exporter

符合prometheus的metrics获取,在面向java应用中有常见的三种方式:

  • 使用jmx_exporter以java agent的方式启动,程序开发与运维强耦合,调整、升级、维护成本较高。
  • 本身应用支持符合prometheus的metrics,这需要在应用中引入prometheus的包来定制开发(比如java需要在pom.xml应用相关包,然后按照规范来开发一些监控项),调整、升级、维护成本归属到了应用开发中,与运维脱离。成本都在开发上。
  • 开发应用的专属exporter,由这个单独的程序来提供符合prometheus的监控项,程序开发与运维低耦合,调整、升级、维护成本较低。

这里是使用应用专属exporter来实现的。所以我们描述一下数据的获取的大致流程(可以简单理解为我启动了一个HTTP服务器,然后去调用相关应用预留的运维接口获得数据,然后组装成metrics的形式返回):

定义一个GET的metrics接口,然后像prometheus中注册一个collector。

我们可以注册多个collector,可以把它理解我们要监控的分类。

collector是prometheus定义监控的一种接口,在该接口中我们主要实现以下两个方法:

Describe(chan<- *Desc) // 收集监控项
Collect(chan<- Metric) // 具体的监控数据采集工作

最后将该接口与promhttp.Handler()绑定即可。

代码结构:

presto_exporter/
├── collector   // 采集接口实现
├── entity      // 具体的监控项实体,以及采集实现
├── main.go     // 入口
├── go.mod
└── go.sum

参数解释

  • web.listen-address presto_exporter的工作地址和端口,一般建议是本机ip端口为9088
  • presto.coordinator.url 监控coordinator时,需要配置此参数,填写coordinator的地址
  • presto.worker.url 监控worker时,需要配置此参数,填写worker的地址
  • presto.port presto的工作端口

注意:

以上4个参数都需要配置,presto.coordinator.urlpresto.worker.url 参数互斥。

启动例子:

// 启动对presto的coordinator监控
./presto_exporter --web.listen-address 10.150.31.29:9088 --presto.coordinator.url 10.150.31.29 --presto.port 5797

// 启动对presto的worker监控
./presto_exporter --web.listen-address 10.150.31.31:9088 --presto.worker.url 10.150.31.31 --presto.port 5797

About

基于prometheus规范重新开发的presto_exporter,测试于presto0.203版本

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%