记录一下安装 jaeger+es监控线上环境接口的调用链
起因
前段时间费劲的把一个搜索接口原先20多条left join换成 orm with+ hasWhere方式优化。本地测试没问题推送到线上后系统响应变慢,我寻思我就重构了一个接口。不应该会影响全局。最后很多用户响应,没办法只能先回退版本。回退后也不好使,排查了一天+半夜最后发现是出在redis方面(线上链接redis一直走的外网,不是我上线后改的外网),问题解决了。但是期间又有好多改动,我写的那一版就丢弃了。于是经过多方了解(百度google)决定上一个 opentrack 来监控接口服务,避免下次再出现问题责任还怪我头上
用到的工具和第三方包
- jaeger 适配 zipkin 协议
- jonahgeorge/jaeger-client-php jaeger php client 客户端
- elasticsearch 这里用作 jaeger 存储
安装配置
访问量不是很大,正好公司还有一台服务器一直没什么用处,就拿过来贡献一下。
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,有现成的官方包可以用
效果
查询20秒以内2秒以上的接口
查看接口执行链
可以看到基本都是请求第三方接口响应比较慢
本作品采用《CC 协议》,转载必须注明作者和本文链接
不错不错
已经一键三连,大哥再出一篇完整的搭建过程吧,hyperf那边怎么配置的
能再具体一些吗,我是fpm