记录一下安装 jaeger+es监控线上环境接口的调用链

起因

前段时间费劲的把一个搜索接口原先20多条left join换成 orm with+ hasWhere方式优化。本地测试没问题推送到线上后系统响应变慢,我寻思我就重构了一个接口。不应该会影响全局。最后很多用户响应,没办法只能先回退版本。回退后也不好使,排查了一天+半夜最后发现是出在redis方面(线上链接redis一直走的外网,不是我上线后改的外网),问题解决了。但是期间又有好多改动,我写的那一版就丢弃了。于是经过多方了解(百度google)决定上一个 opentrack 来监控接口服务,避免下次再出现问题责任还怪我头上

用到的工具和第三方包

安装配置

访问量不是很大,正好公司还有一台服务器一直没什么用处,就拿过来贡献一下。

docker 安装elasticsearch

# 创建存储卷
docker volume create es
# 创建docker网络,默认的好像不支持容器内互相访问
docker network create project
# 启动es
 docker run -d --restart=always --name es --network project --privileged -v es:/usr/share/elasticsearch -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e ELASTIC_PASSWORD=es密码 docker.elastic.co/elasticsearch/elasticsearch:8.11.3

安装 jaeger all-in-one 的docker

docker run -d --name jaeger   --network project -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 -e SPAN_STORAGE_TYPE=elasticsearch -e ES_SERVER_URLS=https://elastic:xxxx@es:9200  jaegertracing/all-in-one:latest --es.tls.enabled --es.tls.skip-host-verify

设置nginx反向代理到 jaeger容器的 9411和 16686 端口,记得设置一个 http basic_auth

公司项目是 hyperf2.2,有现成的官方包可以用

效果

记录一下安装 jaeger+es监控线上环境接口的调用链

查询20秒以内2秒以上的接口

记录一下安装 jaeger+es监控线上环境接口的调用链

查看接口执行链

记录一下安装 jaeger+es监控线上环境接口的调用链

可以看到基本都是请求第三方接口响应比较慢

本作品采用《CC 协议》,转载必须注明作者和本文链接
这片绿茵从不缺乏天才,努力才是最终的入场券
zds
讨论数量: 5

已经一键三连,大哥再出一篇完整的搭建过程吧,hyperf那边怎么配置的

6个月前 评论
zds (楼主) 6个月前

能再具体一些吗,我是fpm

6个月前 评论
zds (楼主) 6个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!