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的拓扑图挺好看的,能够看到系统中各项目之间的调用关系。在微服务趋势的现在是刚需。