老郑的博客

木叶飞舞之处,火亦生生不息!

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,查看服务和服务之间的调用。





  有问题请留言。

posted @ 2020-05-25 12:13  zyz1  阅读(509)  评论(0编辑  收藏  举报