net core下链路追踪skywalking安装和简单使用
当我们用很多服务时,各个服务间的调用关系是怎么样的?各个服务单调用的顺序\时间性能怎么样?服务出错了,到底是哪个服务引起的?这些问题我们用什么方案解决呢,以前的方式是各个系统自己单独做日志,出了问题从暴出问题的服务开始一个一个服务的排查,耗时耗力,有些日志不全的,还不一定查得出来。好在现在有Skywalking链路追踪系统,可以不用写任何代码,就追踪到各个服务间的调用关系和性能状态等。
本文将从0开始搭建两个webapi项目,使用Skywalking来追踪他们之间的调用关系及响应时间。开发环境为VisualStudio2019
1.1.安装skywalking
安装skywalking会遇到好多坑,首先安装不一定成功,访问8080端口监控页面会出现很多问题。即使监控页面正常了,netcore程序也有可能监控不到,因为链接11800会失败,多数因为skwwalking和elasticsearch版本的问题引起的。因为存储多数选择是elasticsearch,所以这里是以这个为主。像下面通过docker-compose来安装。
文件如下:
version: '3.3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0
container_name: elasticsearch
restart: always
ports:
- 9200:9200
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms256m -Xmx256m"
ulimits:
memlock:
soft: -1
hard: -1
oap:
image: apache/skywalking-oap-server:7.0.0-es7
container_name: oap
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
environment:
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
ui:
image: apache/skywalking-ui:7.0.0
container_name: ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8080:8080
environment:
SW_OAP_ADDRESS: oap:12800
安装完后查看一下服务是否正常,三个程序分别是elastic、skwwalking、skwwalkingui:

1.2 查看elastic和监控页面是否正常,连接分别为 安装skwwalking服务器ip:9200、安装skwwalking服务器ip:8080,如果遇到端口占用,提前更换:


2.上netcore程序,这里先跑两个程序
2.1.新增第一个netcore程序,我这里是net5。

2.2 安装依赖 SkyAPM.Agent.AspNetCore,版本我选最好0.9.0。(有需要先保证安装服务正常,程序监控正常后再着手升级其他的各个版本。)

2.3 增加skyapm.json文件,记得属性 复制到输出目录里面设置 始终复制,防止配置文件修改不生效踩坑。这里需要注意的两个地方是1.ServiceName应该是当前程序的名字,Services是skwwalking服务器ip:11800。
{
"SkyWalking": {
"ServiceName": "SkyWalkingDemo",
"Namespace": "",
"HeaderVersions": [
"sw6"
],
"Sampling": {
"SamplePer3Secs": -1,
"Percentage": -1.0
},
"Logging": {
"Level": "Debug",
"FilePath": "logs/skyapm-{Date}.log"
},
"Transport": {
"Interval": 3000,
"ProtocolVersion": "v6",
"QueueSize": 30000,
"BatchSize": 3000,
"gRPC": {
"Servers": "skywalking服务器ip:11800",
"Timeout": 10000,
"ConnectTimeout": 10000,
"ReportTimeout": 600000
}
}
}
}
2.4 程序launchSettings.json里面加上一行 "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "SkyAPM.Agent.AspNetCore" ,如果用的iis express启动一样需要加到iis express配置下面。如下:

2.5 运行起来后监控画面是这样的:

3 再新增一个程序,
3.1 新建程序步骤和2.1是一样的,后面设置不再赘述,启动的地址我改了,比较懒第一个启动后第二个的地址不能用一样的。程序如下:

3.2 这里新增了一个controller控制器做测试,比较随便代码如下,做什么很清楚了:

3.3 监控结果是这样的:



说完了,这里只是一个简单的安装和演示,有实际需要需要自己再做进一步的研究,因为实际项目需要的可多了。
net core下链路追踪skywalking安装和简单使用的更多相关文章
- spring cloud 服务链路追踪 skywalking 6.1
随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了 ...
- mac下的git的安装与简单的配置
git 本地操作 git 简单介绍 .Git是分布式的SCM,SVN是集中式的 2.Git每一个历史版本号存储完整的文件,SVN存储文件差异 3.Git可离线完毕大部分操作,SVN则相反 4.Git有 ...
- Windows下node-gyp查找VS安装路径简单解析
node-gyp的作用我已经不想赘述了,这里给一个我之前文章的链接:cnblogs看这里,知乎看这里.本文主要从源码入手,介绍node-gyp查找VisualStudio的过程 为了方便我们研究nod ...
- Windows Server 2003下DHCP服务器的安装与简单配置图文教程
在前面的内容中,我们提到了DHCP这个词,为什么要用到DHCP呢,企业里如果有100台计算机,那样,我们一台台的进行配置Ip,我想还是可以的,因为少嘛,如果成千上万台,那我们也去一台台的配置,我相信这 ...
- Centos7下关于memcached的安装和简单使用
在这里,由于用编译安装memcached服务端过于复杂,因此我选用依赖管理工具 yum 来实现 memcached 的服务端安装: [root@localhost /]# yum install -y ...
- .NET Core集成SkyWalking+SkyAPM-dotne实现分布式链路追踪
.NET Core集成SkyWalking+SkyAPM-dotnet实现分布式链路追踪 SkyWalking是一款APM(应用性能管理),其他的还有Cat.Zipkin.Pinpoint等. 随着微 ...
- NET Core微服务之路:实战SkyWalking+Exceptionless体验生产环境下的追踪系统
前言 当一个APM或一个日志中心实际部署在生产环境中时,是有点力不从心的. 比如如下场景分析的问题: 从APM上说,知道某个节点出现异常,或延迟过过高,却不能及时知道日志反馈情况,总不可能去相应的节点 ...
- NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操作查看日志,那么,随着业务越来越复杂,企业应用也进入了分布式服务化的 ...
- .NET6接入Skywalking链路追踪完整流程
一.Skywalking介绍 Skywalking是一款分布式链路追踪组件,什么是链路追踪? 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务.互联网应用构建在不同的软 ...
- Skywalking 链路追踪
Skywalking 根据官方的解释,Skywalking是一个可观测性平台(Observability Analysis Platform简称 OAP)和应用性能管理系统(Application P ...
随机推荐
- Redis源码学习(1)──字符串
redis 版本:5.0 本文代码在Redis源码中的位置:redis/src/sds.c.redis/src/sds.h 源码整体结构 src:核心实现代码,用 C 语言编写 tests:单元测试代 ...
- KingbaseES date 数据类型的两种格式
关于date 数据类型,Oracle 与 PostgreSQL 格式是不同的,Oracle 是 日期 + 时间的类型,而PG 则只有日期.KingbaseES Oracle 模式则同时实现了二者类型, ...
- 学习Source Generators之IncrementalValueProvider
前面我们使用了IIncrementalGenerator来生成代码,接下来我们来详细了解下IIncrementalGenerator的核心部分IncrementalValueProvider. 介绍 ...
- 鸿蒙HarmonyOS实战-ArkUI组件(Progress)
一.Progress Progress组件是一种用户界面(UI)元素,用于向用户显示某些任务的进度.它通常以进度条的形式出现,显示任务完成的百分比.Progress组件可以在确定任务持续时间未知的情况 ...
- OpenHarmony 3.2 Beta源码分析之MediaLibrary
1.MediaLibrary介绍 OpenAtom OpenHarmony(以下简称"OpenHarmony")MediaLibrary媒体库提供了一系列易用的接口用于获取媒体文件 ...
- 深入理解 Java 循环结构:while、do while、for 和 for-each 循环
Java 循环 循环可以执行一个代码块,只要达到指定的条件.循环很方便,因为它们节省时间,减少错误,并使代码更易读. Java While 循环 while 循环会循环执行一个代码块,只要指定的条件为 ...
- Go 语言函数、参数和返回值详解
函数是一组语句,可以在程序中重复使用.函数不会在页面加载时自动执行.函数将通过调用函数来执行. 创建函数 要创建(通常称为声明)一个函数,请执行以下操作: 使用 func 关键字. 指定函数的名称,后 ...
- RabbitMQ 05 直连模式-Spring Boot操作
Spring Boot集成RabbitMQ是现在主流的操作RabbitMQ的方式. 官方文档:https://docs.spring.io/spring-amqp/docs/current/refer ...
- HarmonyOS SDK开放能力,服务鸿蒙生态建设,打造优质应用体验
华为开发者大会2023(HDC.Together)于8月4日至6日在东莞松山湖举行,在HarmonyOS端云开放能力技术分论坛上,华为为广大开发者们介绍了HarmonyOS SDK开放能力在基础开发架 ...
- Python生成唯一ID----UUID
# UUID 生成唯一ID # uuid 是Python内置模块,主要有五种算法. import uuid # uuid1() 基于时间戳 a1 = uuid.uuid1() print('uuid1 ...