Honeycomb features

To monitor application performance, Workleap has adopted Honeycomb, a tool that helps teams capture and analyze distributed traces and metrics to understand and monitor complex systems, application behaviors, and performance. Built on OpenTelemetry, Honeycomb provides a robust API for frontend telemetry.

While Honeycomb's in-house HoneycombWebSDK includes great default instrumentation, the @workleap/telemetry package provides a slightly altered default instrumentation which is adapted for Workleap's applications' requirements.

Default instrumentation

Workleap’s Honeycomb instrumentation includes a few default traces 👇

Fetch requests

Individual fetch request performance can be monitored from end to end:

Fetch instrumentation
Fetch instrumentation

Document load

The loading performance of the DOM can be monitored:

Document load instrumentation
Document load instrumentation

Unmanaged error

When an unmanaged error occurs, it's automatically recorded:

Recorded error
Recorded error

Real User Monitoring (RUM)

Performance data is collected from real user sessions to generate metrics and insights:

Largest Contentful Paint
Largest Contentful Paint
Cumulative Layout Shift
Cumulative Layout Shift
Interaction to Next Paint
Interaction to Next Paint

Correlation ids

Two correlation ids are automatically added to every trace:

  • app.telemetry_id: Identifies a single application load. It's primarily used to correlate Honeycomb traces with the other telemetry platforms.
  • app.device_id: Identifies the user's device across sessions. This value is extracted from the shared wl-identity cookie, which is used across Workleap's marketing sites and web applications.

app.telemetry_id attribute

app_device_id attribute
app_device_id attribute

LogRocket session URL

If LogRocket instrumentation is enabled, Honeycomb traces are enriched with the LogRocket session URL as soon as it becomes available:

LogRocket session URL
LogRocket session URL

Set custom attributes

Most applications need to set custom attributes about the current user environment on all traces. To help with that, HoneycombInstrumentationClient expose the setGlobalSpanAttributes method:

import { useHoneycombInstrumentationClient } from "@workleap/telemetry/react";

const client = useHoneycombInstrumentationClient();

client.setGlobalSpanAttributes({
    "app.user_id": "123"
});

Now, every trace recorded after the execution of setGlobalSpanAttributes will include the custom attribute app.user_id:

Custom attributes
Custom attributes