SkyWalking在.NET平台的简单使用

APM(Application Performance Management)应用性能管理

在目前这个微服务化的趋势下,需要一个监控web站点的工具,来方便我们进行站点运维工作。

如标题所示,这里主要记录SkyWalking在.NET平台下的简单使用(开发测试),可以收获开发小玩具一枚。

 

安装SkyWalking

https://github.com/apache/skywalking

https://skywalking.apache.org/

 

docker-compose

既然是开发测试使用,那就怎么简单怎么来,用最简单的方式解决问题(偷懒)。

 

step.1  下载脚本

在这个页面可以找到SkyWalking的docker安装脚本,下载两个文件 .evn 和 docker-compose.yml

https://github.com/apache/skywalking/tree/master/docker

.env 文件是版本号,可以修改对应的版本号。SkyWalking用的ElasticSearch的大版本是7,不建议换成8。

这里的脚本是本是利用gcc构件镜像包,因为只是开发测试使用,我们可以换种方式来提高效率(偷懒),用DockerHub的镜像包。

 

step.2 拉取镜像

去DockerHub查询几个镜像的最新版本号,拉到本地docker里

docker pull apache/skywalking-oap-server:9.0.0 docker pull apache/skywalking-ui:9.0.0

elasticsearch-oss在DockerHub里是查询不到的,在docker-composer.yml文件中能看到,它这里采用的镜像是从这个docker.elastic.co地址拉取的,我们去这里搜索就行。

https://www.docker.elastic.co/r/elasticsearch/elasticsearch-oss

提示:

1.这里可以不拉取镜像 elasticsearch-oss,只需要填上版本号,就可以自动拉取到。

2.oss版本指的是没有X-pack模块,意思就是没有Elastic的一系列商业收费功能。

 

step.3 设置版本

然后修改.env文件,写上对应的镜像和版本号。

ES_VERSION=7.10.2

OAP_IMAGE=apache/skywalking-oap-server:9.0.0

UI_IMAGE=apache/skywalking-ui:9.0.0

 

step.4 一键启动

运行指令

docker-compose up

 当看到以下信息,则代表着SkyWalking-UI启动成功。

ui               | 2022-05-02 17:19:29.745  INFO 1 --- [           main] o.s.b.web.embedded.netty.NettyWebServer  : Netty started on port 8080 ui               | 2022-05-02 17:19:29.799  INFO 1 --- [           main] o.a.s.o.s.webapp.ApplicationStartUp      : Started ApplicationStartUp in 2.599 seconds (JVM running for 2.921)

 

step.5 检测启动

打开服务器的地址,访问9200端口,查看ElasticSearch的启动情况。

打开服务器的地址,访问8080端口,就能看到SkyWalking的面板。

SkyWalking的折腾到此结束,下面开始创建测试用的.NET程序。

 

接下来开始折腾.NET

.NET探针地址: https://github.com/SkyAPM/SkyAPM-dotnet

 

step.1 创建项目

在.NET6平台,创建一个WebApi项目。

 

step.2 安装nuget包

nuget安装SkyAPM.Agent.AspNetCore。

 

step.3 修改启动配置

修改launchSettings.json文件,设置程序的环境变量,可以通过写在json文件里。添加两个变量,ASPNETCORE_HOSTINGSTARTUPASSEMBLIES、SKYWALKING__SERVICENAME

注意点:

SKYWALKING__SERVICENAME,里面设置的是当前应用出现在SkyWalking上的名称。

SkyAPM.DotNet.CLI 是用来辅助生成配置的工具,不是必须安装的。

launchSettings.json
{   $schema: http://json.schemastore.org/launchsettings.json,   profiles: {     SampleWebApi: {       commandName: Project,       launchBrowser: true,       launchUrl: swagger,       environmentVariables: {         ASPNETCORE_ENVIRONMENT: Development,         ASPNETCORE_HOSTINGSTARTUPASSEMBLIES: SkyAPM.Agent.AspNetCore,         SKYWALKING__SERVICENAME: sample_app       },       applicationUrl: https://localhost:42957;http://localhost:42956,       dotnetRunMessages: true     }   } }

 

step.4 修改程序配置

修改appsettings.json文件,这里设置程序和SkyWalking-OAP的连接。

Servers里面填写服务器的地址,默认的是11800端口。

注意点:

配置里的ServiceName,要和环境变量SKYWALKING__SERVICENAME匹配上。

HeaderVersions指的是SkyWalking的版本,所以写的是sw9,

ProtocolVersion指的是数据格式版本,这里写v8才有用,意思就是还没更新完善,建议自己根据测试结果调整。

FilePath里有探针的日志,可以帮助排错使用。

appsettings.json
  SkyWalking: {     ServiceName: sample_app,     Namespace: ,     HeaderVersions: [       sw9     ],     Sampling: {       SamplePer3Secs: -1,       Percentage: -1.0     },     Logging: {       Level: Information,       FilePath: logs\\skyapm-{Date}.log     },     Transport: {       Interval: 1000,       ProtocolVersion: v8,       QueueSize: 1000,       BatchSize: 1000,       gRPC: {         Servers: 192.168.153.129:11800,         Timeout: 1000,         ConnectTimeout: 1000,         ReportTimeout: 1000,         Authentication:        }     }   }

 

step.5 运行程序

运行程序后,点一下接口,然后到SkyWalking的面板上看,这时候已经可以看到有数据显示了。

好了,基本操作到此结束。

 

 

SkyWalking的拓扑图挺好看的,能够看到系统中各项目之间的调用关系。在微服务趋势的现在是刚需。