.Net使用skywalking

一、docker部署elasticsearch

docker run -d -p 9200:9200 -p 9300:9300 --name es -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms128m -Xmx256m" elasticsearch:7.12.0

二、docker部署skywalking

1、部署skywalking-oap-server(注意:ip请改成自己的ip).

docker run --name skywalking-oap \
--restart always \
-p 11800:11800 -p 12800:12800 -d \
-e TZ=Asia/Shanghai \
-e SW_ES_USER= \
-e SW_ES_PASSWORD= \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=192.168.1.22:9200 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-oap-server:9.3.0

2、部署skywalking-ui

docker run -d \
--name skywalking-ui \
--restart always \
-p 8080:8080 \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=http://skywalking-oap:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:9.3.0

部署后可以看到容器正常运行

.Net使用skywalking
img

浏览打开ip:8080端口可以看到

.Net使用skywalking
img

三、创建net6 webapi项目并做skywalking相关配置

1、项目根目录添加skyapm.json文件,内容:

{
  "SkyWalking": {
    "ServiceName": "myservice",
    "Namespace": "",
    "HeaderVersions": [
      "sw8"
    ],
    "Sampling": {
      "SamplePer3Secs": -1,
      "Percentage": -1.0
    },
    "Logging": {
      "Level": "Information",
      "FilePath": "logs\\skyapm-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "ProtocolVersion": "v8",
      "QueueSize": 30000,
      "BatchSize": 3000,
      "gRPC": {
        "Servers": "192.168.1.22:11800",
        "Timeout": 10000,
        "ConnectTimeout": 10000,
        "ReportTimeout": 600000,
        "Authentication": ""
      }
    }
  }
}

2、Program.cs中添加

Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "SkyAPM.Agent.AspNetCore");
Environment.SetEnvironmentVariable("SKYWALKING__SERVICENAME", "myservice");

3、launchSettings.json中添加(其中myservice是自己定义的名称,用于在skywalking中显示)

        "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore;Common", 
        "SKYWALKING__SERVICENAME": "myservice" 

四、部署示例服务

1、发布项目,windows上用dockerdesktop生成镜像,保存镜像到本地文件

.Net使用skywalking
img

2、镜像文件传到centos服务器,加载镜像

.Net使用skywalking
img

3、启动swdemo容器

docker run  -d --name swdemo -p 8860:80 --restart always swdemo:1.0

4、再次打开浏览器查看(由于数据采集有延迟可以稍等一下看)

.Net使用skywalking
img

5、访问下项目接口,就可以在skywalking中看到数据

.Net使用skywalking
img
.Net使用skywalking
img

五、示例代码

https://gitee.com/dayang1415/skywalking-demo