> ## Documentation Index
> Fetch the complete documentation index at: https://docs.honeycomb.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Common Issues with Visualization

> Troubleshoot common problems with Honeycomb Home, Board Templates, Service Map, and other visualization features not displaying data as expected.

If you need to troubleshoot your visualizations, explore these solutions to common issues.

<Tip>
  To ask questions and learn more, visit our [Support Knowledge Base](https://support.honeycomb.io/) or [join our Pollinators Community](/troubleshoot/community/).
</Tip>

## Home

Troubleshoot visualizations in [Honeycomb Home](/observe/honeycomb-home/).

### Traces View

Troubleshoot visualizations on the **Traces** view in [Honeycomb Home](/observe/honeycomb-home/).

#### Traces view is empty

If your dataset is not a tracing dataset, then the **Traces** view will not populate.

To ensure the **Traces** view is populated, either:

* send a source field named `trace.trace_id` to Honeycomb, which will let Honeycomb detect and map dataset fields automatically, or
* manually map a source field to the **Trace ID** dataset field when you [map your data](/send-data/standardize/map-data/)

#### Empty Span Visualizations

"Total Spans", "Span Volume", "Spans by Type", "p95 of Span Duration", and "Top Spans" rely on a source field being mapped to the **Span Id** dataset field.

To ensure the visualizations are populated, either:

* send a source field named `span.id` to Honeycomb, which will let Honeycomb detect and map dataset fields automatically, or
* manually map a source field to the **Span Id** dataset field when you [map your data](/send-data/standardize/map-data/)

#### Empty Duration Visualizations

The "P95 of Span Duration" visualization relies on a source field being mapped to the `duration` dataset field.

To ensure the visualizations are populated, either:

* send a source field named `duration_ms` to Honeycomb, which will let Honeycomb detect and map dataset fields automatically, or
* manually map a source field to the **Span Duration** dataset field when you [map your data](/send-data/standardize/map-data/)

#### Empty Total Exceptions and Top Exceptions Visualizations

"Total Exceptions" and "Top Exceptions" visualizations rely on the `exception.message` field being available.
To learn how to record `exception` with OpenTelemetry, visit [OpenTelemetry's documentation on exceptions](https://opentelemetry.io/docs/specs/otel/trace/exceptions/).

#### Empty Exception Volume By Type Visualizations

"Exception Volume By Type" relies on the `exception.type` field being available.
To learn how to record `exception` with OpenTelemetry, visit [OpenTelemetry's documentation on exception spans](https://opentelemetry.io/docs/specs/semconv/exceptions/exceptions-spans/).

### Logs View

Troubleshoot visualizations on the **Logs** view in [Honeycomb Home](/observe/honeycomb-home/).

#### Logs view is empty

If your dataset is not a logs dataset, the **Logs** view will not populate.

To ensure the **Logs** view is populated, either:

* send a source field named `body` to Honeycomb, which will let Honeycomb detect and map dataset fields automatically, or
* manually map a source field to the **Logs: Message** dataset field when you [map your data](/send-data/standardize/map-data/)

#### Severity visualizations are empty

Severity visualizations rely on a source field being mapped to the **Logs: Severity** dataset field.

To ensure the Severity visualizations are populated, either:

* send a source field named `severity` to Honeycomb, which will let Honeycomb detect and map dataset fields automatically, or
* manually map a source field to the **Logs: Severity** dataset field when you [map your data](/send-data/standardize/map-data/)

#### "Logs by Severity" chart shows only non-standard (Other) severities

The Logs by Severity Chart supports standard severities, which include `fatal`, `error`, `warn`, `info`, `trace`, `debug`, and `unspecified`.
If you are sending non-standard severities, the chart will label them as `Other`.

To ensure the "Logs by Severity" chart shows your severities, use Calculated Fields to [parse your severity values into Honeycomb standard severity values](/send-data/standardize/transform-data/#transform-source-severities-into-honeycomb-standard-severities).

### Explore Data View

#### Log lines are not color-coded by severity

Severity visualizations rely on a source field being mapped to the **Logs: Severity** dataset field.

To ensure the Severity visualizations are populated, either:

* send a source field named `severity` to Honeycomb, which will let Honeycomb detect and map dataset fields automatically, or
* manually map a source field to the **Logs: Severity** dataset field when you [map your data](/send-data/standardize/map-data/)

In addition, if you are using non-standard severities, use Calculated Fields to [parse your severity values into Honeycomb standard severity values](/send-data/standardize/transform-data/#transform-source-severities-into-honeycomb-standard-severities).

## Board Templates

Troubleshoot visualizations in [Board Templates](/observe/boards/templates/).

### A Board template is missing a query

Visualizations in board templates depend on specific fields being available in your data.
Add additional insights and eliminate missing queries by configuring or sending the required fields.
Sending the necessary data populates the templates with more queries.
You can also choose to select different fields to populate each query within the **Setup** view.
For more information, refer to our [available templates](/observe/boards/templates/#board-templates-at-a-glance) and their required fields.

## Service Map

Troubleshoot visualizations in [Service Map](/observe/service-map/).

### The map is empty when you expect data present

An empty service map can happen for two reasons:

1. Service Map generates automatically from trace data sent to Honeycomb and, with the exception of **timestamp**, is based on these defined Tracing fields:

   * **Service name** - name of the instrumented service
   * **timestamp** - time and date information that corresponds to the start of the span
   * **Span duration** - describes how much time in milliseconds that the span took to complete
   * **Span ID** - the unique ID for the span
   * **Trace ID** - the ID identifying which trace that the span belongs to
   * **Parent span ID** - The ID of the span's parent span, or the call location the current span was called from

   If any of this data is missing or undefined, the map will not display.

   Confirm that your [Dataset fields in Dataset Definitions](/configure/datasets/definitions/) are defined with Field name values.

2. Service Map may take up to a few minutes to generate after you start sending data to Honeycomb.
   Check back in a few minutes to confirm if the Service Map has generated.

### You cannot find a service on the map

First, confirm that traces include the service name.
Service Map generates services from trace data that includes the service name.
To confirm, run a VISUALIZE `COUNT` WHERE `service.name = <service name>` query in [Query Builder](/investigate/query/build/) where `service.name` is the service name field.

The query will return a count of events associated with the service and helps to validate whether the Service exists in that time range.
If the query result returns `0`, then it means that no requests were made to that service and Service Map is accurate.
If COUNT returns a result greater than zero, it may not be visible on the map because:

* Recently sent requests to this service may take a few minutes to process and display on the map
* The service is instrumented with `component: proxy` or `net.component: proxy`.
  Thus, Honeycomb treats the service as a Gateway, which visually transforms the service into a Gateway square on an edge as opposed to a Service node.
  Confirm by running the following query to see if your service is instrumented with gateway attributes:

  * VISUALIZE `COUNT`
  * WHERE `service.name = <service name>`
  * GROUP BY `component:proxy`, `net.component:proxy`

Second, use the time picker in the top right to select a larger range of time.
Service Map automatically samples traces to represent higher volume services.
This means that Service Map may not represent services or edges with very low traffic in a selected time range.
Expand the date range to view a larger sample, and the missing service may appear.

### The map contains only disconnected services

Service Map generates based on trace data sent to Honeycomb.
If traces only include one service, the singular service displays as one disconnected node.
Send traces that include more than one service to visualize edge connections between services on your map.

### All services point to the gateway service

Follow the [instrumentation guide to flag gateways](/observe/service-map/#instrument-for-gateways), so Service Map can represent them differently.

### Your map is dense and hard to read

Use [**Services**](/reference/honeycomb-ui/service-map/#select-services) or [**Filter Traces**](/reference/honeycomb-ui/service-map/#filter-traces) dropdowns to narrow down your map to a specific set of services.
After narrowing down to a smaller diagram, hover over a specific service on the map and select **Isolate** to display all dependencies, or its incoming and outgoing services, for the selected service.

### When you apply filters, an expected service or path does not display

When filter parameters are applied to the Service Map, the results return a maximum of 10,000 traces.
These traces are then displayed on the Service Map when using Filters and/or selectively displayed when using the Service Filter.

Because of the limit applied, there is a possibility that very low volume traces are not represented in the sample returned.

### p95 latency for services and edges in Service Map do not match p95(duration\_ms) in Query Builder

This difference is expected.
Service Map calculates the `p95` duration for services and edges differently from the `p95(duration_ms)` query in Query Builder.

Service Map latency calculations include synchronous spans, which communicate between services.
Query Builder latency calculations includes both synchronous and asynchronous, or internal, spans.

### You instrumented Gateways, but they do not appear on your map

When [instrumenting your gateways](/observe/service-map/#instrument-for-gateways) and they still do not appear on your map, it is possible that your gateway requests do not occur between known services.
Service Map only displays gateways on an edge, which is formed when one service send requests to another service.
If an edge does not exist, either because a service does not send requests to another service or if the service sends requests to another service through multiple gateways, then gateways may not display on your map.

If either of these scenarios are common in your architecture, join #discuss-service-map in our [Pollinators Community Slack](/troubleshoot/community/#join-pollinators-community-slack) and let us know.

### A "No Service Map data found" error appears when you filter your map, but you found a trace that matches the filter set

Filters find traces with at least one span that matches all filters you have entered.
For example, if the filters of `app.cart.items &gt; 5` AND `app.user.currency = USD` are set in [**Filter Traces**](/reference/honeycomb-ui/service-map/#filter-traces), then it displays traces that have at least one span that matches both those filters.
If the fields used in your filters exist across different spans in a trace, a result is not returned.
If possible, try propagating context throughout your traces to enable filters to return matching results.
