ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SkyWalking在.NET平台的简单使用

2022-05-03 02:31:35  阅读:326  来源: 互联网

标签:skywalking NET 平台 json apache docker SkyWalking 1000


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

标签:skywalking,NET,平台,json,apache,docker,SkyWalking,1000
来源: https://www.cnblogs.com/miaowacao/p/16217532.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有