最近在尝试使用jmx exporter + prometheus + grafana 去监控kafka。其中在部署的时候,遇到了一些坑。我们采用的是比较复杂、不被推荐看好的httpserver方式部署。官方不推荐这样部署,但是我们认为,这种非侵入的采集方式非常灵活,好更新维护,对kafka影响降到最低。解耦的部署我们非常喜欢。效果很好。当中也踩到坑,就是httpserver形式,会有cpu暴增的异常,这个issue有人在社区反映了,因为里面使用了5个线程的线程池,是hardcode,不能在部署的时候灵活改变,可以自己编译更新code来解决这个问题。
在部署jmx exporter的时候,遇到标题这个问题,尝试了很久。一开始以为是自己的配置有问题,导致jmx exporter没办法正常解读配置文件,后来修改了源码,重新打包部署测试。读取配置文件没错。从而确定是网络路由出了问题。
参考了两位前辈的经验,解决了。
https://blog.csdn.net/chenchaofuck1/article/details/51558995
https://blog.csdn.net/yangyan19870319/article/details/6732411
原因就是:由rmi服务器端程序造成的。 客户端程序向服务端发起rmi请求,返回的stub对象里面包含了服务器的hostname,客户端的后续操作根据这个hostname来连接服务器端。要想知道这个hostname具体是什么值可以在服务器端bash中打入指令:hostname -i 如果返回的是127.0.0.1,那么你的客户端肯定会抛如标题的异常了。
正确的配置是,从127.0.0.1中,移除机器名dev-01。 同时在其后,增加一行映射 真实ip dev-1。