通过SkyWalking为应用埋点并上报链路数据至可观测链路 OpenTelemetry 版后,可观测链路 OpenTelemetry 版即可开始监控应用,您可以查看应用拓扑、调用链路、异常事务、慢事务和SQL分析等一系列监控数据。本文介绍如何使用SkyWalking .NET Core SDK埋点并上报应用数据。
前提条件
背景信息
SkyWalking是一款广受欢迎的国产APM(Application Performance Monitoring,应用性能监控)产品,主要针对微服务、Cloud Native和容器化(Docker、Kubernetes、Mesos)架构的应用。SkyWalking的核心是一个分布式追踪系统。
示例Demo
示例Demo仓库地址:SkyWalking Demo
用SkyWalking为.NET应用埋点
安装.NET Agent。
进入项目根目录,并执行以下命令。
# 安装.NET Agent dotnet add package SkyAPM.Agent.AspNetCore # 添加环境变量 export ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyAPM.Agent.AspNetCore export SKYWALKING__SERVICENAME=<service-name>
配置.NET Agent属性。
生成skyapm.json文件。
方法1:使用skyapm命令行工具SkyAPM.DotNet.CLI生成属性配置文件。
dotnet tool install -g SkyAPM.DotNet.CLI # 环境变量设置,/path/to需要替换成您的.dotnet路径 export PATH="$PATH:/path/to/.dotnet/tools/" dotnet skyapm config <service-name> <endpoint>
方法2:直接在项目根目录创建配置文件skyapm.json,并将以下内容复制到文件中。
{ "SkyWalking": { "ServiceName": <service-name>, "Namespace": "", "HeaderVersions": [ "sw8" ], "Sampling": { "SamplePer3Secs": -1, "Percentage": -1.0, "LogSqlParameterValue": false }, "Logging": { "Level": "Information", "FilePath": "logs/skyapm-{Date}.log" }, "Transport": { "Interval": 3000, "ProtocolVersion": "v8", "QueueSize": 30000, "BatchSize": 3000, "gRPC": { "Servers": <endpoint>, "Authentication": <token>, "Timeout": 100000, "ConnectTimeout": 100000, "ReportTimeout": 600000 } } } }
属性说明:
必填项
<service-name>:服务名称。
<endpoint>:前提条件中获取的接入点。
<token>:前提条件中获取的接入点鉴权令牌。
可选项
SamplePer3Secs:每三秒采样数。
Percentage:采样百分比,例如10%采样则配置为10。
Logging:日志记录与调试。Level表示日志级别,FilePath表示日志文件保存的位置以及文件名称。
重启.NET项目。
dotnet run
查看Agent本地日志记录。运行项目时,skyapm-<date>.log日志文件会在项目logs文件夹下生成,如果数据上报不成功,可以参考log文件进行调试和修改。
参考信息
您可以参考以下命令从源码构建。
# 下载源代码
git clone https://github.com/SkyAPM/SkyAPM-dotnet.git
# 进入根目录
cd SkyAPM-dotnet/
# 切换到目标tag
git checkout [tagname]
git submodule init
git submodule update
dotnet restore
dotnet build src/SkyApm.Transport.Grpc.Protocol
dotnet build skyapm-dotnet.sln
常见问题
无法使用dotnet-skyapm工具创建skyapm.json配置文件,报错如下:
解决方法一(推荐):dotnet-skyapm的作用只有一个,即生成skyapm-dotnet agent的属性配置文件,您可以直接手动创建一个skyapm.json,并按照上文中的方式配置属性。
解决方法二:使用dotnet 6.0。