在微服务架构中,服务的监控治理显得尤为重要。为了满足项目需求,我们深入分析了市场上多种链路追踪框架,最终选定了国产开源的SkyWalking框架。该框架不仅得到了Apache基金会的孵化支持,还拥有强大的技术团队,包括项目VP吴晟等大佬。最初,我们仅看重其链路追踪功能,但深入使用后发现,其功能远超我们的预期。SkyWalking不仅是一个开源的可观测平台,还能实时收集、分析和可视化云原生基础设施以及应用程序的性能数据。
02SkyWalking架构和功能
细看之下,SkyWalking的架构体系功能全面且强大。其逻辑组成主要分为四个部分:首先是探针,负责收集应用服务资源数据,如GUI/CLI、metrics系统以及不同语言的应用系统等,并通过Http或gRPC方式上报监控数据指标;其次是平台后端,即OAP平台,负责处理、分析和聚合系统监控数据,同时支撑上游用户界面数据展示的API;再者是存储,用于保存收集的数据,支持H2、Mysql、Elasticsearch等多种数据库;最后是用户界面,一套简洁美观的官方开源UI平台,方便开发运维人员使用。
此外,SkyWalking还定义了服务、服务实例和端点等基础概念。服务是指提供相同行为的请求工作负载的集合,通常以集群方式部署。服务实例则是服务集群中的单个服务实例,如某台机器上的特定服务。而端点则是服务中的请求路径,类似于接口API,不仅包括Http接口,还涵盖rpc中的调用方法。
03部署步骤
▣ 准备工作
在部署使用方面,我们首先需要做好准备工作。目前SkyWalking的官方最新版本为v8.8.1,但本文将以v8.7.0版本为例进行部署使用说明。在存储方面,我们选用的是Elasticsearch 7.x版本,后续部署SkyWalking时将默认选择es7。准备SkyWalking软件包有两种方式:源码构建和下载安装。
源码构建:
- 安装Jdk1.8+和Maven 3.6+版本。
- 通过git从官方Github上pull源码,或从Apache官网下载页面下载。
使用git命令克隆源码并切换到v8.7.0分支:
```shell
git clone -b v8.7.0 --recurse-submodules
cd skywalking/
```
或者,可以选择官方下载方式:
```shell
wget
```
解压下载的源码包并进入目录:
```shell
tar -zxvf apache-skywalking-apm-8.7.0-src.tgz
cd apache-skywalking-apm-8.7.0-src/
```
接下来,使用maven进行构建:
```shell
./mvnw clean package -Dmaven.test.skip
```
查看编译结果并解压二进制包:
```shell
cd apm-dist-es7/target
tar -zxvf apache-skywalking-apm-es7-8.7.0.tar.gz
cd apache-skywalking-apm-bin-es7
ls -ls
```
▣ 单机部署流程
修改配置文件以指定存储选项及Elasticsearch设置。 SkyWalking OAP服务的配置文件位于config/application.yml,其中包含了详细的配置参数说明。通过这些配置,SkyWalking OAP服务将能够正确地与Elasticsearch进行交互,实现数据的持久化存储。
需要注意的一些关键配置项包括:
```
indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1}
superDatasetIndexShardsFactor: ${SW_STORAGE_ES_SUPER_DATASET_INDEX_SHARDS_FACTOR:5}
indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:1000}
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}
resultWindowMaxSize: ${SW_STORAGE_ES_QUERY_MAX_WINDOW_SIZE:10000}
metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
```
这些配置参数用于优化SkyWalking的性能和Elasticsearch的存储效率。
启动SkyWalking OAP服务:
```
$ bin/oapServiceInit.sh
```
启动成功后,将显示“SkyWalking OAP started successfully!”的消息。
启动SkyWalking UI服务:
```
$ bin/webappService.sh
```
启动成功后,将显示“SkyWalking Web Application started successfully!”的消息。访问UI界面时,SkyWalking UI界面的数据是通过请求SkyWalking OAP服务获得的,因此确保SkyWalking OAP服务已成功启动并可访问。<h1><p id="hg7.cnaga.org.cn">5</p></h1> <h1><p id="xn1.baidvc.org.cn">2</p></h1> <h1><p id="xx1.baidvb.org.cn">8</p></h1> <h1><p id="9v8.rockitapple.org.cn">8</p></h1> <h1><p id="x6w.xueyuwang.org.cn">8</p></h1> <h1><p id="sen.csoft.org.cn">8</p></h1> <h1><p id="qr5.centralaidagency.org.cn">8</p></h1> <h1><p id="j34.limu.mobi">2</p></h1> <h1><p id="byu.dxgroup.org.cn">7</p></h1> <h1><p id="3u2.baidvb.org.cn">6</p></h1>
04集群部署和优化
▣ 集群部署准备
在生产环境中,为了确保服务的高可用性,通常会采用集群方式进行部署。建立Elasticsearch和注册中心集群,选择Zookeeper或其他工具进行服务注册。 搭建SkyWalking OAP服务集群时,在集群模式下,OAP服务的配置和启动与单机模式基本相似,但需将SkyWalking OAP服务注册到所选的注册中心上。
▣ 集群配置和启动
在集群模式下,OAP和UI服务注册到注册中心,借助负载均衡支持高可用性。 例如,SkyWalking支持Zookeeper、Kubernetes、Consul、Nacos等多种注册中心。搭建SkyWalking UI服务集群时,需借助Nginx进行负载均衡。
综上所述,虽然SkyWalking的初始部署流程相对复杂,但通过一步步的准备和配置,可以充分发挥其作为可观测平台的强大功能,实现对微服务架构的高效监控和治理。尽管未亲临,心已向往。将一件事做到极致,便是天分的展现。