Skip to content

feat(observability): bridge OTLP metrics + logs to AMP/Loki and scrape hubble L7#65

Merged
stxkxs merged 1 commit into
mainfrom
alloy-otlp-bridge
Jun 24, 2026
Merged

feat(observability): bridge OTLP metrics + logs to AMP/Loki and scrape hubble L7#65
stxkxs merged 1 commit into
mainfrom
alloy-otlp-bridge

Conversation

@stxkxs

@stxkxs stxkxs commented Jun 24, 2026

Copy link
Copy Markdown
Member

Completes the grafana-agent (Alloy) pipeline so two previously-dropped signals reach the backends.

OTLP metrics + logs → AMP / Loki (#62)

The otelcol.receiver.otlp listened on :4317/:4318 but only routed traces to Tempo — every OTLP metric/log a tenant pushed was silently dropped, and no Service exposed the receiver ports. This:

  • wires the receiver's metrics/logs outputs through new otelcol.exporter.prometheus + otelcol.exporter.loki into the existing AMP (SigV4) remote-write + Loki sinks;
  • adds agent.extraPorts so :4317/:4318 are reachable at grafana-agent.monitoring.svc.

This was the shared prerequisite gating the 4 per-tenant retrofits' metrics half.

Hubble L7 → AMP (#63)

hubble_http_* (:9965) is served per cilium-agent pod but exposed only via the headless hubble-metrics Service — unreachable by pod-annotation scrape. Adds an endpoints-discovery scrape so the hubble-overview board renders.

Validation (offline)

  • grafana/alloy fmt parses the config; alloy validate is identical to the deployed config except line-shifts of the pre-existing env() deprecation warnings — no new issues.
  • helm template confirms the Service + container expose 4317/4318.
  • End-to-end (OTLP metrics actually landing in AMP) verifies on a live cluster.

Closes #62. Closes #63.

…e hubble L7

Completes the grafana-agent (Alloy) telemetry pipeline so two previously-dropped
signals actually reach the backends.

OTLP metrics + logs → AMP / Loki (#62). The otelcol.receiver.otlp listened on
:4317/:4318 but only routed traces to Tempo — every OTLP metric and log a tenant
app pushed was silently discarded, and no Service exposed the receiver ports, so
grafana-agent.monitoring.svc:4318 wasn't even reachable. This:
  - wires the receiver's metrics + logs outputs through new otelcol.exporter.prometheus
    and otelcol.exporter.loki components into the same AMP remote-write (SigV4) and
    Loki sinks the scrape + tail pipelines already use;
  - exposes :4317/:4318 on the agent Service via agent.extraPorts, so workloads in
    other namespaces can reach the OTLP endpoint.
This is the shared prerequisite for the per-tenant o11y retrofits — their metrics
half was blocked on it.

Hubble L7 metrics → AMP (#63). The hubble_http_* L7 flow metrics are served per
cilium-agent pod on :9965 but exposed only via the headless hubble-metrics Service;
the annotation-gated pod scrape can't reach them (the agent pod's prometheus.io/port
is already its own :9962). Adds an endpoints-discovery scrape of the hubble-metrics
service, so the hubble-overview dashboard renders.

Validated offline: grafana/alloy fmt parses the config; alloy validate is identical
to the deployed config except line-shifts of the pre-existing env() deprecation
warnings (no new issues); helm template confirms the Service + container expose
4317/4318. End-to-end (metrics landing in AMP) verifies on a live cluster.

Closes #62. Closes #63.
@github-actions

Copy link
Copy Markdown

CI Results

Check Status
YAML Lint
Environment Kustomize Build
dev
staging
production
hub

All validations passed.

@stxkxs stxkxs merged commit c2f8a29 into main Jun 24, 2026
8 checks passed
@stxkxs stxkxs deleted the alloy-otlp-bridge branch June 24, 2026 04:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant