Another month has come to a close, so I’m back again to take you through what’s new and noteworthy from the month of September. If you missed last month’s blog, this will be a monthly recurring series to keep you posted with the latest and greatest at Honeycomb. There’s a ton to cover, so I’ll dispense with the preamble and dive right in.
Updated APIs and transports
Dataset API updates
Dataset definitions allow you to define which fields you send to Honeycomb have a special meaning that needs to be understood. While these definitions could always be managed in the UI, they can now be defined and updated programmatically via the new dataset_definitions
API.
An existing dataset can have its definitions updated via the PATCH endpoint, like so:
curl https://api.honeycomb.io/1/dataset_definitions/$DATASET_SLUG \ -X PATCH \ -H "X-Honeycomb-Team: YOUR_API_KEY" \ -d '{"trace_id": { "name": "trace.trace_id"}, "error": {"name": "err_msg"}}'
SLO API updates
We’ve augmented the payload of GET requests to the SLO API in a couple of small (but exciting!) ways. First, you will now see reset_at
alongside created_at
and updated_at
, which contains a timestamp for when the requested SLO was last reset. Additionally, enterprise customers now have the option to execute their requests with the new ?detailed
query param, which will include the compliance percentage and budget remaining for the requested SLO. Now, your SLO health is just an authenticated curl away, making it that much easier to integrate into your toolchain of choice.
Here’s what an example API request might look like.
Request:
curl https://api.honeycomb.io/1/slos/<dataset>/<slo-id>?detailed -X GET \ -H "X-Honeycomb-Team: YOUR_API_KEY"
Response:
200 OK { "time_period_days": 6, "target_per_million": 950000, "id": "t2xbD5vNhh1", "name": "slo name", "description": "what is the intent of this slo", "sli": { "alias": "service_error_indicator", "expression": "GTE($\"level\", 500)" }, "created_at": "2022-05-11T09:53:04-07:00", "updated_at": "2022-05-11T09:53:04-07:00", "reset_at": "2022-05-11T09:53:04-07:00", "budget_remaining": 7.73, "compliance": 95.39 }
HTTP/JSON support for OTLP
Another small but impactful change—and the heading says it all. We can ingest your OTLP (OpenTelemetry Protocol) data over gRPC, HTTP/protobuf, and now, HTTP/JSON as well!
New Refinery releases
As the data you collect grows, it becomes more and more important to sample that data, or collect a representative subset of the overall data without losing valuable insights. Refinery is a trace-aware sampling proxy that specializes in doing just this for your Honeycomb traces. It automates the process of determining which traces to keep or discard.
There’s been a ton of activity in the Refinery project of late, including two releases in the month of September (1.16.0 and 1.17.0). There are new bugfixes and enhancements, but a theme you’ll see in this update is improved methods for diagnosing and validating your sampling process.
Of particular note, there is now a new query endpoint you can use to validate the running configuration, as well as an optional flag that will attach sampling information to your traces.
New integration: Terraformer
Did you know that there’s a Honeycomb provider for Terraform? Being able to manage your observability as code can be invaluable for automating processes, onboarding new people, and bootstrapping new environments. Still, there is one potential impediment to adoption: the process of collecting and translating existing configurations to Terraform can be time-consuming and tedious, particularly for longtime Honeycomb users with a lot of manually created resources.
Actually, scratch that. There was a potential impediment to adoption that’s addressed with the release of Terraformer 0.8.22, which now includes support for Honeycomb. If you’re unfamiliar, Terraformer is “a CLI tool that generates tf/json
and tfstate
files based on existing infrastructure.” In other words, you can point Terraformer at an existing resource that Terraform knows how to configure, and it will reverse engineer the appropriate config files to recreate them…
…and those resources now include Honeycomb! Go ahead and check it out. You can grab any of the desired resources with:
export HONEYCOMB_API_KEY=MYAPIKEY ./terraformer import honeycombio --resources=board,trigger,derived_column,slo
Updated integration: PagerDuty
Our PagerDuty integration was updated with a snazzy new feature: image snapshots. Now, when a PagerDuty alert is created from a Honeycomb trigger, it will attach an image of a graph that corresponds with the associated trigger. No changes required to your integration settings, just more context in your alerts.
Note: This feature is currently limited to alerts generated from triggers and does not apply to burn alerts.
Updated integration: GitHub Actions
We’ve released version 2.0 of our gha-buildevents utility. If you’re not familiar with Buildevents, it allows you to add instrumentation to your CI/CD pipelines and send traces to Honeycomb. If you run builds with GitHub Actions, we created the gha-buildevents action to make it easier to instrument your workflows. With the release of version 2.0, you can now generate traces for an entire workflow end to end or for a singular job.
You can check out the details in the README as well as an updated example configuration.
Traces can be workflow scoped! By the way, since you’re reading this and you’re most likely a fan of both Buildevents and GitHub Actions, have you seen our new guide? It’ll take your CI game to the next level.
August, revisited
We made a couple of small changes for some of the items featured in last month’s feature focus.
Derived Column editor
The new IDE-like editor is now default when creating or updating a Derived Column. If you were a fan of the old editor, don’t worry—you can still toggle. Either way, we’d love your feedback on the new experience.
We’ve also updated the live preview such that the Derived Column data shows up in the left column, making it easier to see changes at a glance.
Docs copy button
We noticed that our new copy button wasn’t showing up on textboxes with tabs. This has been resolved. Let the copypasta flow! 🍝
Wrapping it up
That’s all for the back-to-school edition of feature focus. As always, you can find a full list of updates we’ve made to Honeycomb in our changelog, in Pollinators Slack, or by following our Twitter account via the #changelog hashtag.
See you next month!