Sidekick is no longer in service
Sidekick is a live application debugger that lets you troubleshoot your applications while they keep on running.
Add dynamic logs and put non-breaking breakpoints in your running application without the need of stopping & redeploying.
Sidekick Open Source is here to allow self-hosting and make live debugging more accessible. Built for everyone who needs extra information from their running applications.
Sidekick has two major actions; Tracepoints & Logpoints.
Supported runtimes: Java, Python, Node.js
To learn more about Sidekick features and capabilities, see our web page.
You can use Sidekick in any stage of your development for your live debugging & logging needs. With Sidekick you can:
All these with almost no overhead. PS: Check out our benchmark blogs
While utilizing log data seems the most obvious choice for debugging a remote application, Sidekick provides an extra edge with a seamless debugging experience that is similar to debugging an application on your local environment.
*you*
Whether you’re a developer, testing software engineer, or QA engineer, Sidekick is here to help you find the root cause of the errors.
Sidekick consists of 3 layers;
The broker is the central unit of Sidekick. It controls all the data flow between clients and agents. This very repository contains the Sidekick broker.
Agents are the layer where Sidekick actions meet with your applications. Agents deployed with your software lets you collect snapshot data and generate dynamic logs without modifying your code. Agents get orders from clients and start listening to the targeted lines with given properties. Then whenever your code hits a logpoint or a tracepoint, agents collect stack & log data and send them to the clients via the broker. Currently, we have agents for Java, Python & Node.js runtimes.
Clients let you interact with the agents. They send commands to agents via the broker and let you control your tracepoints & logpoints. Clients come in many different ways:
The simplest way to use Sidekick is to create an account on Sidekick Cloud. For the self-hosted version, you can either build Sidekick yourself or use our Docker image.
Note
Make sure docker daemon is running.
Note
Docker images are not supported on ARM64 machines. Follow building instructions to run Sidekick on your machine or visit http://www.runsidekick.com for the cloud hosted version
.env
file via any text editor
API_TOKEN
, BROKER_CLIENT_AUTHTOKEN
and BROKER_TOKEN
must be the same, otherwise, you can’t connect your apps and your clientMYSQL_ROOT_PASSWORD
)MYSQL_USER
, SPRING_DATASOURCE_USERNAME
)MYSQL_PASSWORD
, SPRING_DATASOURCE_PASSWORD
)Go to the docker folder under the project
Run command docker-compose up -d
and wait for a minute
App is ready
You can connect to the broker using the url
ws://<your-server-hostname-or-ip>:7777
You can see the API’s swagger interface at
http://<your-server-hostname-or-ip>:8084/swagger-ui/index.html
Note
Follow Build Service Images (Advanced) for arm64 builds
sidekick/sidekick-broker-app
folder under projectrelease.sh
sidekick/sidekick-api
folder under projectrelease.sh
mvn clean install -DskipTests=true
cd sidekick-api
docker build --build-arg JAR_FILE=target/sidekick-api.jar -t runsidekick/sidekick-api:latest .
cd ../sidekick-broker/sidekick-broker-app
docker build --build-arg JAR_FILE=target/sidekick-broker-app.jar -t runsidekick/sidekick-broker:latest .
docker-compose up -d
under docker
folderNow that your broker is ready, you need to install your agents & clients to start using Sidekick. Check out them below.
To learn more see our docs.
Check out docs to learn how you can use agents with Sidekick Open Source!
Check out docs to learn how you can use clients with Sidekick Open Source!
Sidekick Node Client opens up a new & headless way to use Sidekick. It allows you to both use custom ingest functions for the tracepoint or logpoint events and put/edit/delete your tracepoints/logpoints easily using code.
Note
This can be used with agents from all runtimes.
How to add missing logpoints to your running applicatons without stopping and send them to Loki
Achieving Rule-based observability using Sidekick and Camunda
Check out docs for more!
Ingest your Sidekick logs & snapshots to Loki. https://github.com/boroskoyo/sidekick-loki
Related blog post: Sidekick Recipes #2: Send logs to Loki -Add missing logs to your running microservices. Easy as 1–2–3
Send your collected tracepoint & logpoint events to Elasticsearch https://github.com/boroskoyo/sidekick-elastic
Related blog post: Sidekick Recipes #1: Elasticsearch Ingest
Checkout CONTRIBUTING.md
To report a bug or request a feature, create a GitHub Issue. Please ensure someone else has not created an issue for the same topic.
Reach out on the Discord. A fellow community member or Sidekick engineer will be happy to help you out.