To become an observability genius using Honeycomb, you will tackle three high level objectives:
To get there, we recommend following this guide.
Honeycomb functions particularly well if the events sent are wide, i.e., they have a lot of fields. That said, you can certainly send events with just a few fields to start, and then add more as you go. You can also potentially use one of our drop-in integrations to hook in to patterns you already have, such as HTTP requests your app is serving. Use the following non-comprehensive instrumentation flowchart to get a feel for where you might want to begin.
As a general rule, instrumenting directly in your app or service’s code can take some effort to start with, but it offers the most powerful route to rich custom instrumentation and actionable tracing details. We support other ways of getting data in such as parsing flat files and processing RDS logs or working with AWS’s API, but these require additional infrastructure overhead and offer less flexibility so we encourage you to work towards native code instrumentation.
Our native code integrations take care of efficient sending to the Honeycomb API for you - they do not block your app code as they send in the background, and the amount of resources they use is designed to be minimal. The Beelines offer even more improvements on top of these bindings, by implementing best practices (such as what is outlined below) and an ergonomic API in a library supported by us here at Honeycomb HQ.
If there’s no Beeline available for your language of choice, don’t panic! Underneath the hood, Honeycomb is simply a JSON-over-HTTP API—and if you can build up a key/value map in your code, you can instrument your code and transmit it to Honeycomb.
Start small and work your way towards comprehensive observability using the following process:
Eventinstance.) Add key/value properties to the event using timers, interesting values such as a user/team ID associated with the request, and more.
event.Sendto send the request in the background.)
You might not have an app sitting around ready for you to instrument. That’s OK! We’ve created the Honeycomb Examples Repo to serve as a canonical place chock full of actual applications with instrumentation written to conform to best practices, available for you to learn and yes, in some cases to copy-paste code from.
For instance, you can take a look at our Python API example, which does a good job showing the general idea of generating an event and adding fields to it. If you clone our examples repo, you can bootstrap this simple example app using Docker and play around.
Have an idea for an example you’d like to see? Let us know by filing an issue in the repo!
It might be tempting to use Honeycomb like a log viewing tool, looking at the raw rows only based on various filters. Indeed, the ability to view the raw data comprising queries is one of Honeycomb’s killer features.
But Honeycomb works best when you can flexibly move back and forth between various viewpoints (Graphs, Traces, and Raw Data) to examine your system in the correct level of detail to get the answers you need. So, get as comfortable as you can visualizing things with the CALCULATE box in the query builder. We almost always start off with a simple COUNT: it is very simple, yet can offer excellent insight when paired with a BREAK DOWN (which will segment the calculates based on unique values of the BREAK DOWN field).
After that, tack on as many calculations as you like: thanks to Honeycomb’s extremely quick storage engine, you can compute percentiles and averages over any field without needing to define any indexes or state anything up front.
To zoom in on a time range, drag on the graph and click the magnifying glass. (You can hit “Run Query” one more time to see the zoomed-in region at a higher resolution!)
On the right hand side tab History, you’ll see the entire history of all queries you have run for almost instantaneous reloading into the Query Builder. Thus, you can explore various paths without fear of hitting a dead end. If you get stuck or don’t come up with answers like you were hoping, just click on one of your previous queries to zoom back out.
Take advantage of our collaboration features to get your whole team excited about observability!