像 Chrome DevTools 一樣的后臺調(diào)試工具 Sidekick

Sidekick 是一個開源的實時應(yīng)用程序調(diào)試器,可讓你在應(yīng)用程序運(yùn)行時對其進(jìn)行故障排除。添加動態(tài)日志并在你運(yùn)行的應(yīng)用程序中放置不間斷的斷點,而無需停止和重新部署。Sidekick 允許我們進(jìn)行自托管使實時調(diào)試更易于訪問,專為需要從運(yùn)行的應(yīng)用程序中獲取額外信息的開發(fā)者而設(shè)計的。

簡介
在遠(yuǎn)程環(huán)境中調(diào)試應(yīng)用程序很痛苦,因為你無法像在本地環(huán)境中那樣為遠(yuǎn)程應(yīng)用程序設(shè)置斷點。Sidekick 背后的主要動機(jī)是幫助開發(fā)人員減輕在分布式環(huán)境的遠(yuǎn)程開發(fā)過程中由于缺乏調(diào)試工具而造成的痛苦。
Sidekick 消除了調(diào)試的負(fù)擔(dān),使開發(fā)人員能夠為你的代碼設(shè)置一個非侵入式斷點,這不會中斷執(zhí)行,即使你的應(yīng)用程序已啟動并正在運(yùn)行,仍然能夠調(diào)試你的應(yīng)用程序。
Sidekick 為應(yīng)用程序運(yùn)行時提供 Java、Python 和 NodeJS 代理。開發(fā)人員使用 Web IDE、Visual Studio Code 或 IntelliJ IDEA 將 Sidekick 操作(日志點和跟蹤點)放入代碼中,Sidekick 將點位置傳送給代理。當(dāng)代碼執(zhí)行時,代理會在不停止應(yīng)用程序的情況下拍攝應(yīng)用程序狀態(tài)、調(diào)用堆棧、捕獲的變量等的快照,并將快照或生成的日志作為事件發(fā)送到你的環(huán)境。
使用 Sidekick 捕獲快照或生成日志后,開發(fā)人員可以分析事件以了解應(yīng)用程序的行為。

雖然利用日志數(shù)據(jù)似乎是調(diào)試遠(yuǎn)程應(yīng)用程序的最明顯選擇,但 Sidekick 提供了一個額外的優(yōu)勢,具有類似于在本地環(huán)境中調(diào)試應(yīng)用程序的無縫調(diào)試體驗。
無論你是開發(fā)人員、測試軟件工程師還是 QA 工程師,Sidekick 都可以幫助你找到錯誤的根本原因。
特性
- 你的日志點和跟蹤點的條件和自定義命中限制,只收集你需要的內(nèi)容
 - 用于日志點的 Mustache 動力表達(dá)系統(tǒng),輕松將可變數(shù)據(jù)添加到你的日志上下文
 - 可定制的代理 -> 配置代理的工作方式,定義深度和幀數(shù)
 - 使用 Thundra APM 和 Open-telemetry 跟蹤聚合你收集的數(shù)據(jù)
 - 自動收集錯誤并將它們發(fā)送給你選擇的目標(biāo)(將于 8 月 30 日提供)
 - 定義自定義數(shù)據(jù)編輯函數(shù)來控制收集的內(nèi)容(僅限 Node.js)
 - 以編程方式控制您的日志點和跟蹤點
 - 使用 Sidekick 客戶端以你的方式處理收集的數(shù)據(jù)
 


安裝
使用 Sidekick 的最簡單方法是在 Sidekick Cloud 上創(chuàng)建一個帳戶,此外我們也可以進(jìn)行自托管,我們可以自己構(gòu)建 Sidekick 或使用官方的 Docker 鏡像。
可以使用如下所示的命令來運(yùn)行 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:
所以我們可以執(zhí)行 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)
應(yīng)用程序準(zhǔn)備就緒后,我們可以使用 ws://<your-server-hostname-or-ip>:7777 這個 url 連接到 agent,同樣還可以通過 http://<your-server-hostname-or-ip>:8084/swagger-ui.html 查看 API 的 swagger 界面:

如果需要一個在線的管理系統(tǒng)可以注冊 Sidekick 的 Cloud 版本。關(guān)于具體如何在應(yīng)用程序中進(jìn)行集成調(diào)試可以看官方文檔 https://docs.runsidekick.com/ 了解更多相關(guān)信息。
Git 倉庫:https://github.com/runsidekick/sidekick。















 
 
 












 
 
 
 