Skywalking是一个国产的开源框架,主要开发人员来自于华为,2019年4月17日Apache董事会批准SkyWalking成为顶级项目,支持Java, .Net, Node.js, go, python等探针,数据存储支持Mysql, Elasticsearch等,跟Pinpoint一样采用字节码注入的方式实现代码的无侵入,探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前增长势头强劲,社区活跃。
Skywalking是分布式系统的应用程序性能监视工具,专为微服务,云原生架构和基于容器(Docker, K8S, Mesos)架构而设计,它是一款优秀的APM(Application Performance Management)工具,包括了分布式追踪,性能指标分析和服务依赖分析等。
链路追踪解决的问题:客户端的一次请求到结束的背后究竟调用了哪些应用以及哪些模块并经过了哪些节点,且每个模块的调用先后顺序是怎样的、每个模块的处理相应性能如何?
Dapper是google公司在2008年就开始内部使用经过生产环境验证的链路追踪系统。随着时代的发展,大型web集群采用分布式架构和微服务环境。应运而生了分布式链路追踪系统,Skywalking是其中的佼佼者,可以在整个分布式系统中跟踪一个用户请求的完整过程。
APM 系统(Application Performance Monitor,即应用性能监控)它实现了分布式链路追踪。常见的APM系统有CAT, Zipkin, Jaeger, Pinpoint, Skywalking。
Skywalking拥有诸多特点:信息记录完整,多语言自动探针,内置服务网格可观察性,模块化架构,支持告警,可视化美观。
Skywalking主要由4大组件构成:探针,主平台,存储,UI。

| 组件 | 作用 |
|---|---|
| 探针 | 基于无侵入式的收集,并通过HTTP或者gRPC方式发送数据到OAP Server。 |
| OAP | Observability Analysis Platform 可观测性分析平台,它是一个高度组件化的轻量级分析程序,由兼容各种探针Receiver、流式分析内核和查询内核三部分构成。 |
| 存储实现 | Storage Implementors,支持多种存储实现并且提供了标准接口,可支持不同的存储后端,常用Elasticsearch做数据库存储。 |
| UI模块 | 通过标准的GraphQL(Facebook在2012年开源)协议进行统计数据查询和展示 。 |
根据上述的4大组件,对Skywalking进行部署,相关服务与端口如下:
| 服务 | 端口 | 作用 |
|---|---|---|
| agent | N/A | 收集应用信息,与oap 11800端口连接 |
| skywalking-oap | 11800, 12800 | 11800为gRPC数据,连接agent。 12800为http数据,连接skywalking-ui |
| elasticsearch7 | 9200 | 数据存储读写端口 |
| skywalking-ui | 8080 | 前端页面,用于查询 |
需要部署elasticsearch 3个节点的集群请参考 6-4 搭建ELK及Kafka日志收集环境 。为简化实验,这里部署单机版。
wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/7.12.1/elasticsearch-7.12.1-x86_64.rpm
rpm -ivh elasticsearch-7.12.1-x86_64.rpm
修改配置文件,下列选项全部取消注释,IP均为本机地址,根据实际情况修改设置:
vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: skywalking-es-cluster
23 node.name: es7
33 path.data: /var/lib/elasticsearch
37 path.logs: /var/log/elasticsearch
56 network.host: 192.168.100.202
61 http.port: 9200
70 discovery.seed_hosts: ["192.168.100.202"]
74 cluster.initial_master_nodes: ["192.168.100.202"]
启动elasticsearch服务,默认开启端口为9200和9300: