hadoop exporter编译

前言

近来搞大数据,涉及到组件挺多,想弄个监控。开始研究prometheus,grafana,exporter .这套工具挺好,prometheus负责收集数据,grafana负责展示,exporter负责提供工具。exporter 不同工具有不同的exporter,比如mysql,kafka,node,flink等等。唯独没有hadoop exporter。后来搜到hadoop exporter 源码,是go语言编写。我不太擅长go语言。挑战一下,把它编译出来。

下载源码

 git clone https://github.com/Datatamer/hadoop_exporter.git

假设下载到:/usr/local/

编译

使用glide编译

在下载目录:/usr/local/hadoop_exporter-master 有个readme.md文件,cat看一下

# Hadoop Exporter for Prometheus
Exports hadoop metrics via HTTP for Prometheus consumption.

How to build

glide install
go build namenode_exporter.go
go build resourcemanager_exporter.go


Help on flags of namenode_exporter:

-namenode.jmx.url string
Hadoop JMX URL. (default “http://localhost:50070/jmx”)
-web.listen-address string
Address on which to expose metrics and web interface. (default “:9070”)
-web.telemetry-path string
Path under which to expose metrics. (default “/metrics”)


Help on flags of datanode_exporter:

-datanode.jmx.url string
Hadoop JMX URL. (default “http://localhost:50075/jmx”)
-web.listen-address string
Address on which to expose metrics and web interface. (default “:9070”)
-web.telemetry-path string
Path under which to expose metrics. (default “/metrics”)


Help on flags of resourcemanager_exporter:

-resourcemanager.url string
Hadoop ResourceManager URL. (default “http://localhost:8088”)
-web.listen-address string
Address on which to expose metrics and web interface. (default “:9088”)
-web.telemetry-path string
Path under which to expose metrics. (default “/metrics”)


Help on flags of journalnode_exporter:

-journalnodeJmxUrl.url string
Hadoop ResourceManager URL. (default “http://localhost:8088”)
-web.listen-address string
Address on which to expose metrics and web interface. (default “:9088”)
-web.telemetry-path string
Path under which to expose metrics. (default “/metrics”)


# Requirements
go lang 1.6.2
glide

里面提到要求go 1.6.2版 glide编译
执行命令

glide install
go build namenode_exporter.go
go build resourcemanager_exporter.go

就可以了,好简单。
然而,开始挖坑填坑之旅。
刚开始我也是下载1.6.2 go语言包,
设置环境:
在/etc/profile 设置GOPATH环境变量

export GOPATH=/usr/local/go/workplace

然后在/usr/local/go/workplace 创建子目录src,把/usr/local/hadoop_exporter-master
挪到/usr/local/go/workplace/src下

编译报:
Unable to set version on google.golang.org/protobuf/reflect/protoreflect to . Err: Cannot detect VCS
可能有多个包错误。看网络情况
后来升级go 好几个版本1.7 1.8 1.9 都报类似这种错误
后来又把涉及模块下载到本地目录
在glide.yml增加本地库依赖,不下载网络:

package: Datatamer/hadoop_exporter
import:
- package: github.com/prometheus/client_golang
  version: v0.8.0
  subpackages:
  - prometheus
  source: $GOPATH/src/github.com/prometheus/client_golang 
- package: github.com/prometheus/log
  source: $GOPATH/src/github.com/prometheus/log
- package: google.golang.org/protobuf
  version: ^1.35.1
  source: /usr/local/go/workplace/src/google.golang.org/protobuf

但是错误依旧。正当我一筹莫展时,网上说可以使用go mod编译。

使用go mod编译

为了使用go mod编译,我下载了go1.21.13.linux-amd64.tar.gz
然后删除原来的go目录,重新建目录,复制hadoop_exporter-master
在/usr/local/go/workplace/src/hadoop_exporter-master下,执行go mod初始化

go mod init Datatamer/hadoop_exporter

吭叽吭叽,经过漫长等待。我想为何这么慢,原来它将glide.lock转换为go.mod
不过,它还是报错了:

go: converting glide.lock: stat 
github.com/prometheus/log@9a3136781e1ff7bc42736ba4acb81339b1422551: 
github.com/prometheus/log@9a3136781e1ff7bc42736ba4acb81339b1422551: invalid 
version: Get 
"https://proxy.golang.org/github.com/prometheus/log/@v/9a3136781e1ff7bc42736ba4a
cb81339b1422551.info": dial tcp 172.217.163.49:443: connect: connection refused

又是包下载失败,go mod init 在尝试从 glide.lock 文件转换依赖时,无法连接到 proxy.golang.org。这可能是由于网络问题或代理设置导致的。
网上说:设置 GOPROXY 环境变量
可以将 GOPROXY 环境变量设置为一个可用的镜像源,例如 goproxy.io 或 athens.azurefd.net。这可以帮助你绕过对 proxy.golang.org 的直接访问。

export GOPROXY=https://goproxy.io,direct

然后再次运行 go mod init 和 go mod tidy

 go mod init Datatamer/hadoop_exporter
 go mod tidy

我的天,终于成功
但是,我想要export还没编译,需要单独编译

cd namenode
go build namenode_exporter.go
cd ../datanode
go build datanode_exporter.go
cd ../journalnode
go build journalnode_exporter.go
cd ../resourcemanager
go build resourcemanager_exporter.go

至此,四个exporter终于编译完毕

最后

如果您由于各种原因无法编译,可以点击hadoop exporter下载现成的。
至于如何使用hadoop exporter,跟prometheus,grafana如何对接。
再找时间来写
有问题可以 ,\/:lita2lz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值