-
Notifications
You must be signed in to change notification settings - Fork 830
support environment variables in properties #1828
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Adds an environment-variable configuration layer and standardizes property naming to snake_case while preserving backward compatibility via key normalization.
Changes:
- Introduces
PropertySourceto unify external, environment, and “regular” (system/file/classpath) properties with defined precedence. - Adds environment-variable loading (
IO_PROMETHEUS_*) and camelCase→snake_case normalization for file/system/external keys. - Updates config docs, test resources, and tests to use the new snake_case property names and new loader APIs.
Reviewed changes
Copilot reviewed 23 out of 23 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PropertySource.java | New abstraction for multi-source property lookup with precedence and key transformations. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java | Loads properties from file/classpath/system, adds env var layer, normalizes keys, validates leftovers. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/Util.java | Refactors property lookup helpers to read from PropertySource and improve key formatting in errors. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/MetricsProperties.java | Migrates internal property-name constants to snake_case and updates loading/validation paths. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterProperties.java | Switches exporter property keys to snake_case and loads via PropertySource. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterHttpServerProperties.java | Updates prefix/key naming to snake_case and loads via PropertySource. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterFilterProperties.java | Renames filter keys to snake_case and updates loader wiring. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterOpenTelemetryProperties.java | Renames OTel keys to snake_case and updates loader wiring. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExporterPushgatewayProperties.java | Renames pushgateway keys to snake_case and updates loader wiring. |
| prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/ExemplarsProperties.java | Renames exemplars keys to snake_case and loads via PropertySource. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/UtilTest.java | Updates tests to use PropertySource-based APIs. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesTest.java | Updates loading tests to use PropertySource and asserts properties are consumed. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/PrometheusPropertiesLoaderTest.java | Updates loader tests to snake_case keys. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/MetricsPropertiesTest.java | Updates expected exception messages and property keys to snake_case. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPropertiesTest.java | Updates keys and loader helper to use PropertySource. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterHttpServerPropertiesTest.java | Updates keys and loader helper to use PropertySource. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterFilterPropertiesTest.java | Updates keys and loader helper to use PropertySource. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterOpenTelemetryPropertiesTest.java | Updates keys and loader helper to use PropertySource. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExporterPushgatewayPropertiesTest.java | Updates loader helper to use PropertySource. |
| prometheus-metrics-config/src/test/java/io/prometheus/metrics/config/ExemplarsPropertiesTest.java | Updates keys and loader helper to use PropertySource. |
| prometheus-metrics-config/src/test/resources/prometheus.properties | Updates test properties file to snake_case keys. |
| prometheus-metrics-config/src/test/resources/emptyUpperBounds.properties | Updates test properties key to snake_case. |
| docs/content/config/config.md | Documents env var support, precedence, and snake_case naming; updates examples/tables. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
prometheus-metrics-config/src/main/java/io/prometheus/metrics/config/PropertySource.java
Outdated
Show resolved
Hide resolved
...us-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java
Show resolved
Hide resolved
...us-metrics-config/src/main/java/io/prometheus/metrics/config/PrometheusPropertiesLoader.java
Show resolved
Hide resolved
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
Signed-off-by: Gregor Zeitlinger <[email protected]>
1d05224 to
8ee2b21
Compare
Signed-off-by: Gregor Zeitlinger <[email protected]>
Summary
No Breaking Changes. This is fully backward compatible:
Migration Guide
No migration required. However, to adopt the new features:
To use environment variables: Convert property names to uppercase with underscores
io.prometheus.exporter.httpServer.port→IO_PROMETHEUS_EXPORTER_HTTP_SERVER_PORTTo use snake_case (recommended): Update properties files
io.prometheus.metrics.exemplarsEnabled→io.prometheus.metrics.exemplars_enabledNotes