netcore添加skywalking链式追踪
简介
在分布式系统当中,想要监控服务与服务之间调用耗时,或者是查问题的时候,不能像向单机那种形式去查询.查找了一段时间发现目前市场上用的是skywalking,由华为大佬开源的项目。
摘自skywalking简介:一个开放源代码的可观察性平台,用于收集,分析,聚合和可视化来自服务和云本机基础结构的数据
SkyWalking为服务,服务实例,端点提供可观察性功能。服务,实例和端点这两个术语在今天到处都有使用,因此值得在SkyWalking的上下文中定义它们的特定含义
- 服务:表示一组/一组工作负载,这些工作负载为传入请求提供相同的行为。您可以在使用乐器代理或SDK时定义服务名称。SkyWalking也可以使用您在Istio等平台中定义的名称。
- 服务实例:服务组中的每个单独工作负载都称为实例。像pods在Kubernetes中一样,它不必是单个OS进程,但是,如果您使用仪器代理,则实例实际上是一个真正的OS进程。
- 端点:服务中用于传入请求的路径,例如HTTP URI路径或gRPC服务类+方法签名。
skywalking数据存储默认提供了H2内存存储,除此之外还支持如下几种
- h2
- ElasticSearch 6、7
- MySQL
- TiDB
- InfluxDB
下载安装elasticSearch
首先找到es的镜像,在获取镜像的时候必须输入版本号
docker pull elasticsearch:7.7.0
通过镜像启动一个容器,并将9200和9300端口映射到本机。
docker run -tid --name es --network localnet -p 9200:9200 -p 9300:9300 --restart always elasticsearch:7.7.0
安装skywalking
以下基于docker安装skywalking,先查找skywalking镜像,pull下来这两个镜像,一个是skywalking服务,一个是ui显示
docker pull apache/skywalking-oap-server
docker pull apache/skywalking-ui
运行skywalking-oap-server
通过镜像启动skywalking服务镜像,此处一定要注意配置时区不然会出问题。
docker run --name skywalking -tid -p 1234:1234 -p 11800:11800 -p 12800:12800 --restart=always -e SW_STORAGE_ES_CLUSTER_NODES=es:9200 -e -v /etc/localtime:/etc/localtime --network localnet apache/skywalking-oap-server
命令:
-v /etc/localtime:/etc/localtime:时区一定要配置不然显示有问题。
运行skywalking-ui
docker run --name skywalking-ui -tid -p 8121:8080 --network localnet -v /etc/localtime:/etc/localtime -e SW_OAP_ADDRESS=skywalking:12800 --restart always apache/skywalking-ui --security.user.admin.password=admin
netcore添加skywalking
新建Webapplication1项目,并且在启动项添加如下配置.
添加nuget包
在项目目录上添加skywalking.json或者采用dotnet skywalking config exam_test localhost:11800命令自动生成。exam_test为你的服务名称
{
"SkyWalking": {
"ServiceName": "exam_test",
"ApplicationCode": "exam_test",
"SpanLimitPerSegment": 300,
"Sampling": {
"SamplePer3Secs": -1
},
"Logging": {
"Level": "Information",
"FilePath": "logs\\SkyWalking-{Date}.log"
},
"Transport": {
"Interval": 3000,
"PendingSegmentLimit": 30000,
"PendingSegmentTimeout": 1000,
"gRPC": {
"Servers": "替换你skywalking的IP地址:11800",
"Timeout": 2000,
"ConnectTimeout": 10000
}
}
}
}
添加完成后就可以启动你的服务来查看运行情况。注意在查看结果的时候需要选择时间范围,不然结果出不来不知道什么原因
因为主要是服务和服务之间的调用,按照上面创建netcore方法在创建一个exam_test1,查看服务和服务之间的调用。
有问题请留言。