暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

k8s技术圈 2022-08-24
386

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

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



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

文章转载自k8s技术圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论