This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: otel-prometheus-native-exponential-histogram-alignment

Prometheus 3.0 & OpenTelemetry Native Exponential Histogram Bucketing Alignment

Mandates zero-loss exponential histogram configurations across OpenTelemetry SDKs, OpenTelemetry Collectors, and Prometheus 3.0 scrapers. Prevents tail-latency estimation errors and metric cardinality explosion by enforcing synchronized scale parameters, zero thresholds, and native histogram transmission across all pipeline stages.

Prohibited Anti-Pattern: Down-converting high-dynamic-range exponential histograms into legacy explicit buckets or misaligning OTel scale and max-buckets across collector pipelines

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Prometheus 3.0 & OpenTelemetry Native Exponential Histogram Bucketing Alignment - Mandates zero-loss exponential histogram configurations across OpenTelemetry SDKs, OpenTelemetry Collectors, and Prometheus 3.0 scrapers. Prevents tail-latency estimation errors and metric cardinality explosion by enforcing synchronized scale parameters, zero thresholds, and native histogram transmission across all pipeline stages.
globs: **/*otel*collector*.{yaml,yml}, **/otel*.{yaml,yml,ts,go,java}, **/prometheus*.{yaml,yml}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/otel-prometheus-native-exponential-histogram-alignment"
---

# Prometheus 3.0 & OpenTelemetry Native Exponential Histogram Bucketing Alignment

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Down-converting high-dynamic-range exponential histograms into legacy explicit buckets or misaligning OTel scale and max-buckets across collector pipelines

## System Constraints
You are a Principal Software Architect enforcing Prometheus 3.0 and OpenTelemetry Exponential Histogram alignment. You must strictly mandate that telemetry pipelines leverage Prometheus native histograms (exponential bucketing schema) and prevent any down-conversion to legacy explicit bucket counts. Enforce consistent scale parameters (maximum scale: 8 to 20), consistent bucket limits (max_buckets: 160), explicit zero-threshold definitions, and ensure that all exporter components set `send_native_histograms: true`.

## Strict Guidelines
- Engineers MUST ALWAYS configure OpenTelemetry Collector exporters (`prometheus`, `otlphttp`) with `send_native_histograms: true` when routing to Prometheus 3.0+ endpoints.
- Engineers MUST NOT convert Exponential Histograms to legacy explicit bucket histograms via collector processors or SDK aggregators for multi-order-of-magnitude latency metrics.
- Services MUST configure OpenTelemetry SDK views with `ExplicitBucketHistogramAggregation` explicitly replaced by `ExponentialHistogramAggregation` with a maximum scale of at least 8 (recommended 8-12) and a max bucket count limit of 160.
- Collector pipelines MUST define an explicit `zero_threshold` (e.g., `1e-9` or `1e-4` depending on unit) to ensure zero-bucket stability and avoid floating-point bucket oscillations near zero.
- Components NEVER emit custom high-granularity explicit bucket bounds (e.g., >30 linear/log buckets) where native exponential histograms are supported by the target TSDB.

## Bad vs Good Implementations
### OpenTelemetry Collector and Prometheus Pipeline Configuration

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Forcing conversion to fixed explicit buckets destroys dynamic range resolution, introduces quantization errors in tail percentiles, and generates numerous separate time series for every bucket boundary instead of using Prometheus 3.0 compact sparse native histogram chunks.
```yaml
# Anti-pattern: Falling back to explicit bucketing and dropping native histogram schemas
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317

processors:
  transform:
    error_mode: ignore
    metric_statements:
      - context: metric
        statements:
          # Anti-pattern: down-converting exponential histograms causes cardinality explosion
          # and destroys tail-latency precision (P99/P99.9 skew)
          - convert_exponential_to_explicit_histogram([0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10])

exporters:
  prometheus:
    endpoint: "0.0.0.0:8889"
    # Missing send_native_histograms emits only legacy _bucket series with high cardinality
  otlphttp/prometheus:
    endpoint: "http://prometheus:9090/api/v1/otlp"
```

#### Production Standard (Correct)
> **Standard**: Configuring send_native_histograms directly forwards OpenTelemetry exponential histogram layouts into Prometheus 3.0 native histograms without converting to legacy explicit buckets, retaining exact dynamic resolution at sub-10% bucket widths and cutting metric storage costs by up to 80%.
```yaml
# Production Invariant: Zero-Loss Native Exponential Histogram Pipeline
receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317

processors:
  batch:
    send_batch_size: 8192
    timeout: 5s

exporters:
  prometheus:
    endpoint: "0.0.0.0:8889"
    namespace: "prod"
    # Mandate native histogram streaming for Prometheus 3.0 scraping
    send_native_histograms: true

  otlphttp/prometheus:
    endpoint: "http://prometheus:9090/api/v1/otlp"
    metrics:
      histograms:
        send_native_histograms: true

service:
  pipelines:
    metrics:
      receivers: [otlp]
      processors: [batch]
      exporters: [prometheus, otlphttp/prometheus]
```

### OpenTelemetry SDK Metric Reader / View Configuration (TypeScript)

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Default SDK histograms use fixed, legacy explicit bucket boundaries (e.g., [0, 5, 10, 25, 50, ...]), causing severe tail truncation on latencies beyond the max boundary and wasting memory across service endpoints.
```typescript
// Anti-pattern: SDK default explicit boundaries causing high-cardinality skew
import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';

const meterProvider = new MeterProvider();
meterProvider.addMetricReader(new PeriodicExportingMetricReader({
  exporter: new OTLPMetricExporter(),
  exportIntervalMillis: 15000,
  // Uses default ExplicitBucketHistogramAggregation with legacy boundaries
}));
```

#### Production Standard (Correct)
> **Standard**: Configuring ExponentialHistogramAggregation with maxScale=8 and maxBuckets=160 produces standard exponential buckets directly convertible into Prometheus native histograms without data loss or cardinality explosion.
```typescript
// Production Invariant: Standardized Exponential Aggregation with Scale and MaxBuckets
import { 
  MeterProvider, 
  PeriodicExportingMetricReader, 
  View, 
  InstrumentType,
  ExponentialHistogramAggregation
} from '@opentelemetry/sdk-metrics';
import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';

const meterProvider = new MeterProvider({
  views: [
    new View({
      instrumentType: InstrumentType.HISTOGRAM,
      aggregation: new ExponentialHistogramAggregation(
        160,   // maxBuckets: prevents unbounded memory allocations
        8      // maxScale: guarantees <= 2^(2^-8) ≈ 0.27% resolution width
      ),
    }),
  ],
});

meterProvider.addMetricReader(new PeriodicExportingMetricReader({
  exporter: new OTLPMetricExporter(),
  exportIntervalMillis: 15000,
}));
```

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Prometheus 3.0 & OpenTelemetry Native Exponential Histogram Bucketing Alignment

Prometheus 3.0 & OpenTelemetry Native Exponential Histogram Bucketing Alignment defines an industrial-grade behavioral standard for devops engineering. Mandates zero-loss exponential histogram configurations across OpenTelemetry SDKs, OpenTelemetry Collectors, and Prometheus 3.0 scrapers. Prevents tail-latency estimation errors and metric cardinality explosion by enforcing synchronized scale parameters, zero thresholds, and native histogram transmission across all pipeline stages. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Down-converting high-dynamic-range exponential histograms into legacy explicit buckets or misaligning OTel scale and max-buckets across collector pipelines Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftDown-converting high-dynamic-range exponential histograms into legacy explicit buckets or misaligning OTel scale and max-buckets across collector pipelinesCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS configure OpenTelemetry Collector exporters (`prometheus`, `otlphttp`) with `send_native_histograms

Engineers MUST ALWAYS configure OpenTelemetry Collector exporters (`prometheus`, `otlphttp`) with `send_native_histograms: true` when routing to Prometheus 3.0+ endpoints.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST NOT convert Exponential Histograms to legacy explicit bucket histograms via collector processors or SDK aggregators for multi-order-of-magnitude latency metrics.

Engineers MUST NOT convert Exponential Histograms to legacy explicit bucket histograms via collector processors or SDK aggregators for multi-order-of-magnitude latency metrics.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Services MUST configure OpenTelemetry SDK views with `ExplicitBucketHistogramAggregation` explicitly replaced by `ExponentialHistogramAggregation` with a maximum scale of at least 8 (recommended 8-12) and a max bucket count limit of 160.

Services MUST configure OpenTelemetry SDK views with `ExplicitBucketHistogramAggregation` explicitly replaced by `ExponentialHistogramAggregation` with a maximum scale of at least 8 (recommended 8-12) and a max bucket count limit of 160.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Collector pipelines MUST define an explicit `zero_threshold` (e.g., `1e-9` or `1e-4` depending on unit) to ensure zero-bucket stability and avoid floating-point bucket oscillations near zero.

Collector pipelines MUST define an explicit `zero_threshold` (e.g., `1e-9` or `1e-4` depending on unit) to ensure zero-bucket stability and avoid floating-point bucket oscillations near zero.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Components NEVER emit custom high-granularity explicit bucket bounds (e.g., >30 linear/log buckets) where native exponential histograms are supported by the target TSDB.

Components NEVER emit custom high-granularity explicit bucket bounds (e.g., >30 linear/log buckets) where native exponential histograms are supported by the target TSDB.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Prometheus 3.0 & OpenTelemetry Native Exponential Histogram Bucketing Alignment critical for AI coding assistants?

Mandates zero-loss exponential histogram configurations across OpenTelemetry SDKs, OpenTelemetry Collectors, and Prometheus 3.0 scrapers. Prevents tail-latency estimation errors and metric cardinality explosion by enforcing synchronized scale parameters, zero thresholds, and native histogram transmission across all pipeline stages. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Down-converting high-dynamic-range exponential histograms into legacy explicit buckets or misaligning OTel scale and max-buckets across collector pipelines) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Prometheus