编译Prometheus中监控IBMMQ的exporter

        由于项目中需要监控,选择了Prometheus,接着项目中使用了IBMMQ,需要监控队列的堆积情况,就需要对应的exporter,开始实践。

        来到Prometheus的官网,找到了各种exporter的下载地址【①】,找到IBMMQ的exporter,点进去发现是个IBMMQ在github的仓库【②】,没有发现编译好的exporter,阅读文档后说需要自己进行编译,而这还是go语言,那开始看怎么编译吧。

        阅读文档,需要go语言编译器至少1.21和c语言编译器,接着找到“在Windows下编译”的部分,说推荐使用“tdm-gcc-64”的c语言编译器,然后更改编译器相关路径,最后执行buildMonitors.bat文件即可。

        先下载go语言编译器吧,来到go语言官网下载页【③】,我这里下载的是go1.21.8的,因为8比较喜庆,接着安装好。再到文档中推荐的c语言编译器网页进行下载【④】,我这里下载的是tdm64-gcc-10.3.0-2的,接着安装好。

        现在应该可以在环境变量Path里面看到Go语言的bin路径和C语言的bin路径内容,如果没有就加上。使用go version可以查看版本,使用gcc --version可以看版本。

        最后将github的项目拷下来,找到scripts目录下的buildMonitors.bat文件,编辑一下内容,将下面两个“C:\MyThing\mq-metric-samples-master”内容改成自己的文件夹,改这个地址的意思就是设置工作目录,至于上面的tdm-gcc-64的目录没改是因为后面还分号了一个%PATH%,这个在环境变量中已经有了就不用改了。

rem Set a PATH to include a suitable gcc build

set PATH=c:\tdm-gcc-64\bin;%PATH%

rem Go to the root of my Go tree

rem Usually something like c:\Gowork

cd C:\MyThing\mq-metric-samples-master

rem And set references to the commands that have been git cloned under it

set R=C:\MyThing\mq-metric-samples-master

set D=%R%\cmd

        好,开始双击bat文件执行编译,不出意外的报错了,缺少go语言的包。这个就好像SpringBoot中缺失jar包就build不成功,需要Maven下载jar包,也像Vue项目需要Modules里面的包,需要npm下载一样。来到项目中,发现Go语言有个go.mod文件,就像SpringBoot的pom文件,是需要的包的列表,查一下怎么下载获取go的包依赖,使用go mod tidy命令,那么就来到项目中执行呗。不出意外连这条命令也执行失败了,报错类似下面这种,说无响应或者超时。

go: /go@v0.41.0: Get "https:go/@v/v0.41.0.mod": dial tcp 142.251.43.17:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

或者

go: downloading github.com/panjf2000/ants/v2 v2.7.5

go: downloading github.com/projectdiscovery/rawhttp v0.1.13

awesomeProject imports

        github.com/panjf2000/ants/v2: github.com/panjf2000/ants/v2@v2.7.5: Get "https://proxy.golang.org/github.com/panjf2000/ants/v2/@v/v2.7.5.zip": dial tcp 142.251.42.241:443: i/o timeout

        可是明明使用了ssr可以上谷歌了呀,为什么在cmd里面ping不通,也下载不了呢,这里推荐这个博客看看【⑤】,简单来说就是web访问通过的是http协议应用层(第七层),而ssr的socks代理是介于传输层(第四层)和会话层(第五层),而ping的时候,则是基于网络层(第三层),所以ssr的4/5层对更高层(6、7)起作用,而对更底层的(1、2、3)不起作用,查一下怎么办,使用下述命令,注意端口号7897改成自己配置的。

set http_proxy=socks5://127.0.0.1:7897

set https_proxy=%http_proxy%

        这个命令只能临时使用,也就是在这个cmd里面,关了就没有了,需要先执行这个代理命令,然后cd到项目里面,再执行go mod tidy就很流畅了。

        好,再来执行bat文件编译,又报错了,说缺少c的头文件,就像下面这样。

# github.com/ibm-messaging/mq-golang/v5/ibmmq

vendor\github.com\ibm-messaging\mq-golang\v5\ibmmq\mqi.go:54:10: fatal error: cmqc.h: No such file or directory

   54 | #include <cmqc.h>

      |          ^~~~~~~~

compilation terminated.

        这咋回事呢,不应该呀,看看gcc里面确实没有这个头文件,发现这个名字叫cmqc,难道是mq的c的头文件么,再看文档吧,发现原来还需要IBMMQ的客户端,里面应该提供了这个头文件,那就下载一下文档推荐的IBMMQ的客户端吧【⑥】,我这里下载的是9.3.5.1-IBM-MQC-Redist-Win64这个版本,解压一下到某个目录。我在这个客户端里面找到了需要的头文件,将他移动到gcc的头文件文件夹里面,我心想这总不会报错了吧。

        好,再执行bat文件,又报错了,说找不到什么链接器,我心想C语言链接器是什么,我又懵逼了。

Working from C:\MyThing\mq-metric-samples-master

Building mq_prometheus

# command-line-arguments

C:\Users\14590\go\pkg\mod\golang.org\toolchain@v0.0.1-go1.22.5.windows-amd64\pkg\

tool\windows_amd64\link.exe: running gcc failed: exit status 1

C:/MyThing/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lmqm

collect2.exe: error: ld returned 1 exit status

        为了解决这个问题,让人工智能读了一下这个文档,让他整体完整的告诉我编译的步骤,看了一下,AI说到一点“如果MQ库没有安装在默认位置,则设置环境变量以让C编译器识别这些目录”,让我执行下述命令,但因为我只是没有找到lmqm这个链接器,我只执行了第二条命令,注意路径改成自己放的客户端的路径。

set CGO_CFLAGS=-Ic:\IBM-MQC-Redist-Win64\tools\c\include -D_WIN64

set CGO_LDFLAGS=-L c:\IBM-MQC-Redist-Win64\bin64 -lmqm

        我打开cmd,执行了这个命令,cd到script目录下,执行buildMonitors文件,终于成功编译出来了,在bin目录下可以找到exe文件。

        另外:全文cmd需要在管理员模式下执行,最好项目的东西不要在C盘进行操作,目录中最好不要有中文。

        几个网站:

①【https://prometheus.io/docs/instrumenting/exporters/】

②【https://github.com/ibm-messaging/mq-metric-samples/tree/master】

③【https://go.dev/dl/】

④【https://jmeubank.github.io/tdm-gcc/download/】

⑤【https://www.amjun.com/205.html】

⑥【https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/messaging/mqdev/redist/】

        几个下载:

go1.21.8.windows-amd64.msi

tdm64-gcc-10.3.0-2.exe

mq-metric-samples-master.zip

9.3.5.1-IBM-MQC-Redist-Win64.zip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值