Kaleidoscope is an open-source observability tool designed for developers to explore and enhance the backend architecture of web applications. It provides a unique node map visualization, enabling the analysis of request latency across various endpoints and identification of performance bottlenecks.
Please read the website and medium article for more information.
- Annotate nodes and node data for detailed insights.
- Upcoming enhancements include a Node map sandbox, Trace movement visualization, and much more.
- Node map sandbox
- Trace movement visualization
- Implement map saving and users saving maps
- Populating the annotations on the map so they correspond to their location in the architecture
- Rework Node Map to D3
- Account information after log in
- OAuth
- Hosted demo of application
- Hosted Splash Page
- Individual trace information (waterfall)
- "Refresh" button to find new traces for system
- npm package
- Finish conversion of backend to Go
- To use Kaleidoscope, you can instrument your application using OpenTelemetry, and export the data to the containerized version of the OpenTelemetry Collector that runs in tandem with this app. If your application is writtten in Node.js it can be instrumented automatically by running the application while requiring instrumentation.js:
$ node --require ./instrumentation.js <entry point to your application>
- Ensure the environment variable in your application for the OTel collector is set as follows:
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
- Once you've instrumented your application to emit telemetry data, start the OTel collector in a Docker container:
$ cd otel-collector && docker compose up
- Telemetry data should now be transmitted to Kaleidoscope as requests travel through your app!
- Open Kaleidoscope from the root directory:
$ npm run start-dev
- Register / Sign in to generate a node map of your app's latest trace data (Registration/Signin is implemented locally for Kaleidoscope)