解决方案:Skywalking Node.js 现支持 Egg 框架调用链追踪

优采云 发布时间: 2022-12-11 00:12

  解决方案:Skywalking Node.js 现支持 Egg 框架调用链追踪

  是专门为微服务架构和云原生架构设计的支持分布式链路追踪的APM系统。Skywalking后台通过在应用中加载探针采集应用调用链接信息,分析采集的调用链接信息,感知应用与服务的关系,并生成相应的服务指标。目前Apache Skywalking(Incubating)支持Java、.Net Core和Node.js语言的监控,保证多语言系统之间持续的分布式调用链路。

  该探针是Skywalking为Node.js应用提供的自动探针。它主要用于监控使用 Node.js 编写的服务器端应用程序。Skywalking Node.js探针已经支持多种插件,如Http、Mysql等,Node. js probe 计划在接下来的几个版本中提供更多的插件。目前,Node.js 探针开始采集支持组件或框架。如果您想支持Skywalking Node.js探针的框架或组件,可以在issue下留下框架或组件名称和测试demo,我们会尽量提供。支持插件,欢迎大家提出意见和改进。

  话不多说,展示真技术的时候到了。本次准备分为单应用和多应用两部分,单应用测试功能,多应用主要测试跨应用调用链功能。

  

  使用框架编写,使用egg mysql插件。业务流程相对简单。主要执行流程为:Controller mdash;服务—— mysql。下面是通过Skywalking Node.js探针监控上报数据的截图: 概览:拓扑图:服务视图:应用视图:调用链:Span信息:

  面对跨应用场景,测试demo分为egg-projectA和egg-projectB两个项目。egg-projectA项目通过http客户端调用egg-projectB提供的服务,egg-projectA和egg-projectB分别调用数据库。一次,下图是Skywalking UI数据截图概览: Topology: egg-projectA服务图 egg-projectB服务图 egg-projectA应用图 egg-projectB应用图 Trace图 Span图

  从两个demo效果可以看出,Skywalking Node.js探针目前支持egg框架追踪,可以在多个egg应用之间进行跨应用追踪。在后续版本中,Skywalking Node.js 探针将根据社区反馈不断完善。

  

  介绍完demo效果,在文章结尾简单介绍一下如何安装Node.js探针。Skywalking Node.js探针为了减少对应用系统的侵入,采用hook的方式,使得Skywalking Node.js探针的安装非常简单,可以最大程度的做到不修改应用源码。安装 Skywalking Node.js 探针只需两个简单的步骤: 第 1 步:下载探针

  $npminstallskywalking-nodejs--save 第二步:安装探针注意:在应用程序启动入口的第一行,添加如下配置:

  如果您对Skywalking Node.js探针的使用有任何疑问,可以通过以下方式联系我们: 1. 提交issue2。发送电子邮件至

  推荐文章:源码面前没有秘密,推荐 9 个带你阅读源码的开源项目

  在文章开始之前,请大家回忆一下日常开发过程中使用或依赖了哪些开源项目?有没有发现开源项目已经完全融入到日常开发中了!

  现在大部分程序员的技术栈和工具箱都或多或少有开源项目:大到操作系统,大到小巧精致的图标。优秀的开源项目就像是能让程序员立于不败之地的“神器”。用一把锋利的刀把烂摊子剪掉。但强大的“神器”也带来了一些问题。如果“神器”使用不熟练或者姿势不对,就会出现bug,出现难以解决的问题。这时候常见的解决方法是:

  要求搜索引擎检查文档并提出问题

  如果以上方法都不能解决问题,那只能自己阅读源码,寻找解决问题的办法。这条路虽然漫长艰辛,但源码面前没有秘密。同时,通过源码的体验,你一定会变得更强大,而有时候你只能慢慢走才能发现之前错过的“风景”。

  今天HelloGitHub带来了几个知名开源项目的源码注释和源码阅读笔记,带你阅读源码的技巧,点亮阅读源码的技巧。这些项目涵盖:C、C++、Java、Go、Python、JavaScript 编程语言,总的来说总有一款适合你。

  虽然有些项目已经很久没有更新了,读过的版本已经过时了,但是里面的知识还是闪闪发光的!最后还得带着问题去源码里找答案,不然很难坚持下去。

  深入源码掌握核心技术不能止步于应用层面。

  走得更慢,走得更深。C语言一、redis-3.0-注解(Redis)

  星数:7.9k|语言:C

  Redis 是一个内存中、分布式、可选的持久化、开源 KV(键值)存储数据库。

  本项目为Redis 3.0版本源码注释。

  /huangz1990/redis-3.0-annotated2, linux-0.12 (Linux)

  Linux 是一种开源的类 UNIX 操作系统。

  该项目是 Linux 内核 0.12 版的完整注释版本。

  先在GitHub上找到别人上传的老版本(0.11)注解源码,搜索了一下,找到了原作者赵炯老师的网站。第一个版本于 2003 年发布,最后一次更新是在 2021 年,至今已维护了 18 年。这个阅读Linux源码的项目虽然没有上传到GitHub,但是内容、评论的源码、配套的工具都是开源的。

  /精简版/

  

  PDF: /download/CLK-5.0.1-WithCover.pdfC++3, reading-source-code-of-leveldb-1.23 (LevelDB)

  星数:15|语言:C++

  LevelDB 是由 Google 开源的持久化 KV(键值)存储数据库。

  本项目为LevelDB 1.23版本源码阅读笔记,内容包括:DB运行过程、STable等文件格式分析及Compaction过程。

  /SmartKeyerror/reading-source-code-of-leveldb-1.23Java4, spring-analysis (Spring)

  星数:10k|语言:Java

  Spring框架是一个开源的Java全栈应用框架和控制反转容器实现,多用于构建企业级Web应用。

  本项目是Spring 4.3.18版本的源码阅读笔记,包括源码注释、类图、文字说明。

  /seaswalker/spring-analysis5, learn_netty_source_code (Netty)

  星数:1k|语言:Java

  Netty 是一个 Java 异步事件驱动的网络应用程序框架。

  本项目是Netty 4.0.33版本源码分析教程。

  /yongshun/learn_netty_source_codeGo6, grpc-read (gRPC)

  星数:154|语言:Go

  gRPC是由Google发起的开源RPC系统,基于HTTP/2协议传输,使用Protocol Buffers作为接口描述语言。

  本项目是gRPC Go版本的实现:grpc-go源码解读。

  

  /lubanproj/grpc-readPython7,带注释的 py-projects

  星数:312|语言:Python

  本项目收录各种Python web框架的源码解读,包括Flask、Sanic、web.py等项目的源码注释。

  /hhstore/annotated-py-projectsJavaScript8, learnVue (Vue.js)

  星数:11k|语言:JavaScript

  Vue.js 是一个用于创建用户界面的开源 JavaScript 框架。

  本项目收录Vue.js源码注释和笔者在学习Vue.js源码过程中的一些心得和收获。

  /answershuto/learnVue9, 反应插图系列 (React)

  Star数:1.3k|语言:TypeScript

  React 是一个用于构建用户界面的声明式、高效且灵活的 JavaScript 库。

  本项目是对react@17.0.2的源码进行图解解读,收录大量图片。

  /7kms/react-illustration-series 最后

  以上就是本文的全部内容。希望今天推荐的开源项目,能帮助大家打开阅读源码、变强的大门。

  这里是@HelloGithub,用于在 GitHub 上分享有趣的入门级开源项目

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线