Compare commits
base: eho/register-referentie:feat/124-metrics-dashboards
eho/register-referentie:main
eho/register-referentie:docs/177-adr-labs-caddy
eho/register-referentie:ci/verify-stack-main-only
eho/register-referentie:fix/keycloak-proxy-headers
eho/register-referentie:feat/demo-otp-autofill
eho/register-referentie:fix/182-celery-concurrency
eho/register-referentie:feat/public-host-caddy
eho/register-referentie:ci/175-deploy-on-merge
eho/register-referentie:feat/177-public-tls-edge
eho/register-referentie:ci/168-helm-chart-ci-gate
eho/register-referentie:docs/169-mkdocs-nav
eho/register-referentie:feat/25-helm-kubernetes-caddy
eho/register-referentie:fix/161-e2e-bounded-and-diagnosable
eho/register-referentie:feat/162-werkbak-live-refresh
eho/register-referentie:feat/132-medewerker-mfa
eho/register-referentie:fix/156-tempo-ingester-healthcheck
eho/register-referentie:feat/153-projection-sourced-from-objecten
eho/register-referentie:feat/152-objecten-publishes-to-nrc
eho/register-referentie:feat/149-acl-writes-registerrecord
eho/register-referentie:feat/141-registerrecord-objecttype
eho/register-referentie:perf/verify-stack-uwsgi-oz-nrc
eho/register-referentie:fix/144-verify-stack-uwsgi
eho/register-referentie:feat/140-objecten-up
eho/register-referentie:feat/139-objecttypen-up
eho/register-referentie:feat/131-default-fill-crud
eho/register-referentie:chore/136-ci-job-summaries
eho/register-referentie:fix/134-verify-stack-scheduling
eho/register-referentie:feat/130-beheer-catalogi
eho/register-referentie:feat/124-metrics-dashboards
eho/register-referentie:ci/127-parallel-jobs
eho/register-referentie:feat/123-distributed-traces
eho/register-referentie:feat/111-self-service-resume
eho/register-referentie:feat/113-acl-zaaktype-by-identificatie
eho/register-referentie:fix/110-compose-local-flow
eho/register-referentie:fix/115-e2e-single-worker
eho/register-referentie:docs/111-backlog-s26
eho/register-referentie:feat/106-close-zaak-on-timeout
eho/register-referentie:feat/103-diploma-upload-documenten
eho/register-referentie:feat/102-document-wait-timeout
eho/register-referentie:feat/14-dmn-diploma-eligibility
eho/register-referentie:feat/15-beoordeling-escalation
eho/register-referentie:fix/portal-nginx-resolver
eho/register-referentie:fix/local-eventsubscriber-acl
eho/register-referentie:feat/12-withdrawal-portal
eho/register-referentie:fix/91-local-compose-parity
eho/register-referentie:feat/12-withdrawal-bff
eho/register-referentie:feat/12-withdrawal-workflow
eho/register-referentie:feat/12-withdrawal
eho/register-referentie:feat/13-behandel-portal
eho/register-referentie:feat/13-behandel-decide
eho/register-referentie:feat/13-behandel-bff-auth-werkbak
eho/register-referentie:feat/13-workflow-user-tasks
eho/register-referentie:feat/13-behandel-decision-model
eho/register-referentie:chore/release-2026.07.0
eho/register-referentie:feat/78-reference-correlation
eho/register-referentie:feat/75-approval-flow
eho/register-referentie:feat/10-openbaar-portal
eho/register-referentie:chore/73-ci-speedups
eho/register-referentie:feat/68-e2e
eho/register-referentie:feat/67-self-service-form
eho/register-referentie:feat/66-api-client
eho/register-referentie:feat/65-nx-workspace
eho/register-referentie:feat/8-bff
eho/register-referentie:feat/6-domain-service
eho/register-referentie:feat/7-event-subscriber-projection
eho/register-referentie:feat/56-nrc-notification-wiring
eho/register-referentie:test/46-acl-openzaak-integration
eho/register-referentie:feat/47-acl-mutation-baseline
eho/register-referentie:ci/30-gitea-actions-ci
eho/register-referentie:feat/5-acl-open-zaak
eho/register-referentie:feat/4-flowable
eho/register-referentie:feat/3-keycloak
eho/register-referentie:feat/2-opennotificaties
eho/register-referentie:feat/2-catalogus-seed
eho/register-referentie:feat/10-openzaak-compose
eho/register-referentie:feat/32-docs-scaffold
eho/register-referentie:feat/31-contributor-workflow
eho/register-referentie:feat/30-gitea-actions-ci
eho/register-referentie:feat/29-bff-docker-compose
eho/register-referentie:chore/remove-bootstrap-scripts
eho/register-referentie:feat/28-bff-health
eho/register-referentie:docs/split-s00
..
compare: eho/register-referentie:d5dfbdc0b21ec23a59846eaf513809d3a237f3ef
eho/register-referentie:docs/177-adr-labs-caddy
eho/register-referentie:main
eho/register-referentie:ci/verify-stack-main-only
eho/register-referentie:fix/keycloak-proxy-headers
eho/register-referentie:feat/demo-otp-autofill
eho/register-referentie:fix/182-celery-concurrency
eho/register-referentie:feat/public-host-caddy
eho/register-referentie:ci/175-deploy-on-merge
eho/register-referentie:feat/177-public-tls-edge
eho/register-referentie:ci/168-helm-chart-ci-gate
eho/register-referentie:docs/169-mkdocs-nav
eho/register-referentie:feat/25-helm-kubernetes-caddy
eho/register-referentie:fix/161-e2e-bounded-and-diagnosable
eho/register-referentie:feat/162-werkbak-live-refresh
eho/register-referentie:feat/132-medewerker-mfa
eho/register-referentie:fix/156-tempo-ingester-healthcheck
eho/register-referentie:feat/153-projection-sourced-from-objecten
eho/register-referentie:feat/152-objecten-publishes-to-nrc
eho/register-referentie:feat/149-acl-writes-registerrecord
eho/register-referentie:feat/141-registerrecord-objecttype
eho/register-referentie:perf/verify-stack-uwsgi-oz-nrc
eho/register-referentie:fix/144-verify-stack-uwsgi
eho/register-referentie:feat/140-objecten-up
eho/register-referentie:feat/139-objecttypen-up
eho/register-referentie:feat/131-default-fill-crud
eho/register-referentie:chore/136-ci-job-summaries
eho/register-referentie:fix/134-verify-stack-scheduling
eho/register-referentie:feat/130-beheer-catalogi
eho/register-referentie:feat/124-metrics-dashboards
eho/register-referentie:ci/127-parallel-jobs
eho/register-referentie:feat/123-distributed-traces
eho/register-referentie:feat/111-self-service-resume
eho/register-referentie:feat/113-acl-zaaktype-by-identificatie
eho/register-referentie:fix/110-compose-local-flow
eho/register-referentie:fix/115-e2e-single-worker
eho/register-referentie:docs/111-backlog-s26
eho/register-referentie:feat/106-close-zaak-on-timeout
eho/register-referentie:feat/103-diploma-upload-documenten
eho/register-referentie:feat/102-document-wait-timeout
eho/register-referentie:feat/14-dmn-diploma-eligibility
eho/register-referentie:feat/15-beoordeling-escalation
eho/register-referentie:fix/portal-nginx-resolver
eho/register-referentie:fix/local-eventsubscriber-acl
eho/register-referentie:feat/12-withdrawal-portal
eho/register-referentie:fix/91-local-compose-parity
eho/register-referentie:feat/12-withdrawal-bff
eho/register-referentie:feat/12-withdrawal-workflow
eho/register-referentie:feat/12-withdrawal
eho/register-referentie:feat/13-behandel-portal
eho/register-referentie:feat/13-behandel-decide
eho/register-referentie:feat/13-behandel-bff-auth-werkbak
eho/register-referentie:feat/13-workflow-user-tasks
eho/register-referentie:feat/13-behandel-decision-model
eho/register-referentie:chore/release-2026.07.0
eho/register-referentie:feat/78-reference-correlation
eho/register-referentie:feat/75-approval-flow
eho/register-referentie:feat/10-openbaar-portal
eho/register-referentie:chore/73-ci-speedups
eho/register-referentie:feat/68-e2e
eho/register-referentie:feat/67-self-service-form
eho/register-referentie:feat/66-api-client
eho/register-referentie:feat/65-nx-workspace
eho/register-referentie:feat/8-bff
eho/register-referentie:feat/6-domain-service
eho/register-referentie:feat/7-event-subscriber-projection
eho/register-referentie:feat/56-nrc-notification-wiring
eho/register-referentie:test/46-acl-openzaak-integration
eho/register-referentie:feat/47-acl-mutation-baseline
eho/register-referentie:ci/30-gitea-actions-ci
eho/register-referentie:feat/5-acl-open-zaak
eho/register-referentie:feat/4-flowable
eho/register-referentie:feat/3-keycloak
eho/register-referentie:feat/2-opennotificaties
eho/register-referentie:feat/2-catalogus-seed
eho/register-referentie:feat/10-openzaak-compose
eho/register-referentie:feat/32-docs-scaffold
eho/register-referentie:feat/31-contributor-workflow
eho/register-referentie:feat/30-gitea-actions-ci
eho/register-referentie:feat/29-bff-docker-compose
eho/register-referentie:chore/remove-bootstrap-scripts
eho/register-referentie:feat/28-bff-health
eho/register-referentie:docs/split-s00
1
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
d5dfbdc0b2 |
feat(obs): Prometheus metrics on /metrics + golden-signal Grafana dashboard (closes #124) (#129)
## What & why S-16c, the last of the S-16 (#17) split, on top of the backplane (#122) and distributed tracing (#123). The five .NET services now expose OpenTelemetry **metrics** in Prometheus format at `/metrics`; Prometheus scrapes each (one job per service); and Grafana ships a pre-built **Request path — golden signals** dashboard (traffic / errors / latency / saturation), split by service. Closes #124 ### How - Each service adds `.WithMetrics(AddAspNetCoreInstrumentation + AddHttpClientInstrumentation + AddMeter("System.Runtime") + AddPrometheusExporter)` and maps `/metrics`. Same shape as the S-16b tracing wiring already in these `Program.cs` files. - `infra/observability/prometheus/prometheus.yml`: one scrape job per service (`acl`, `domain`, `bff`, `event-subscriber`, `projection-api`), reached by compose service name. - `infra/observability/grafana/provisioning/dashboards/`: dashboard provider + `golden-signals.json` (baked into the Grafana image by the existing `COPY provisioning/`). - `verify-metrics` (new CI verify-stack step + Makefile target): generates BFF traffic and asserts Prometheus scraped the golden-signal metric from every service. Mirrors `verify-tracing`. ### Dependency (CLAUDE.md §13/§14) Adds `OpenTelemetry.Exporter.Prometheus.AspNetCore` `1.17.0-beta.1` (matched to the `1.17.0` core already in use). It gives the OTel-native `/metrics` pull endpoint; replacing it would mean hand-rolling Prometheus exposition over a `MeterListener`; the risk is that it is a **prerelease** package (the whole OTel .NET Prometheus line is `-beta`) — pinned, wired only in `Program.cs`, and gated by `verify-metrics`. Recorded in **ADR-0024**. ## Definition of Done - [x] Linked Gitea issue (#124). - [x] Failing test committed before the implementation (`test(bff): /metrics exposes http-server request duration`). - [x] Implementation makes the test pass. - [ ] CI green — pending Gitea Actions run. - [x] `docker compose up` reaches green health within 3 min (backplane images unchanged in shape; not on the health gate, ADR-0023). - [x] Docs updated — demo-script S-16c entry. - [x] ADR added — ADR-0024. - [x] Demo note in `docs/demo-script.md`. ## Notes for reviewers - `/health` polls are counted as traffic (metrics aren't path-filtered, unlike traces). Fine for a demo dashboard and honest — real load stacks on top. - `projection-api` has no Stryker config (unchanged); the four mutated services carry the metrics wiring in `Program.cs`, same as the merged S-16b tracing code. - Metric names verified against a live service: `http_server_request_duration_seconds{,_bucket,_count}`, label `http_response_status_code`, `dotnet_process_cpu_time_seconds_total`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Reviewed-on: #129 |