企业应用系统发展越来越庞大,依赖越来越多的产品组件,集成越来越多系统, 整体应用系统的性能取决于”木桶短板“,为了捕捉系统的短板问题,更好的持续优化,需要一套完备的”可观测性“系统,为系统架构师们或者决策者们提供数据库支持。
什么是可观测性呢?简单来说,就是日志、指标、链路追踪的整套监控体系。
图示:可观测性示意图
应用系统运行会产生很多运行日志,包括中间件日志、框架日志、业务日志等,日志需要集中化的平台,便于回溯系统的问题,如java领域log4j2日志框架。
应用系统运行也需要实时记录指标,包括内存、cpu、网络io、磁盘io、线程io等多种实时指标,便于观察业务需求与应用系统的性能问题,如java领域micrometer框架。
微服务时代,纯粹的单体程序已经很少,服务之间依赖众多,链路调用复杂,无论是企业内部系统集成还是外部三方服务依赖,都越来越多,也很复杂,需要功能强大且性能消耗低的链路追踪框架产品,如spring cloud体系zipkin框架。
可观测性领域,功能特性完备的产品有很多,萝卜白菜,各有所长。
有来自韩国开源产品 pinpoint,可视化图非常漂亮,但其基于hbase的存储设计,部署运维复杂度较高,对于小规模企业并没有那么容易上手。
有经典开源的Elastic Stack产品体系 ,功能完备,日志、指标、链路追踪全部都有,可模块化集成,但其面向全球性的界面设计,对于中文开发者,体验有点别扭。
有来自国内著名的开源产品skywalking,以APM为核心,专注于应用程序链路追踪,扩展了周边很多特性、产品可视化对中文开发者友好,但其后端数据存储依赖三方数据库,如Elasticsearch;目前市面上很多收费的企业级可观测产品多数都是围绕elasticsearch展开。
skywalking支持多种数据库存储,基于个人经验评估,最佳的依然是Elasticsearch,目前支持es6/es7/es8等多种版本。
图示:来自skywalking官方
skywalking在融合elasticsearch方面,做了很多优化性的配置,但在笔者看来,这些都是一些一般性的设计,并没有很好的融合elasticsearch最新的特性与特点。
图示:来自dbaplus社区分享
大家都知道 elasticsearch版本发布非常快,功能特性迭代也非常快,如最新es8.5推出了时序索引,官方性能压测同比过去存储节约近50%,结合官方的datastream特性,可以让skywalking在很多方面设计配置可以更加简化。
skywalking与elasticsearch融合,快速实践非常简单,分为以下三个步骤:
选择 elasticsearch 8.5.x 版本,默认启动会自动配置安全策略,支持ssl+https
图示:es首次启动会自动生成安全配置信息
图示:es首次启动会生成超级用户与密码
选择skywalking 9.2.x版本,数据存储配置指向 elasticserch,配置基本的用户名与密码
图示:skywalking 数据存储配置
选择skywalking-java 8.13.x版本,采用javaageng方式集成,数据采集配置指向skywalking后端
java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
图示:agent.config配置skywalking采集地址
图示:skywalking在elasticsearch创建的索引
图示:skywalking展示的服务调用链路
参考文献
https://skywalking.apache.org/docs/main/v9.2.0/readme/
https://skywalking.apache.org/docs/skywalking-java/v8.13.0/en/setup/service-agent/java-agent/readme/
https://www.elastic.co/guide/en/elasticsearch/reference/8.5/release-highlights.html
讲师:李猛 (Elastic King 数据领域专家)
本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!