Using Side-Eye is free

A debugger for production
Go systems

Dynamically instrument your software in production with no code changes, re-compiles or restarts. Take snapshots of your distributed system. Go deeper in root causing failures.

Vectors Preview Preview Preview Preview Preview Preview Preview
Snapshot Icon
Open snapshot
Snapshot Icon
Back to snapshots list
Snapshot Icon
Captured data organized in SQL tables
Snapshot Icon
Detailed stacks view including captured data
Snapshot Icon
Back to flame graph
running_statements
Package:
pkg/sql/connExecutor.execStmtInOpenS...
Columns
goroutine_id, ex.state.mu.txn.mu.ID, sql, s...
Open a table
Snapshot Icon
Back to tables list
Snapshot Icon
Details on the goroutine executing a particular query
Snapshot Icon
Navigate across gRPC network calls from to the server-side goroutine handling this request
Snapshot Icon
Data collected for a specific function across all goroutines
Snapshot Icon
Back to client-side goroutine
  • Preview
  • Preview
  • Preview
  • Preview
  • Preview
  • Preview
Snapshots list
question
Search through all the snapshots captured by your team.
About us

Side-Eye brings dynamic instrumentation to Go systems

Even the best-instrumented systems aren't immune to the challenges of troubleshooting, on-call burdens, and debugging that can overwhelm teams. Getting to a point where you can call your system well-instrumented is an expensive endeavor. Side-Eye changes that calculation by enabling developers and operators to instrument the software as questions arise, without changing code, redeploying, or restarting anything.

Side-Eye is a modern take on the power of debugger, but one that works for teams of people operating distributed production systems. Instead of relying exclusively on existing log messages, Side-Eye lets you interactively collect new signals and data on the fly, getting you to the root cause. Never bottom out at a perplexing chart again!

Demo

Side-Eye is a next-generation debugger for teams that care about mission-critical back end systems

Side-Eye is a distributed debugger that you'll enjoy using. It is featureful and built with the user in mind so that you can click your way to answering any question about software dynamics.

Features

What’s included?

Side-Eye is debugger that you'll enjoy using. It is featureful and built with the user in mind so that you can click your way to answering any question about software dynamics.

Use cases

Deeply understand the state of your distributed system with snapshots

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 flame graph showing an aggregated view of all the goroutines, or as SQL tables exposing variables and expression data collected from different modules.

Dynamically instrument software

Add new logs and metrics to your system at run time, without changing the source code, recompiling or restarting any processes. Don’t wait for the next release to get new telemetry.

Root-cause rare errors through rich, dynamic error reports

Imagine a Sentry error or crash report that lets you say “next time this failure happens, also include these variables and expressions from across the stack in the report”. Errors that are hard to reproduce used to be hard to investigate; dynamic error reports give you recourse without having to add expensive new static instrumentation to your software.

Control the costs of telemetry

Too much junk in your Splunk? Paying too much for Datadog time series that nobody ever looks at? Dynamic instrumentation lets you enable telemetry when it’s needed, so you don’t have to decide a priori what’s worth instrumenting.

Replace rigid status pages with flexible dashboards that evolve independently

Side-Eye distributed snapshots can be analyzed through SQL queries joining and aggregating the collected 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/transactions 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. They can augment or replace HTTP endpoints commonly programmed into services for status reporting and debugging purposes. Side-Eye reports are decoupled from the software's release cycle and can evolve on the fly, as needed. The reports can also be included in Grafana dashboards.

Instrument your software and debug with your whole team, over time

Complex systems need to be instrumented and observed by a team of people with expertise in different services and modules. Side-Eye is a multi-player debugger – everybody in the organization contributes to specifying what data should be collected and how it should be organized, and any collected data is naturally shared.

Integrate into test environments to understand test flakes

How many times have you looked at a test failure without having enough information to understand what happened? With Side-Eye, a test failure or timeout can include rich data about the state of the system at the time of the failure, giving you something to look at.

Empower the support team to ask deeper questions

It’s hard for support engineers that haven’t been involved directly in writing the code to gain a deep understanding of the system. Side-Eye brings engineering, DevOps, SRE, and support together, letting everybody collaborate on ever-better incident response.

The Blog

Install the agent

Log into the web app with your corporate e-mail, get your organization's API token, and install the Side-Eye agent on every machine.

App Preview