织梦模板更新网站,自己做游戏资讯网站,宜昌市网站建设公司,可以做软件外包项目的网站前言如今分布式、微服务盛行#xff0c;面对拆分服务比较多的系统#xff0c;如果线上出现异常#xff0c;需要快速定位到异常服务节点#xff0c;假如还用传统的方式排查肯定效率是极低的#xff0c;因为服务之间的各种通信会让定位更加繁琐#xff1b;所以就急需一个分… 前言如今分布式、微服务盛行面对拆分服务比较多的系统如果线上出现异常需要快速定位到异常服务节点假如还用传统的方式排查肯定效率是极低的因为服务之间的各种通信会让定位更加繁琐所以就急需一个分布式链路追踪系统方便快速定位异常节点从而针对性的处理问题。比较主流的APM(Application Performance Management)系统有SkyWalking、Zipkin、PinPoint、Cat等这里就先说说SkyWalking其他的后续再补上。APM系统当然不仅仅只是链路追踪还可以根据各种性能指标分析应用程序及其运行环境以便在发生故障的时候能快速定位及解决问题。正文1. SkyWalking简介SkyWalking 是一个开源可观察性平台用于收集、分析、聚合和可视化来自服务和云原生基础设施(如数据库)的数据它还提供了优秀的可视化界面。SkyWalking 也是一种现代 APM专为云原生、基于容器的分布式系统而设计。1.1 常用术语在SkyWalking中会经常提到服务、服务实例和端点这里就先来了解一下服务通俗一点理解就是一个应用程序比如订单服务API。服务实例服务组中每个单独运行的节点称为一个实例一个服务可以对应多个服务实例(集群) 如一个订单服务可以集群部署好几个节点这些节点就称为服务实例端点请求服务的路径如Http Url地址或是gRPC请求地址(gRPC定义的服务类方法名)通俗理解如下图1.2 理解架构SkyWalking 主要分为四个部分探针、平台后端、存储和 UI如下图img探针专门用于收集数据并按照SkyWalking的要求格式化对应的数据。平台后端对收集来的数据进行聚合、分析及流处理存储就是数据库将收集的数据存储起来方便随时查看和分析主流的数据库有 ElasticSearch、H2、MySQL、TiDB、InfluxDB等。一般我们会使用ElasticSearch查询速度杠杠滴。UI就是提供一个Web界面可以很方便的查看和分析数据各种图表形式展示。理论暂时了解这么多实操一下更容易理解。2. 安装这里就采用Docker的方式进行安装方便快捷如果还有小伙伴对Docker不是很了解的可以看看我整理的Docker系列分享2.1 安装ElasticSearch这里用到的存储是ElasticSearch需要提前安装执行如下命令docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 --restart always -e discovery.typesingle-node -e ES_JAVA_OPTS-Xms64m -Xmx521m elasticsearch:6.7.2命令解析-p 9200:9200 -p 9300:9300 分别让主机端口9200、9300和启动容器的端口做映射-e discovery.typesingle-node 单节点运行-e ES_JAVA_OPTS-Xms64m -Xmx521m 由于我云服务器的内存比较小所以设置了一个环境变量ES_JAVA_OPTS来配置使用的内存最小64m最大521m否则内存不够用启动不起来。2.2 安装SkyWalking的后台服务端(skywalking-oap)执行如下命令docker run --name skywalking-oap --restart always -p 1234:1234 -p 11800:11800 -p 12800:12800 -d --link elasticsearch:elasticsearch -e SW_STORAGEelasticsearch -e SW_STORAGE_ES_CLUSTER_NODESelasticsearch:9200 apache/skywalking-oap-server:8.3.0-es6命令解析-p 1234:1234 -p 11800:11800 -p 12800:12800 分别让主机端口1234、11800、12800和启动容器的端口做映射11800是对接应用程序的12800是用来对接SkyWalking的UI数据的。--link elasticsearch:elasticsearch 代表和上一步启动elasticsearch网络链接起来可以通过容器名访问对应服务注意容器名和上一步一致-e SW_STORAGEelasticsearch 设置SkyWalking的存储方式为elasticsearch;-e SW_STORAGE_ES_CLUSTER_NODESelasticsearch:9200 配置连接elasticsearch的地址2.3 安装SkyWalking的UI界面(skywalking-ui)执行如下命令docker run --name skywalking-ui --restart always -p 8080:8080 --link skywalking-oap:skywalking-oap -d -e SW_OAP_ADDRESSskywalking-oap:12800 apache/skywalking-ui:6.6.0命令解析-p 8080:8080 代表主机端口8080和容器端口8080做映射--link skywalking-oap:skywalking-oap 代表和上一步启动skywalking-oap网络链接起来可以通过容器名访问对应服务注意容器名和上一步一致-e SW_OAP_ADDRESSskywalking:12800 设置UI调用的API地址就是上一步启动动SkyWalking后端地址端口为12800接下来如果能访问暴露的端口就代表环境安装好了如下到这环境就搞好了剩下就是项目集成了以下还是搞两个API来测试一把。注在搭建环境时要注意elasticsearch、skywalking-oap-server、skywalking-ui版本问题否则很容易掉坑就比如 skywalking-oap-server 设置环境变量SW_STORAGEelasticsearch 时只能连接elasticsearch6 等等这种细节。3. 项目集成SkyWalking3.1 先安装一个SkyWalking命令行工具这个命令行工具会快速生成配置文件执行如下命令安装# 全局安装这个工具后续直接用就行dotnet tool install -g SkyAPM.DotNet.CLI安装一次就行如果已经安装就可以跳过此步骤。3.2 创建项目并引入SkyAPM.Agent.AspNetCore包这个包是专门为.NetCore开发的探针。3.3 注册服务配置环境变量在Startup文件中注册服务image-20211017235044948配置环境变量这里方便测试直接在项目中的launchSettings.json中配置就行但如果是发布生产环境一定要在对应环境配置环境变量。image-202110172349257413.4 执行SkyWalking命令生成配置文件在项目根目录下执行如下命令dotnet skyapm config MySkyWalkingDemoTest 192.168.xxx.xxx:11800MySkyWalkingDemoTest 是服务名192.168.xxx.xxx:11800 是SkyWalking后台服务的地址就是我们2.2步骤搭建的地址。根据真实需要配置IP就行。命令执行完成后会在项目根目录下生成skyapm.json文件可以适当根据需要更改配置内容默认情况下skyapm.json文件只要更新都会复制到打包目录下保险起见可以右键-属性将这个文件设置其为始终复制或如果较新则复制。3.5 启动项目看效果SkyWalking几乎不嵌入任何代码直接运行代码现在就可以将API服务进行跟踪和监控了。如下图看看SkyWalking界面展示可以进入追踪界面看具体请求信息注条件时间注意时区往前设置时间其实这里可以在启动搭建环境的时候设置时区。点击树形的请求可以看详情3.6 多加一个API服务测测调用链新建一个项目SkyWalkingDemoTest22222端口以5100启动其他不变这里没有集成SkyWalking如果需要往下监控同以上步骤集成即可然后简单修改一下SkyWalkingDemoTest项目的接口如下先运行SkyWalkingDemoTest22222再运行SkyWalkingDemoTest执行完成之后可以去SkyWalking界面中看看追踪信息如下也可以通过拓扑图看到效果点击对应的节点还能显示对应的指标数据。参考地址官网https://skywalking.apache.org/开源地址https://github.com/apache/skywalking.Net探针https://github.com/SkyAPM/SkyAPM-dotnet代码案例地址https://gitee.com/CodeZoe/microservies-demo/tree/main/SkyWalkingDemo总结关于SkyWalking的初体验先说这么多对于服务间通信复杂的系统有了这个是不是就清晰多了定位也就容易很多。下一篇再来看看数据库的指标及如何配置告警关注“Code综艺圈”和我一起学习吧