Use the query examples below to explore the performance and behavior of your application. The specific attributes below may or may not exist in your data and environment.
Enter each example query using the Query Builder.
These example queries use two to three of the VISUALIZE
, WHERE
, and GROUP BY
clauses, located at the top of the Query Builder.
VISUALIZE
- Performs a calculation and displays a corresponding graph over time. Most VISUALIZE
queries return a line graph while the HEATMAP
visualization shows the distribution of data over timeWHERE
- Filters based on attribute parameter(s)GROUP BY
- Groups fields by attribute parameter(s)This query calculates the total number of root spans received by your application by looking for all spans without a parent span ID.
VISUALIZE | WHERE |
---|---|
COUNT | is_root |
is_root
is an alias for trace.parent_id does not exist
, and when used with a WHERE clause, both filter to show only root spans.
If trace.parent_id does not exist
is used, Honeycomb automatically updates it to is_root
in Query Builder.
This query identifies the slowest trace in your application, in terms of duration (duration_ms
), and provides information about the specific events and spans that make up that trace.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
MAX(duration_ms) | is_root | name |
Use to:
This query calculates the P90
duration of your database calls, which is the duration at which 90% of your database calls complete.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
P90(duration_ms) | db.statement exists | db.statement |
Use to:
This query calculates the total bytes sent on requests, which is the total amount of data that is transmitted by your service in response to requests.
HEATMAP
creates a histogram data visualization.
Use BubbleUp further investigate and compare values.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
SUM(http.request_content_length) HEATMAP(http.request_content_length) |
http.request_content_length exists | name |
Use to:
This query provides insight into the performance of your application. If a significant amount of time is spent on database calls, opportunity to improve speed and performance in the way that your application interacts with the database.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
SUM(duration_ms) | db.statement exists trace.trace_id = abc123 |
db.statement |
This query calculates the rate of change in the average amount of time that it takes for your service to complete a request.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
RATE_AVG(duration_ms) | is_root | name |
Use to:
This query provides insight into potential problems in your system. For example, when running a web service that processes online transactions and the most frequent exception being thrown is “TimeoutException”, then your service may have issues connecting to the database to retrieve information about the transactions.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
COUNT | exception.message exists | exception.message |
Some OpenTelemetry insrumentation or SDKs will record exception messages on Span Events rather than on the Span itself. This query identifies which Span Events events ccontain exceptions, and then groups by the name of the Span that corresponds to that Span Event, the name of the service, and then the name of the exception.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
COUNT | parent_name exists exception.message exists |
parent_name service.name exception.message |
This query helps to investigate the reasons for errors and latencies. For example, if you know that a errored trace called “XYZ” experiences high latencies, you can take further steps like debugging the code for that trace, adding more resources to handle the workload, or implementing error handling and retry mechanisms.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
COUNT HEATMAP(duration_ms) |
error = true is_root |
name |
This query identifies which tenants, or specific groups of users or data within a software system, experience endpoint errors. With this knowledge, you can provide specialized support and troubleshooting to help resolve the issue.
For example, when running a storage service with multiple tenants, you notice that a particular tenant experiences a high number of errors when accessing their data on your endpoint. This may indicate that a problem exists with their configuration or usage of your service.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
COUNT | error = true is_root app.tenant exists |
app.tenant name |
This query calculates the total number of requests received by your application, and provides a breakdown of those requests by different dimensions, such as the type of request, the endpoint, or the tenant.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
COUNT | is_root | name |
Use to:
This query calculates the number of concurrent calls for the individual, specific span named my-span
, which is the number of calls to that span that are executing simultaneously.
VISUALIZE | WHERE |
---|---|
CONCURRENCY | name = my-span |
Use to:
This query displays the level of demand on your system and the resources it uses. If the number of distinct users increases over time, it may indicate that your system is approaching its capacity and that action may be needed to improve its performance.
VISUALIZE | WHERE |
---|---|
COUNT_DISTINCT(app.user_id) | app.user_id exists |
This query calculates the number of executed, independent traces on each server.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
COUNT | is_root | host.name |
Use to:
The query identifies tenants, or specific groups of users or data within a software system, the endpoints they use, and their maximum experienced latency.
For example, if you know that a certain tenant hits endpoint /api/users
the most and experiences high latencies on that endpoint, you can investigate the reasons for those latencies and take steps to improve the performance of that endpoint for that tenant.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
COUNT MAX(duration_ms) |
is_root app.tenant exists |
app.tenant name |
This query presents the frequency and density of different status codes that are returned by your application during a specified time period.
HEATMAP
creates a histogram data visualization.
Use BubbleUp further investigate and compare values.
VISUALIZE | WHERE | GROUP BY |
---|---|---|
HEATMAP(http.status_code) | http.status_code exists | name |
Use to: