使用 Elastic 可观测性实现云原生应用监控(4/4)
Elastic APM
是一款免费开源的应用程序性能监测工具,我们可以借助免费且开放的 Elastic APM 扩展至应用程序指标。精确查看您的应用程序都在哪里耗时了,然后便可快速修复问题,这样对发布的代码可以保持十足信心。
APM工具对比
早之前网上找的对比图,侵删!只提供参考。
现有系统需要引入时需要考虑如下:
低性能损耗
应用级的透明,尽量减少业务的侵入,目标是尽量少改或者不用修改代码
扩展性
如果偏向于纯Web应用,无需定制化且已经有搭建好的ELK日志系统可以考虑低成本的接入Elastic APM
;如果是偏向于Java
栈的应用,对跨语言和定制化需求低,可以优先考虑侵入性低的Apache SkyWalking
。
安装Elastic APM
参考如下 Helm Values
,保存为apm-values.yaml
:
使用如下脚本安装:
安装成功后:
SpringBoot Demo应用部署
在个人的github上的一个demo repository中,其中Dockerfile
如下:
其中应用部署的Deployment的关键配置如下:
部署应用成功后,通过POD IP访问接口:
以上接口,会调用MySQL,Redis以及三方天气的接口API,方便查看不同组件的性能追踪。
Demo Showcase
首页展示:
服务概览:
服务的事务请求:
以上可以看到不同组件的耗时,总计45ms,MySQL花费2.0ms,Redis花费1.2ms,三方接口花费33ms。
还可以点击进入查看详情:
MySQL Span详情,这里展示的SQL语句,方便后续找出慢SQL。
三方接口Span详情:
其他:
还可以添加Alert:
总结
Elastic
系列博文到此结束,其提供的可观测性的解决方案还是相当的不错的。当然其缺点也比较明显,很吃内存。可以期待之后关于 Grafana Stack
的系列博文,其占用资源更少。
Reference
Elastic 官网:https://www.elastic.co
Elastic 可观测性:https://www.elastic.co/cn/observability
Elastic APM: https://www.elastic.co/apm
Elastic APM Java Agent Configruation: https://www.elastic.co/guide/en/apm/agent/java/current/configuration.html