---
title: Insights & Logging
description: Dive into your Honeybadger and application events.
url: https://docs.honeybadger.io/guides/insights/
---

You can use [Honeybadger Insights](https://www.honeybadger.io/tour/logging-observability/) to dive into the data collected by Honeybadger and the logs and other events that you send to our [Events API](https://docs.honeybadger.io/api/reporting-events/). We provide a query language (that we lovingly call [BadgerQL](https://docs.honeybadger.io/guides/insights/badgerql/)) that enables quick discovery of what’s happening inside your applications. The Insights UI also lets you chart the results of those queries and add those charts to [dashboards](https://docs.honeybadger.io/guides/dashboards/) that you can share with your team.

![Insights overview](https://docs.honeybadger.io/_astro/insights-overview.QfCgwxZs_Z2csPS3.webp)

## Querying and visualization

Our [query language](https://docs.honeybadger.io/guides/insights/badgerql/) strives to be minimalist, yet powerful. With it you can specify which fields you want to see, filter the kinds of events that should be returned, perform aggregations and calculations, and more. When you first load the Insights UI, you will see a query box that has a default query to help you get started:

```plaintext
fields @ts, @preview
| sort @ts
```

This query selects a couple of special fields — the timestamp and a preview of the fields that are available in the event — and sorts the results by time, with the most recent results first. Each row of the query is piped through the following row, which allows you to apply filters, formatting functions, and so on. Let’s do a quick walk-through to see how it works, and to see how it can be used to create visualizations of your data.

### Walk-through

Here’s an example of working with some Honeybadger data. First, filter the data to see only the results of [uptime checks](https://docs.honeybadger.io/guides/uptime/):

```plaintext
fields @ts, @preview
| filter event_type::str == "uptime_check"
| sort @ts
```

![Filtered query results](https://docs.honeybadger.io/_astro/query-filter.CHlCuZ6L_ZhsOMj.webp)

You can see that we’ve piped the initial results through `filter`, which accepts a variety of conditions, such as the string comparison shown here. You’ll also notice that we specified the data type of the `event_type` field (`str`) so the query parser can validate the functions and comparisons that you use on the field data.

Clicking on the disclosure arrow will show the all the fields that were stored for an event:

![Event detail](https://docs.honeybadger.io/_astro/event-detail.FXaPoHe__IfKOV.webp)

Additional disclosure controls appear inside the event detail view when the event has nested objects.

Let’s filter on some additional data that is present in these events. We can limit the results to show only the uptime checks that originated from our Virginia location, and we can change the fields that we display so we can see some info about the results of each check:

```plaintext
fields @ts, location::str, response.status_code::int, duration::int
| filter event_type::str == "uptime_check"
| filter location::str == "Virginia"
| sort @ts
```

![Limiting the fields in a query](https://docs.honeybadger.io/_astro/limited-fields.lCHUE-Ou_1LNixy.webp)

Now let’s summarize the data to find the average response duration for all successful checks:

```plaintext
fields duration::int
| filter event_type::str == "uptime_check"
| filter location::str == "Virginia"
| filter response.status_code::int == 200
| stats avg(duration) by bin(1h) as time
| sort time
```

![Using aggregates](https://docs.honeybadger.io/_astro/aggregates.Bnd1TDNK_Z2gcyuI.webp)

We use `stats` to perform all kinds of calculations, such as averages, and `by` allows us to specify the grouping for those calculations. Grouping by `bin` gives us time-series data, which makes it easy to create a chart by clicking the Line button.

![Line chart of response times](https://docs.honeybadger.io/_astro/chart.D5s7aHUj_ZeROoU.webp)

From there you can experiment with different visualizations, update the query to change the chart (try changing `1h` to `15m`), and add the chart to a custom dashboard.

Of course, this functionality isn’t limited to only the data that is generated by Honeybadger. Your error data is also available for querying (`event_type::str == "notice"`), and you can send logs and events to our [API](https://docs.honeybadger.io/api/reporting-events/) to be able to query and chart your own data.

### Streams

Streams are the fundamental data sources in Honeybadger Insights. They serve as the starting point for your queries and represent the data you want to analyze.

When you create a new Honeybadger project, we automatically set up two streams for you:

**Internal stream**

The Internal Stream is a dedicated stream that stores all Honeybadger-generated events related to your project. This includes errors, deployments, notifications, uptime checks, and other internal Honeybadger data. You cannot directly send custom events to the Internal Stream, as it is managed by Honeybadger itself.

**Default stream**

The Default Stream is the primary stream for storing custom events that you send using Honeybadger client libraries or the Honeybadger API. Any event data you explicitly send to Honeybadger will be stored in the Default Stream.

#### The stream selector

You can select the active streams from the stream selector at the top of the query editor. This affects the data that Insights returns for your queries.

![Insights stream selector](https://docs.honeybadger.io/_astro/insights-stream-selector.CVDB6NrA_Z1N3ByO.webp)

Removing a stream you don’t need can improve your query response times, because then Insights doesn’t need to scan that data when executing your query. So for example, if you’re just querying your application logs, you can remove the *Internal* stream to get a faster response.

## Working with dashboards

[Dashboards](https://docs.honeybadger.io/guides/dashboards/) allow you to collect different types of charts and query results on a single page. Any query or chart that you generate can be added to a dashboard, which will then be shared with the rest of your team. Each widget on a dashboard includes a link to view the query and raw results behind the widget:

![Notices widget](https://docs.honeybadger.io/_astro/notices-widget.CcYkg-DL_2nzm3N.webp)

If you change the query or the visualization, you can save those changes back to your dashboard, or add them as a widget to a new dashboard.

We provide some [automatic dashboards](https://docs.honeybadger.io/guides/dashboards/#automatic-dashboards) to get you started. For example, when you [add a Heroku drain](https://docs.honeybadger.io/guides/insights/integrations/heroku/) to your app, the [automatic Heroku dashboard](https://docs.honeybadger.io/guides/dashboards/heroku/) will show data like the number of requests grouped by response code that we automatically collect from [Logplex](https://devcenter.heroku.com/articles/logplex).

To learn more about dashboards, see the [dashboards guide](https://docs.honeybadger.io/guides/dashboards/).

## Adding data from other sources

Insights includes all the events that Honeybadger collects, such as error notifications, uptime checks, and check-in reports, but you can send your own event data as well.

Our [API](https://docs.honeybadger.io/api/reporting-events/) accepts newline-delimited JSON, where each line is a JSON object that describes an event that you care about. You can send user audit trail events, metrics, or any other data you’d like to query and analyze. The type of data most frequently sent to Insights is application log data.

Sending structured logs in a JSON format (like [lograge](https://github.com/roidrage/lograge) produces) allows you to correlate what’s happening in your app with the error data that Honeybadger is already recording for you. See our integration guides to learn how you can easily send log events from sources such as Heroku apps and CloudWatch Logs.

[Ruby and Rails apps](https://docs.honeybadger.io/guides/insights/integrations/ruby-and-rails/)Send metrics and events from Ruby and Rails apps to Honeybadger Insights

[Elixir/Phoenix apps](https://docs.honeybadger.io/guides/insights/integrations/elixir-phoenix/)Send logs and events from Elixir/Phoenix apps to Honeybadger Insights

[JavaScript apps](https://docs.honeybadger.io/guides/insights/integrations/javascript/)Send metrics and events from JavaScript apps to Honeybadger Insights

[PHP/Laravel apps](https://docs.honeybadger.io/guides/insights/integrations/php-laravel/)Send metrics and events from PHP/Laravel apps to Honeybadger Insights

[OpenTelemetry (Beta)](https://docs.honeybadger.io/guides/insights/integrations/opentelemetry/)Send traces, metrics, and logs via the OpenTelemetry Protocol (OTLP)

[CloudWatch Logs](https://docs.honeybadger.io/guides/insights/integrations/cloudwatch-logs/)Stream AWS CloudWatch Logs to Honeybadger Insights

[Crunchy Bridge](https://docs.honeybadger.io/guides/insights/integrations/crunchy-bridge/)Send Crunchy Bridge metrics to Honeybadger Insights

[Fly.io](https://docs.honeybadger.io/guides/insights/integrations/fly-io/)Send Fly.io app metrics to Honeybadger Insights

[Heroku](https://docs.honeybadger.io/guides/insights/integrations/heroku/)Send Heroku app metrics to Honeybadger Insights

[Host metrics](https://docs.honeybadger.io/guides/insights/integrations/host-metrics/)Send host metrics to Honeybadger Insights

[Log files](https://docs.honeybadger.io/guides/insights/integrations/log-files/)Use Vector to ship your log files to Honeybadger Insights

[Netlify](https://docs.honeybadger.io/guides/insights/integrations/netlify/)Send Netlify function logs to Honeybadger Insights

[Systemd (journald)](https://docs.honeybadger.io/guides/insights/integrations/systemd/)Ship systemd journal logs to Honeybadger Insights

---

## Try Honeybadger for FREE

Intelligent logging, error tracking, and Just Enough APM™ in one dev-friendly platform. Find and fix problems before users notice.

[Start free trial](https://app.honeybadger.io/users/sign_up)

[See plans and pricing](https://www.honeybadger.io/plans/)
