qunarcorp / bistoury

Bistoury是去哪儿网的java应用生产问题诊断工具,提供了一站式的问题诊断方案
GNU General Public License v3.0
4.01k stars 824 forks source link

在k8s环境中部署bistoury的感受 #65

Open honestAnt opened 4 years ago

honestAnt commented 4 years ago

1.相比较于官方提供的快速启动版本的便捷性,这个伪生产部署(beta环境哈)真的是痛苦(不知道是不是因为k8s的原因)。 2.之前构建镜像时候启动脚本一直报一些错误(基于openjdk:8-jdk源镜像),可能是语法兼容性,做了些微调(这里就不赘述了) 3.浏览器 调用websocket前会先到ui拿去proxy的ws链接,但是返回的是ip(集群内部ip),导致浏览器一直无法建立连(本地局域网和集群网络是两套网络环境),后续手动改了下ui的源码,算是简单的跳过去了; 4.应用中心配置的应用及相关服务列表,这个感觉很不友好,每次都要手动配置agent绑定机器的ip及相关端口(不知道官方是否有啥好的实践,可以做到自动从zk中获取注册的agent(agent连接proxy后,proxy会把相应信息存到zk),因为k8s每次应用重新部署ip都会变更,所以调整及其不变,期待官方有好的建议给到,谢谢

wenbeicai commented 4 years ago
  1. 可以看一下docker-dev分支,因为我们这边没上docker,只是做了镜像.
  2. openjdk和oracle-jdk有些地方还是有少许不同,这个可以再看一下.
  3. 这个proxy启动时,可以指定bistoury.local.host参数的.
  4. 因为我们这边是有中间件和应用中心联动的,ip修改了,应用中心会自动更新,应用中心这种,每个公司实现都是不一样的,所以暂时是需要自己去做联动.
wikiwikiwiki commented 4 years ago

应用中心配置这个,我们公司内部有统一的应用中心,应用所有信息都是自动获取,不需要做任何配置,全部自动完成,这个应该是最佳实践。 但在没有统一应用中心的情况下确实比较麻烦... 对于这种情况,已经想了点办法,比如在放一个配置文件让应用在启动的时候自动读取注册。 这个会在后面改进,最近公司内部其它事情比较多... 这几天忙完了,bistoury各方面都会再好好整理下

honestAnt commented 4 years ago

好的,非常感谢解答; 2.openjdk这个因为公司统一要求这边可能暂时没法调整 4.我们这边因为集群的原因,如果要做到联动,感觉需要做个服务监控,定时检测服务的ip然后同步到bistoury_server表里面

wikiwikiwiki commented 4 years ago

好的,非常感谢解答; 2.openjdk这个因为公司统一要求这边可能暂时没法调整 4.我们这边因为集群的原因,如果要做到联动,感觉需要做个服务监控,定时检测服务的ip然后同步到bistoury_server表里面

如果没有应用中心的话,我感觉这种情况,应该是服务在启动的时候自动上报然后注册的时候传递过去,然后server端进行更新,前面我说的放一个配置文件也就是把应用信息放进去,然后加上ip等信息一起在注册时上报

honestAnt commented 4 years ago

好的,非常感谢解答; 2.openjdk这个因为公司统一要求这边可能暂时没法调整 4.我们这边因为集群的原因,如果要做到联动,感觉需要做个服务监控,定时检测服务的ip然后同步到bistoury_server表里面

如果没有应用中心的话,我感觉这种情况,应该是服务在启动的时候自动上报然后注册的时候传递过去,然后server端进行更新,前面我说的放一个配置文件也就是把应用信息放进去,然后加上ip等信息一起在注册时上报

感觉agent应该可以做这个事,目前agent貌似只是连接proxy 然后执行proxy发送来的相关命令;是否官方可以扩展下agent,连接proxy后,把相关agent 所在机器的信息 解析后同步到bistoury_server

SnowiceShen commented 4 years ago

能不能问一下你的agent是如何部署在k8s中的? 每个pod都外加一个agent?

windghoul commented 4 years ago

能不能问一下你的agent是如何部署在k8s中的? 每个pod都外加一个agent?

我是把每一个agent 打到基础镜像里面

reddingit commented 3 years ago

能不能问一下你的agent是如何部署在k8s中的? 每个pod都外加一个agent?

我是把每一个agent 打到基础镜像里面

请问下agent启动的时机是什么时候,谁来触发启动

MustacheXb commented 2 years ago

agent 在Jvm启动的时候触发,放到了服务启动脚本里