“随着现在微服务化的推进,很多的业务都使用Dubbo/Spring框架,使用Kubernetes进行业务部署,如何方便的进行业务监控呢?Application Performance Management(APM)是针对微服务化应用监控的整体解决方案。
”
SkyWalking
Apache SkyWalking[1]在应用的侵入性以及性能损失都相对比较少,架构也相对较简单,支持多种后端存储(推荐ES),对K8S和服务网格也提供支持,APM选型可参考:APM 原理与框架选型[2]。
SkyWalking提供的功能:
- 分布式追踪和上下文传输
- 应用、实例、服务性能指标,以及JVM的监控
- 应用拓扑
- 慢服务检测和告警
- 服务依赖跟踪
- 性能分析和优化
SkyWalking架构:由Probes、Platform backend、UI、Storage等组件组成,Platform backend进行数据的收集、聚合处理和存储,UI提供展示功能。
部署SkyWalking
先需要部署ES作为存储,然后部署Collector(可以使用容器化)。如启动单个节点的ES7:
# 配置
node.name: node-14
network.host: 0.0.0.0
node.master: true
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: ["node-14"]
SkyWalking的主配置文件application.yml
,存储使用ES 7.0版本时需要配置selector为:elasticsearch7
:
storage:
selector: ${SW_STORAGE:elasticsearch7}
部署测试应用
每个Java应用需要安装Skywalking Agent,使用javaagent
加载Agent的jar包。华为云提供了一个商场的测试DEMO[3]可以玩玩。
# 下载DEMO包
curl -l http://demos.obs.cn-north-1.myhwclouds.com/demo_01.tar > demo_01.tar
curl -l http://demos.obs.cn-north-1.myhwclouds.com/demo_02.tar > demo_02.tar
curl -l http://demos.obs.cn-north-1.myhwclouds.com/demo_03.tar > demo_03.tar
curl -l http://demos.obs.cn-north-1.myhwclouds.com/demo_04.tar > demo_04.tar
tar -xvf /root/testdemo/demo_01.tar -C ./
tar -xvf /root/testdemo/demo_02.tar -C ./
tar -xvf /root/testdemo/demo_03.tar -C ./
tar -xvf /root/testdemo/demo_04.tar -C ./
# DUMP基础数据
# 使用解压application_dao.yml配置文件中的数据库用户名和密码、地址进行数据库dump
mysqldump -h xx -u apm -p shoppingmalldb>shoppingmalldb.sql
# 导入本地MySQL数据库,修改application_dao.yml配置文件的MySQL部分
mysql -e "create database shoppingmalldb;"
mysql shoppingmalldb -e "source shoppingmalldb.sql"
# 修改start_apminside.sh启动脚本
#export PATH=/root/testdemo/jdk1.8.0_111/bin:$PATH
java -javaagent:./skywalking-agent.jar -DSW_AGENT_NAME=vmall-dao-service -Xmx512m -jar /root/testdemo/ecommerce-persistence-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_dao.yml > dao.log 2>&1 &
java -javaagent:./skywalking-agent.jar -DSW_AGENT_NAME=vmall-apigw-service -Xmx512m -jar /root/testdemo/ecommerce-api-gateway-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_api.yml > api.log 2>&1 &
java -javaagent:./skywalking-agent.jar -DSW_AGENT_NAME=vmall-user-service -Xmx512m -jar /root/testdemo/ecommerce-user-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_userservice.yml > user.log 2>&1 &
java -javaagent:./skywalking-agent.jar -DSW_AGENT_NAME=vmall-product-service -Xmx512m -jar /root/testdemo/ecommerce-product-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_prod.yml > prod.log 2>&1 &
java -Xmx512m -jar /root/testdemo/cloud-simple-ui-1.0.0.jar --spring.config.location=file:/root/testdemo/ui.properties > ui.log 2>&1 &
然后使用部署机器的IP:80就可以访问DEMO的应用了,进行访问后,可以看到在SkyWalking也产生了追踪日志。DEMO应用:
SkyWalking的追踪日志:
如拓扑图:
参考资料
[1]Apache SkyWalking: http://skywalking.apache.org/docs/
[2]APM 原理与框架选型: https://www.cnblogs.com/xiaoqi/p/apm.html
[3]Demo应用接入APM: https://support.huaweicloud.com/qs-apm/apm_00_0001.html