SkyWalking 分布式追踪系统
SkyWalking 分布式追踪系统
随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。
面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这时候 APM(应用性能管理)工具就该闪亮登场了。
目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking,这里主要介绍 SkyWalking ,它是一款优秀的国产 APM 工具,包括了分布式追踪、性能指标分析、应用和服务依赖分析等。
下面是 SkyWalking 6.x 的架构图:
说明: SkyWalking 的核心是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进行分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其一即可,最后我们可以通过 SkyWalking UI 的可视化界面对最终的结果进行查看。Skywalking 支持从多个来源和多种格式收集数据:多种语言的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。
整体架构看似模块有点多,但在实际上还是比较清晰的,主要就是通过收集各种格式的数据进行存储,然后展示。所以搭建 Skywalking 服务我们需要关注的是 SkyWalking Collecter、SkyWalking UI 和 存储设备,SkyWalking Collecter、SkyWalking UI 官方下载安装包内已包含,最终我们只需考虑存储设备即可。
环境要求
JDK8+
Elasticsearch 7.x 集群
8080,10800,11800,12800 端口不被占用
Elasticsearch下载安装 参考官方教程, 下载解压后对config/elasticsearch.yml 做如下修改:
vim config/elasticsearch.yml
cluster.name: es-cluster
#node.name: node-1 其他两节点
#node.name: node-2
node.name: node-1
path.data: /home/es/data
path.logs: /home/es/logs
network.host: 192.168.177.202 //本机IP
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts: ["192.168.177.200", "192.168.177.201", "192.168.177.202"]
cluster.initial_master_nodes: ["192.168.177.200:9300", "192.168.177.201:9300", "192.168.177.202:9300"]
bin/elasticsearch 前台启动,后台启动 -d
复制解压修改后的整个目录结构到其他节点,然后启动即可
查看集群状态:
http://192.168.177.201:9200/_cluster/health/
下载 SkyWalking
需要Java环境
SkyWalking 个人建议直接下载官方编译好(tar.az)的,下载地址
config/application.yml 的默认数据存储开启是的 h2(可以先默认H2),稍后需要修改数据存储为 Elasticsearch -7(在启动 SkyWalking 之前,确保 Elasticsearch 已启动)
主要是这两点,其他打开注释部分即可。
nameSpace: ${SW_NAMESPACE:"elastic"}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:172.16.45.6:9200,172.16.45.7:9200,172.16.45.8:9200}
启动SkyWalking
bin/startup.sh
默认端口为8080
这是来自官网的图示
Java 项目接入
参考 部署 skywalking javaagent,skywalking-agent.jar 位于下载包的 agent 目录下
修改config/agent.config 对应的skywalking-server IP
# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:172.16.45.10:11800}
在java -jar xxx.jar 命令添加 相关启动参数即可,启动后可查看logs 相关信息
查看skywalking-server 的图示
这是公司的实际项目链路