SkyWalking-netcore 无入侵分布式追踪

栏目: 后端 · 发布时间: 6年前

内容简介:基于之前首先通过以下命令安装 SkyWalking DotNet CLI

SkyWalking-netcore 最近更新的版本改成了无入侵的集成方式,主要思想应该是分离开发和监测,开发只管代码部分,监测的问题是代码程序之外的工作。

基于之前 SkyWalking 分布式追踪系统 的介绍,一些概念性的内容、环境搭建这里就不重复说明。以下介绍都是基于 Windows 环境的,如果是 macOS/Linux ,请参考 官方文档

安装 SkyWalking .NET Core Agent

首先通过以下命令安装 SkyWalking DotNet CLI

dotnet tool install -g SkyWalking.DotNet.CLI

CLI 安装成功之后,执行以下命令安装 Agent 到当前机器上

dotnet skywalking install

这一步的安装需要注意以下几项:

  1. 使用管理员权限运行 cmd;
  2. 必须切到 C 盘路径下执行命令;
  3. 如果出现 “Access to the path ‘06806e6c49431d12b85aaa5db07b8705d5b317’ is denied” 错误,请删除 “C:/Users/用户名/AppData/Local/Temp/skywalking.agent.aspnetcore” 后,重新执行;

最终输出 “ SkyWalking .NET Core Agent was successfully installed. ” 才代表成功。

创建项目

新建一个.NET Core API 项目 SkyWalking.Agent.Test,其他什么都不需要操作。

创建配置文件

在 SkyWalking.Agent.Test 项目根目录下创建连接 Collector Server 的配置文件,官方提供命令的创建方式,其实就是生成一个 skywalking.json 文件,我们也完全可以手动添加。

dotnet skywalking config [application_code] [collector_server]

application_code:应用名 (如:SkyWalking.Agent.Test)

collector_server: server 地址 (如:localhost:11800) ,SkyWalking 的环境搭建请参考 SkyWalking 分布式追踪系统

最终生成的 skywalking.json 如下,ApplicationCode 和 Transport.gRPC.Servers 是我们设置的:

{
  "SkyWalking": {
    "ApplicationCode": "SkyWalking.Agent.Test",
    "SpanLimitPerSegment": 300,
    "Sampling": {
      "SamplePer3Secs": -1
    },
    "Logging": {
      "Level": "Information",
      "FilePath": "logs\\SkyWalking-{Date}.log"
    },
    "Transport": {
      "Interval": 3000,
      "PendingSegmentLimit": 30000,
      "PendingSegmentTimeout": 1000,
      "gRPC": {
        "Servers": "localhost:11800",
        "Timeout": 2000,
        "ConnectTimeout": 10000
      }
    }
  }
}

从源码中发现,配置的加载顺序是先加载默认配置( 可以进入 AddSkyWalkingDefaultConfig 查看源码,里面含 skywalking.json 所有默认配置项 ),然后加载 appsettings.json、skywalking.json,所有 skywalking.json 的默认配置完全可以先去掉,需要的时候再设置,更简洁点其实我们并需要 skywalking.json ,只需要使用 appsettings.json 就可以。

builder.AddSkyWalkingDefaultConfig();

builder.AddJsonFile("appsettings.json", true).AddJsonFile($"appsettings.{environmentProvider.EnvironmentName}.json", true);

builder.AddJsonFile("skywalking.json", true).AddJsonFile($"skywalking.{environmentProvider.EnvironmentName}.json", true);

简化版的配置如下,只需要在 appsettings.json 加入 SkyWalking 所需的配置项:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "SkyWalking": {
    "ApplicationCode": "SkyWalking.Agent.AspNetCore.Test",
    "Transport": {
      "gRPC": {
        "Servers": "localhost:11800"
      }
    }
  }
}

实际的开发项目我们可能并不直接使用 appsettings.json 来管理所有的配置,比如我们可能使用 consul、apollo 等注册中心来管理配置,所以个人感觉是需要支持注册中心方式,已提交 issue

启动项目

我们将使用命令行方式启动项目,在启动项目之前,有一些项目需要的环境变量需要设置一下( 如果通过VS启动,可以在 属性=> 调试 => 环境变量 进行设置 ):

// enable SkyWalking.Agent.AspNetCore
set ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=SkyWalking.Agent.AspNetCore
set DOTNET_ADDITIONAL_DEPS=%PROGRAMFILES%\dotnet\x64\additionalDeps\skywalking.agent.aspnetcore

dotnet run

启动成功后,我们可以先通过日志查看是否已成功连接 collector server,SkyWalking.Agent 的默认日志在项目根目录的 logs 文件夹下,如果发现最后显示 Connected collector server[localhost:11800] 就代表连接成功。

接下来我们可以访问 API 自带的默认接口 http://localhost:5000/api/values ,多请求几次,然后访问 http://localhost:8080/,我们的应用已经进入监控。

SkyWalking-netcore 无入侵分布式追踪

总结

最开始提到最新发布的版本提供无入侵的集成方式,从整个过程来看,主要分为以下几步:

  1. 将 Agent 安装到运行的机器;
  2. 修改项目配置文件,加入 SkyWalking 相关配置;
  3. 启动项目请设置 SkyWalking 需要的环境变量;

关于第二步,如果 collector server 本身是在 localhost 上运行的,那就连修改项目配置文件这一步都不需要,因为默认参数的 collector server 就是 localhost:11800,ApplicationCode 也是可以通过环境变量进行设置的(set SKYWALKING__APPLICATIONCODE=SkyWalking.Agent.AspNetCore.Test)

关于第三步,一般情况下公司可能会有 CI 工具,环境变量的设置可以在 CI 工具上完成。但问题又来了,如果没有 CI 工具或者 CI 工具的构建流程不能随意修改,那怎么办?基于这个问题,其实可以通过修改源码来实现,不过还是希望作者可以稍微调整支持一下,已提 issue

参考链接


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

社会再平衡

社会再平衡

[加] 亨利·明茨伯格 / 陆维东、鲁强 / 东方出版社 / 2015-9 / 38.00元

明茨伯格曾坦言:我虽然不是律师,但我觉得有必要质疑法律的失效;我也不算是经济学家,但我觉得有义务来挑战一切事物以经济为指标的标准;我也不是人类学家、社会学家、心理学家,或者政治科学,更不是活动分子,但是在我的讨论中,文化、行为、权力、社会运动都扮演了重要的角色。我是一个合成者,我最成功的书都囊括了不同来源的想法。 明茨伯格创作《社会再平衡》这本书的初衷是因为关注身边的趋势:环境的恶化、民主的......一起来看看 《社会再平衡》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码