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





      有问题请留言。

  • 相关阅读:
    Android中this.*与*.this还有*.class的区别是什么?
    多线程之CEvent
    Java类型信息之RTTI
    javascript学习-闭包
    javascript学习-对象与原型
    javascript学习-类型判断
    Javascript学习-简单测试环境
    javascript学习-目录
    MySQL数据库安装与配置详解
    深入研究C语言 第四篇
  • 原文地址:https://www.cnblogs.com/zhengyazhao/p/12956184.html
Copyright © 2020-2023  润新知