Skip to content

Commit ea55de9

Browse files
committed
Validate September 21 blog posts
1 parent d34abd3 commit ea55de9

80 files changed

Lines changed: 522 additions & 55 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Blogs.json‎

Lines changed: 34 additions & 34 deletions
Large diffs are not rendered by default.
61.8 KB
Loading

‎posts/2026-09-21-bridge-otlp-metrics-openmetrics-collector-endpoint/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# How to Bridge OTLP Metrics to an OpenMetrics Scrape Endpoint with the OpenTelemetry Collector
1+
# How to Bridge OTLP to OpenMetrics with the OpenTelemetry Collector
22

33
Author: [nawazdhandala](https://www.github.com/nawazdhandala)
44

58.5 KB
Loading
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Validation Summary: How to Bridge OTLP to OpenMetrics with the OpenTelemetry Collector
2+
3+
## Status
4+
validated
5+
6+
## Post Type
7+
Tutorial / technical implementation guide.
8+
9+
## Technologies Covered
10+
- OpenTelemetry Collector, OTLP HTTP receiver, batch processor, and Prometheus exporter
11+
- OTLP JSON and cumulative monotonic metrics
12+
- Prometheus scraping, label identity, and metric expiration
13+
- OpenMetrics 1.0 text exposition and exemplars
14+
- Python standard library: json, time, and urllib.request
15+
- curl, YAML, and container networking
16+
17+
## Sources Consulted
18+
- [Collector Prometheus exporter documentation](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/prometheusexporter/README.md)
19+
- [Exporter accumulator implementation](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/prometheusexporter/accumulator.go)
20+
- [Exporter HTTP handler implementation](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/prometheusexporter/prometheus.go)
21+
- [Collector OTLP receiver documentation](https://github.com/open-telemetry/opentelemetry-collector/blob/main/receiver/otlpreceiver/README.md)
22+
- [Collector batch processor documentation](https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/batchprocessor/README.md)
23+
- [Collector internal telemetry](https://opentelemetry.io/docs/collector/internal-telemetry/)
24+
- [OTLP specification and JSON encoding](https://opentelemetry.io/docs/specs/otlp/#json-protobuf-encoding)
25+
- [OTLP metrics protobuf definitions](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.proto)
26+
- [OpenTelemetry Prometheus and OpenMetrics compatibility](https://opentelemetry.io/docs/specs/otel/compatibility/prometheus_and_openmetrics/)
27+
- [Prometheus configuration reference](https://prometheus.io/docs/prometheus/latest/configuration/configuration/)
28+
- [Prometheus content negotiation](https://prometheus.io/docs/instrumenting/content_negotiation/)
29+
- [OpenMetrics 1.0 specification](https://prometheus.io/docs/specs/om/open_metrics_spec/)
30+
- [Python urllib.request documentation](https://docs.python.org/3/library/urllib.request.html)
31+
- [Python time documentation](https://docs.python.org/3/library/time.html#time.time_ns)
32+
- [Python JSON documentation](https://docs.python.org/3/library/json.html)
33+
- [curl manual](https://curl.se/docs/manpage.html), plus local curl 8.7.1 help output
34+
- [Docker networking documentation](https://docs.docker.com/engine/network/)
35+
36+
## Issues Found
37+
No technical issues found.
38+
39+
The README was left unchanged during this review.
40+
41+
## Review Notes
42+
- Confirmed the receiver, processor, exporter, and pipeline configuration against official component documentation. The exporter supports the configured translation strategy, timestamp option, expiration duration, and OpenMetrics setting.
43+
- Confirmed that OTLP HTTP metrics use POST to /v1/metrics with application/json, lowerCamelCase fields, numeric enum values, and decimal strings for 64-bit integers. Aggregation temporality 2 denotes cumulative data.
44+
- Parsed the Python example with Python's AST parser and executed its payload/request construction without sending an HTTP request. Verified JSON serialization, POST selection, Content-Type, and cumulative temporality. Both YAML snippets parsed successfully using PyYAML.
45+
- Checked every curl flag against the official manual and local help. The --fail-with-body option requires curl 7.76.0 or later; time.time_ns requires Python 3.7 or later.
46+
- Confirmed OpenMetrics content negotiation, the final # EOF marker, and the counter sample suffix _total. In OpenMetrics, the counter family metadata uses the base name jobs_processed, while the counter sample is jobs_processed_total.
47+
- Confirmed service identity mapping and Prometheus label-conflict behavior. With the default honor_labels setting, source job and instance labels are renamed to exported_job and exported_instance when they conflict with target labels.
48+
- Confirmed expiration is based on elapsed time since an accepted update, independently of Prometheus storage retention. Internal Collector telemetry is separate from the configured application exporter endpoint.
49+
- The cumulative fixture avoids exporter-version differences in delta handling. The current accumulator implementation can combine contiguous monotonic delta sums; changing text exposition alone does not perform that conversion. The post correctly advises checking the chosen release.
50+
- OpenMetrics 1.0 text does not preserve native histogram bucket structure. The exporter documentation calls for protobuf scraping for native histograms and documents the lack of native-histogram exemplar support.
51+
- Loopback bindings, resource-label cardinality guidance, and the warning about scraping randomly selected stateful Collector replicas are technically sound.
52+
- The technical reference links resolve to the intended official resources. Documentation on main/latest can change; the post appropriately recommends checking a pinned Collector release. No specific Collector or Prometheus release is claimed as tested.
53+
- This was a documentation, source, and local syntax/request-construction review. No live Collector/Prometheus ingestion, scrape, query, or five-minute expiration test was performed.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"status": "validated",
3+
"validatedAt": "2026-09-21"
4+
}
68.2 KB
Loading
71.4 KB
Loading
67 KB
Loading
64 KB
Loading

0 commit comments

Comments
 (0)