How to create visualizations for Histogram metrics

Versions (relevant - OpenSearch/Dashboard/Server OS/Browser): latest

Describe the issue: I am able to create visualizations for metrics of type SUM and GAUGE, but i have no idea on how to create visualizations for metrics of type HISTOGRAM.

Configuration:


hi @brice ,

To create a visualization that use Histogram data, you can use a variety of chart types. For example, you can use a Vertical Bar chart.

In this chart, you would:

  1. Set the Y-axis to your metric, such as a Count aggregation.

  2. Set the X-axis to a Histogram aggregation.

  3. Then, select the histogram data field you want to visualize.

    Leeroy.

thanks for your answe @Leeroy .
The data i have is much more complex maybe you can guide me on how to plot a visualization based on the infos below:

The screenshot shows the data

Here is how to interpret the data:

Histogram buckets (explicitBounds)

These are the defined bucket edges:

0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000

Each bucket counts how many observations fell into its range (bucketCountsList).

data:

  • 25–50 bytes → 17 responses

  • 250–500 bytes → 1 response

  • 750–1000 bytes → 1 response

  • Everything else → 0

So out of 19 total responses ("count": 19):

  • 89% (17/19) of responses were very small (25–50 bytes)

  • 5% (1/19) were medium (250–500 bytes)

  • 5% (1/19) were slightly larger (750–1000 bytes)

  • None exceeded 1000 bytes

Please.

Let me know if you need more explanation

Here is the JSON data for the metrics

{ “_index”: “metrics-otel-v1-000001”, “_id”: “xHCX0pgBYLC9DQoJRYDd”, “_version”: 1, “_score”: null, “_source”: { “kind”: “HISTOGRAM”, “buckets”: [ { “min”: -3.4028234663852886e+38, “max”: 0, “count”: 0 }, { “min”: 0, “max”: 5, “count”: 0 }, { “min”: 5, “max”: 10, “count”: 0 }, { “min”: 10, “max”: 25, “count”: 0 }, { “min”: 25, “max”: 50, “count”: 17 }, { “min”: 50, “max”: 75, “count”: 0 }, { “min”: 75, “max”: 100, “count”: 0 }, { “min”: 100, “max”: 250, “count”: 0 }, { “min”: 250, “max”: 500, “count”: 1 }, { “min”: 500, “max”: 750, “count”: 0 }, { “min”: 750, “max”: 1000, “count”: 1 }, { “min”: 1000, “max”: 2500, “count”: 0 }, { “min”: 2500, “max”: 5000, “count”: 0 }, { “min”: 5000, “max”: 7500, “count”: 0 }, { “min”: 7500, “max”: 10000, “count”: 0 }, { “min”: 10000, “max”: 3.4028234663852886e+38, “count”: 0 } ], “count”: 19, “bucketCountsList”: [ 0, 0, 0, 0, 17, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 ], “flags”: 0, “description”: “Response size in bytes”, “sum”: 2110, “serviceName”: “unknown_service”, “schemaUrl”: “”, “unit”: “By”, “aggregationTemporality”: “AGGREGATION_TEMPORALITY_CUMULATIVE”, “exemplars”: , “bucketCounts”: 16, “name”: “http.server.response_size”, “startTime”: “2025-08-20T15:15:25.939791180Z”, “explicitBoundsCount”: 15, “time”: “2025-08-22T16:22:29.862283036Z”, “explicitBounds”: [ 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000 ], “instrumentationScope.name”: “ecommerce_app_meter”, “resource.attributes.telemetry@sdk@name”: “opentelemetry”, “resource.attributes.telemetry@sdk@language”: “python”, “resource.attributes.telemetry@sdk@version”: “1.35.0”, “resource.attributes.service@name”: “unknown_service” }, “fields”: { “startTime”: [ “2025-08-20T15:15:25.93979118Z” ], “time”: [ “2025-08-22T16:22:29.862283036Z” ] }, “sort”: [ 1755879749862283036 ] }

here is the expected visualization

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.