net core 中使用skywalking及skywalking的docker部署
一、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
部署后可以看到容器正常运行
浏览打开ip:8080端口可以看到
三、创建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生成镜像,保存镜像到本地文件
2、镜像文件传到centos服务器,加载镜像
3、启动swdemo容器
docker run -d --name swdemo -p 8860:80 --restart always swdemo:1.0
4、再次打开浏览器查看(由于数据采集有延迟可以稍等一下看)
5、访问下项目接口,就可以在skywalking中看到数据