Understand complex software dynamics
Actually get to the root cause of incidents and pathologies
Enable the customer support team to go deeper
“True observability” by deeply exploring your system’s execution state
Debug your services across process and machine boundaries
Customize the debugging experience to your software; debug as a team and don’t start with a blinking cursor
Replace rigid /status pages programmed into the software with more flexible dashboards that evolve independently
Capture snapshots of a distributed system
Capture deep information about the state of execution of every goroutine in the system at a point in time.
Explore the stack traces of all the goroutines running in the snapshotted processes in different ways — e.g. as a flamegraph showing an aggregated view of all the goroutines.
Collect stack and heap data from your processes
Explore data as SQL tables
Navigating between related goroutines
Link together frames from different goroutines (or, more generally, different entities from the collected data). For example, an operation currently blocked trying to acquire a lock can be linked to the operation that is holding the lock. Or, a client-side goroutine waiting on a network request is linked to the server-side goroutine that is handling the request.
Following links makes understanding the current state of intertwined operations easy and pleasant.
Debug at scale
Debugging a complex system involves a team of people working over a period of time. Side-Eye is designed to support team collaboration. Debugging sessions do not start with a blinking cursor; they start from a specification of what data to collect and how to organize it that was built over time by colleagues working on the same codebase.
This specification defines which variables/expressions are collected and from which functions, how the collected data is refined into SQL tables, and what entities are linked together.
Produce reports
Collected data can be refined into new SQL tables through SQL queries joining and aggregating variables data. For example, a table can be created that lists pairs of related operations – when monitoring a SQL database, one could define a table listing pairs for SQL queries that are blocked on each other. Such derived tables are high-level "reports" about the current state of the system as it was captured in a snapshot. Such reports can replace /statusz HTTP endpoints commonly programmed into services for debugging purposes. Side-Eye reports are decoupled from the software's release cycle and can evolve on the fly, as needed.
A Grafana plugin for creating dashboards is coming soon.
Contact
© Data Ex Machina, Inc. 2024