Add OpenTelemetry metrics for package resources size#1018
Conversation
✅ Deploy Preview for kpt-porch ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR introduces a new internal/telemetry package (replacing internal/otel) that provides a unified OpenTelemetry setup with proper lifecycle management, adds Prometheus-exporter support, and instruments package revision resource size as a new porch_package_size_bytes metric. Deployment manifests are extended with metrics ports/services and a new Prometheus/Grafana monitoring stack is added.
Changes:
- New
internal/telemetrypackage withSetupOpenTelemetryreturning lifecycle-managedOTelResourcesand recording package size histograms/gauges. - Wiring of the new telemetry setup and deferred shutdown across
cmd/porch,controllers,func/server, andfunc/wrapper-server, along with metric recording calls in dbcache. - Deployment additions: metrics ports/services on porch components, Prometheus/Grafana kpt package, and deploy/cleanup script; new e2e test for the package size metric.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| internal/telemetry/otel.go | New unified OTel setup with explicit shutdown lifecycle and optional Prometheus HTTP server. |
| internal/telemetry/metrics.go | New porch_package_size_bytes histogram + gauge instruments and recorder. |
| internal/telemetry/metrics_test.go | Tests for RecordPackageSizeUpdate including nil-instrument guards. |
| internal/otel/otel.go | Old package removed (replaced by internal/telemetry). |
| internal/otel/otel_test.go | Tests moved to telemetry package; new Prometheus server tests added. |
| go.mod | Promote otel/exporters/prometheus from indirect to direct dependency. |
| cmd/porch/main.go | Use new telemetry package with deferred shutdown. |
| controllers/main.go | Move OTel init out of newManager; add deferred shutdown. |
| func/server/server.go | Switch to new telemetry package; add deferred shutdown. |
| func/wrapper-server/main.go | Switch to new telemetry package; add deferred shutdown. |
| pkg/cache/dbcache/dbpackage.go | Record package size on delete. |
| pkg/cache/dbcache/dbrepository.go | Record package size on close-draft and delete. |
| pkg/cache/dbcache/dbreposync.go | Record package size on external PR cache/delete. |
| deployments/porch/2-function-runner.yaml | Add metrics port to function-runner service. |
| deployments/porch/3-porch-server.yaml | Add 9464 metrics port and service entry. |
| deployments/porch/9-controllers.yaml | Add Service exposing controller metrics port. |
| deployments/porch/22-function-templates.yaml | Add metrics env/port for wrapper-server templates. |
| deployments/metrics/Kptfile | New kpt package for monitoring deployment. |
| deployments/metrics/prometheus-deployment.yaml | New Prometheus deployment, RBAC and Service. |
| deployments/metrics/grafana-deployment.yaml | New Grafana deployment, datasources and Service. |
| deployments/metrics-resources/prometheus-config.yaml | Prometheus scrape configuration for porch components. |
| scripts/deploy-monitoring.sh | New script to deploy/cleanup monitoring stack via kpt. |
| docs/.../opentelemetry.md | Documentation for new metrics. |
| test/e2e/api/metrics_test.go | Fix regex globs, switch to suite assertions, add package-size metric test. |
47c4853 to
c50c1ee
Compare
c50c1ee to
908cfeb
Compare
908cfeb to
27fdc45
Compare
27fdc45 to
6ea6b41
Compare
6ea6b41 to
b963d7e
Compare
236d25e to
f837b6d
Compare
Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com>
Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com>
8466559 to
5439633
Compare
Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com>
Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com>
There was a problem hiding this comment.
Do we need this file? Members can retrigger CI on the Github UI.
Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
* Feat: Add OpenTelemetry metrics for package resources size - plus enough Prometheus monitoring stack to make it manually testable - picked from changes in WIP kptdev#561 - new histogram- and gauge-type metrics - available in e.g. Prometheus as: - porch_package_size_bytes_bucket - porch_package_size_bytes_count - porch_package_size_bytes_sum - porch_package_size_bytes_total - recorded in Porch flows that update package revision resources: - create package revision - delete package revision - discover/sync package revisions from a registered repository - delete package revisions on unregistering a repository - direct update of PackageRevisionResources in rpkg push Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Update docs to mention new package resources size metrics Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 2 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 3 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * comment nitpick to retrigger CI Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 4 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Fix failing unit test Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 5 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Nitpick to retrigger CI Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 6 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Introduce retrigger.txt for easier CI retriggering Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address copilot review comments part 7 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 8 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 9 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * retrigger Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 10 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * retrigger Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 11 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address review comment Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 12 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> --------- Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
) (#1052) * Add OpenTelemetry metrics for package resources size (#1018) * Feat: Add OpenTelemetry metrics for package resources size - plus enough Prometheus monitoring stack to make it manually testable - picked from changes in WIP #561 - new histogram- and gauge-type metrics - available in e.g. Prometheus as: - porch_package_size_bytes_bucket - porch_package_size_bytes_count - porch_package_size_bytes_sum - porch_package_size_bytes_total - recorded in Porch flows that update package revision resources: - create package revision - delete package revision - discover/sync package revisions from a registered repository - delete package revisions on unregistering a repository - direct update of PackageRevisionResources in rpkg push Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Update docs to mention new package resources size metrics Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 2 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 3 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * comment nitpick to retrigger CI Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 4 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Fix failing unit test Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 5 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Nitpick to retrigger CI Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 6 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Introduce retrigger.txt for easier CI retriggering Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address copilot review comments part 7 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 8 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 9 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * retrigger Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 10 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * retrigger Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 11 Signed-off-by: ezmcdja <james.j.mcdermott@ericsson.com> * Address review comment Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Address Copilot review comments part 12 Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> --------- Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> * Cherry-pick #1050 to let CR cache tests pass Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com> --------- Signed-off-by: James McDermott <james.j.mcdermott@ericsson.com>
Title
Feat: Add OpenTelemetry metrics for package resources size
Description
rpkg pushRelated Issue(s)
Type of Change
Checklist
Testing Instructions (Optional)
scripts/deploy-monitoring.shgo test ./internal/telemetry/... ./test/e2e/api/to execute unit and e2e testsAdditional Notes (Optional)
internal/otelpackage has been refactored intointernal/telemetryAI Disclosure
If so, please describe how: