草庐IT

像 Chrome DevTools 一样的后台调试工具 Sidekick

Github爱好者 2023-03-28 原文

Sidekick 是一个开源的实时应用程序调试器,可让你在应用程序运行时对其进行故障排除。添加动态日志并在你运行的应用程序中放置不间断的断点,而无需停止和重新部署。Sidekick 允许我们进行自托管使实时调试更易于访问,专为需要从运行的应用程序中获取额外信息的开发者而设计的。

简介

在远程环境中调试应用程序很痛苦,因为你无法像在本地环境中那样为远程应用程序设置断点。Sidekick 背后的主要动机是帮助开发人员减轻在分布式环境的远程开发过程中由于缺乏调试工具而造成的痛苦。

Sidekick 消除了调试的负担,使开发人员能够为你的代码设置一个非侵入式断点,这不会中断执行,即使你的应用程序已启动并正在运行,仍然能够调试你的应用程序。

Sidekick 为应用程序运行时提供 Java、Python 和 NodeJS 代理。开发人员使用 Web IDE、Visual Studio Code 或 IntelliJ IDEA 将 Sidekick 操作(日志点和跟踪点)放入代码中,Sidekick 将点位置传送给代理。当代码执行时,代理会在不停止应用程序的情况下拍摄应用程序状态、调用堆栈、捕获的变量等的快照,并将快照或生成的日志作为事件发送到你的环境。

使用 Sidekick 捕获快照或生成日志后,开发人员可以分析事件以了解应用程序的行为。

虽然利用日志数据似乎是调试远程应用程序的最明显选择,但 Sidekick 提供了一个额外的优势,具有类似于在本地环境中调试应用程序的无缝调试体验。

无论你是开发人员、测试软件工程师还是 QA 工程师,Sidekick 都可以帮助你找到错误的根本原因。

特性

  • 你的日志点和跟踪点的条件和自定义命中限制,只收集你需要的内容
  • 用于日志点的 Mustache 动力表达系统,轻松将可变数据添加到你的日志上下文
  • 可定制的代理 -> 配置代理的工作方式,定义深度和帧数
  • 使用 Thundra APM 和 Open-telemetry 跟踪聚合你收集的数据
  • 自动收集错误并将它们发送给你选择的目标(将于 8 月 30 日提供)
  • 定义自定义数据编辑函数来控制收集的内容(仅限 Node.js)
  • 以编程方式控制您的日志点和跟踪点
  • 使用 Sidekick 客户端以你的方式处理收集的数据

安装

使用 Sidekick 的最简单方法是在 Sidekick Cloud 上创建一个帐户,此外我们也可以进行自托管,我们可以自己构建 Sidekick 或使用官方的 Docker 镜像。

可以使用如下所示的命令来运行 Sidekick:

$ git clone https://github.com/runsidekick/sidekick
$ cd sidekick/docker
该目录下面有一个自带的 docker-compose.yml 文件:

version: '3.1'
services:
sidekick-db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
container_name: sidekick-db
env_file: .env
ports:
- 3306:3306
volumes:
- sidekick-db:/var/lib/mysql
- ./scripts/schema.sql:/docker-entrypoint-initdb.d/schema.sql
sidekick-cache:
image: redis:6.2-alpine
restart: always
container_name: sidekick-cache
command: redis-server --save 20 1 --loglevel warning
ports:
- 6379:6379
volumes:
- sidekick-cache:/data
sidekick-mq:
image: rabbitmq:3-management
container_name: sidekick-mq
ports:
- 5672:5672
- 15672:15672
- 61613:61613
volumes:
- rabbitmq-data:/var/lib/rabbitmq/
- rabbitmq-log:/var/log/rabbitmq
restart: always
sidekick-broker:
image: runsidekick/sidekick-broker:latest
restart: always
container_name: sidekick-broker
depends_on:
- sidekick-cache
- sidekick-db
- sidekick-mq
ports:
- 7777:7777
- 8080:8080
env_file: .env
sidekick-api:
image: runsidekick/sidekick-api:latest
restart: always
container_name: sidekick-api
depends_on:
- sidekick-cache
- sidekick-db
- sidekick-mq
- sidekick-broker
ports:
- 8084:8084
env_file: .env
volumes:
sidekick-db:
sidekick-cache:
rabbitmq-data:
rabbitmq-log:
redis-data:
所以我们可以执行 docker-compose up 命令即可启动了。

$ docker-compose up
Creating network "docker_default" with the default driver
Creating volume "docker_sidekick-db" with default driver
Creating volume "docker_sidekick-cache" with default driver
Creating volume "docker_rabbitmq-data" with default driver
Creating volume "docker_rabbitmq-log" with default driver
Creating volume "docker_redis-data" with default driver
Pulling sidekick-db (mysql:)...
......
sidekick-api | 2022-08-24 09:22:05.667 INFO 1 --- [ main] o.s.s.c.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
sidekick-api | 2022-08-24 09:22:06.061 INFO 1 --- [ main] o.s.b.w.e.t.TomcatWebServer : Tomcat started on port(s): 8084 (http) with context path ''
sidekick-api | 2022-08-24 09:22:06.063 INFO 1 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed
sidekick-api | 2022-08-24 09:22:06.080 INFO 1 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s)
sidekick-api | 2022-08-24 09:22:06.140 INFO 1 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references
sidekick-api | 2022-08-24 09:22:06.485 INFO 1 --- [ main] c.r.a.SidekickApiApplication : Started SidekickApiApplication in 12.02 seconds (JVM running for 13.553)
应用程序准备就绪后,我们可以使用 ws://<your-server-hostname-or-ip>:7777 这个 url 连接到 agent,同样还可以通过 http://<your-server-hostname-or-ip>:8084/swagger-ui.html 查看 API 的 swagger 界面:

如果需要一个在线的管理系统可以注册 Sidekick 的 Cloud 版本。关于具体如何在应用程序中进行集成调试可以看官方文档 https://docs.runsidekick.com/ 了解更多相关信息。

Git 仓库:https://github.com/runsidekick/sidekick。

有关像 Chrome DevTools 一样的后台调试工具 Sidekick的更多相关文章

  1. ruby-on-rails - 无法让 rspec、spork 和调试器正常运行 - 2

    GivenIamadumbprogrammerandIamusingrspecandIamusingsporkandIwanttodebug...mmm...let'ssaaay,aspecforPhone.那么,我应该把“require'ruby-debug'”行放在哪里,以便在phone_spec.rb的特定点停止处理?(我所要求的只是一个大而粗的箭头,即使是一个有挑战性的程序员也能看到:-3)我已经尝试了很多位置,除非我没有正确测试它们,否则会发生一些奇怪的事情:在spec_helper.rb中的以下位置:require'rubygems'require'spork'

  2. ruby - JetBrains RubyMine 3.2.4 调试器不工作 - 2

    使用Ruby1.9.2运行IDE提示说需要gemruby​​-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall

  3. ruby-on-rails - 如何调试 cucumber 测试? - 2

    我有:When/^(?:|I)follow"([^"]*)"(?:within"([^"]*)")?$/do|link,selector|with_scope(selector)doclick_link(link)endend我打电话的地方:Background:GivenIamanexistingadminuserWhenIfollow"CLIENTS"我的HTML是这样的:CLIENTS我一直收到这个错误:.F-.F--U-----U(::)failedsteps(::)nolinkwithtitle,idortext'CLIENTS'found(Capybara::Element

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  6. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  7. ruby - 如何在 ruby​​ 中运行后台线程? - 2

    我是ruby​​的新手,我认为重新构建一个我用C#编写的简单聊天程序是个好主意。我正在使用Ruby2.0.0MRI(Matz的Ruby实现)。问题是我想在服务器运行时为简单的服务器命令提供I/O。这是从示例中获取的服务器。我添加了使用gets()获取输入的命令方法。我希望此方法在后台作为线程运行,但该线程正在阻塞另一个线程。require'socket'#Getsocketsfromstdlibserver=TCPServer.open(2000)#Sockettolistenonport2000defcommandsx=1whilex==1exitProgram=gets.chomp

  8. ruby - Ruby 是否有类似于 Perl 的 "perl -d"的逐步调试器? - 2

    Ruby是否有逐步调试器,类似于Perl的“perl-d”? 最佳答案 ruby-debug(对于ruby1.8),debugger(对于ruby1.9),byebug(对于ruby​​2.0)以及trepanning系列都有一个-x或--trace选项。在调试器内部,命令setlinetrace将打开或关闭线路跟踪。这是themanualforruby-debug原来的答案已经修改,因为数据噪声文章的链接,唉,不再有效了。还添加了ruby​​-debug的后继者 关于ruby-Ruby

  9. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  10. ruby - 使用 Ruby 开发工具包将文件上传到 Amazon S3 - 2

    我正在尝试上传文件。一个简单的hello.txt。我正在关注文档,但无法将其上传到我的存储桶。#STARTAWSCLIENTs3=Aws::S3::Resource.newbucket=s3.bucket(BUCKET_NAME)begins3.buckets[BUCKET_NAME].objects[KEY].write(:file=>FILE_NAME)puts"Uploadingfile#{FILE_NAME}tobucket#{BUCKET_NAME}."bucket.objects.eachdo|obj|puts"#{obj.key}=>#{obj.etag}"endresc

随机推荐