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

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

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

简介

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

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

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

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

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

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

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

特性

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

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

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

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

 点击上方卡片关注Github爱好者,获取前沿开源作品



点击下方图片,查看相关文章

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

原文始发于微信公众号(Github爱好者):像 Chrome DevTools 一样的后台调试工具 Sidekick

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/201058.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!