SpringAli链路管理

链路追踪虽然是运维做的事情,但是我们作为开发的应该走一走

springAli链路追踪

  1. 什么是链路追踪
  2. 链路追踪解决方案
  3. 如何使用skywalking

什么是链路追踪

微服务架构是通过业务来划分服务的,使用REST调用。对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂

情况如下:

IMAGE

当然服务肯定不止这几个,或许会有上百个,有没有可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是所谓的 APM(应用性能管理)。

链路追踪解决方案

SkyWalking

  1. 多种监控手段,语言探针和服务网格(Service Mesh)
  2. 多语言自动探针,Java,.NET Core 和 Node.JS
  3. 轻量高效,不需要大数据
  4. 模块化,UI、存储、集群管理多种机制可选
  5. 支持告警
  6. 优秀的可视化方案

如何使用skywalking

1.安装docker,使用docker-compose执行编排文件

1
2
3
4
5
6
7
8
9
10
11
version: '3.3'
services:
elasticsearch:
image: wutang/elasticsearch-shanghai-zone:6.3.2
container_name: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
cluster.name: elasticsearch

docker-compose up -d(启动并后台运行)

docker-compose stop(停止)

访问localhost:9200

IMAGE

2.下载skywalking,修改配置文件config下application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
storage:
elasticsearch:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
user: ${SW_ES_USER:""}
password: ${SW_ES_PASSWORD:""}
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
# Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
# h2:
# driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
# url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
# user: ${SW_STORAGE_H2_USER:sa}
# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}
# mysql:
# metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}

3.切换并启动

cd /Users/Yun/apache-skywalking-apm-bin/bin

执行./startup.sh访问默认端口http://localhost:8080

IMAGE

4.在idea中部署探针

IMAGE

增加vm参数

1
2
3
-javaagent:/Users/Yun/mycloud/clouddependencies/spring-cloud-external-skywalking/agent/skywalking-agent.jar
-Dskywalking.agent.service_name=provider
-Dskywalking.collector.backend_service=localhost:11800

IMAGE

5.启动项目

IMAGE

IMAGE

IMAGE

其余服务同理设置

  1. Avg SLA: 服务可用性(主要是通过请求成功与失败次数来计算)
  2. CPM: 每分钟调用次数
  3. Avg Response Time: 平均响应时间