如何连接Prometheus与Presto JMX?从零构建Exporter及jmx_exporter用法
从零构建Presto Exporter & 使用JMX Exporter替代方案
一、手动构建yahoojapan/presto_exporter
你提到的仓库确实没有预编译的二进制文件,不过自己构建很简单,步骤如下:
- 先确保本地有Git、Maven(Java 8+ 环境也得备齐)
- 克隆仓库到本地:
git clone git@github.com:yahoojapan/presto_exporter.git - 进入项目目录:
cd presto_exporter - 执行Maven打包命令:
mvn clean package -DskipTests - 打包完成后,
target目录下会生成一个带所有依赖的jar包,命名格式类似presto_exporter-<版本号>-jar-with-dependencies.jar,这个就是可以直接运行的二进制文件了。
运行时可以用类似命令指定Presto的JMX地址和exporter监听端口:java -jar target/presto_exporter-<版本号>-jar-with-dependencies.jar -presto.jmx.uri service:jmx:rmi:///jndi/rmi://<presto-host>:<jmx-port>/jmxrmi -web.listen-address :9100
二、使用通用的JMX Exporter替代
当然可以用jmx_exporter来抓取Presto的JMX指标,这是更通用、更省心的方案,不需要依赖特定的Presto exporter,操作步骤如下:
- 准备jmx_exporter agent:下载对应版本的
jmx_prometheus_javaagent.jar(注意版本要和你的Java环境兼容) - 编写Presto指标配置文件:创建一个YAML配置文件(比如
presto_jmx.yaml),定义要抓取的JMX指标规则,示例配置如下:
lowercaseOutputName: true rules: # 抓取Presto集群级核心指标 - pattern: 'presto<type=Cluster, name=Cluster><>(activeNodes|totalNodes|runningQueries|queuedQueries)' name: presto_cluster_$1 # 抓取节点级资源指标 - pattern: 'presto<type=Node, name=(\w+)><>(cpuUsage|heapUsed|heapTotal)' name: presto_node_$2 labels: node: $1
- 配置Presto启用JMX Agent:修改Presto的
jvm.config文件,添加一行JVM参数,指定agent路径、监听端口和配置文件:-javaagent:/path/to/jmx_prometheus_javaagent.jar=9101:/path/to/presto_jmx.yaml
这里的9101是exporter监听的端口,你可以根据自己的需求调整。 - 重启Presto服务:让配置生效,此时jmx_exporter会在指定端口暴露Presto的指标。
- 配置Prometheus抓取:在Prometheus的
prometheus.yml里添加一个scrape job:
scrape_configs: - job_name: 'presto_jmx' static_configs: - targets: ['<presto-host>:9101']
- 重启Prometheus:之后就能在Prometheus里查询到Presto的JMX指标了。
两种方案都能满足需求:如果需要专门针对Presto优化的指标集,可以自己构建presto_exporter;如果追求快速部署和通用性,jmx_exporter是更高效的选择。
内容的提问来源于stack exchange,提问作者Ghzaimo
相关产品推荐
相关产品推荐

