NMS-19541: Minion: Investigate if its possible to move away from Confd#8498
NMS-19541: Minion: Investigate if its possible to move away from Confd#8498mershad-manesh wants to merge 84 commits into
Conversation
Compute HWLwr/HWUpr confidence bounds in HWForecast from the in-sample residuals; cap the horizon expansion at one seasonal period so bounds don't fan open on long forecasts. Surface forecast failures (no fit, all-NaN fit, zero-width bounds) as a yellow warning banner above the graph. Add a static legend below the graph mapping each color to its meaning, and switch the HW Fit line to purple (#9d4edd) so it's distinguishable from real-data lines that are typically blue. Route filter parameters through a buildFilter() helper that always coerces values to strings, fixing a t.split error caused by the trendOrder integer leaking into the REST payload and making the same class of bug impossible going forward.
HWForecastIT (Java): the existing canForecastValues test now asserts that bounds collapse onto the fit on constant input (sigma=0). New tests cover bounds widening with the horizon and plateauing past the cap on Gaussian-noisy input, confidenceLevel=0 suppressing bound emission entirely, and insufficient samples causing the filter to bail without emitting any forecast columns. Jest: buildFilter coerces numeric/boolean values to strings, preserves key order, and produces the right descriptor shape; checkForecastWarning detects each failure mode (missing HWFit, all-NaN fit, zero-width bounds) and returns null on healthy forecasts and on configurations that intentionally omit bounds.
Add operation/deep-dive/performance-data-collection/forecasting.adoc covering how to access the forecast page, the preset templates, the colored overlays drawn, a brief Holt-Winters explanation, the empirical Gaussian-residual approximation used for the confidence bounds (with explicit framing that this differs from the canonical Holt-Winters prediction interval), the warning banner conditions, and the server-side filter pipeline. Register the page in nav.adoc.
Add docs/modules/reference/pages/performance-data-collection/collectors/xml-examples.adoc with end-to-end worked examples for the XmlCollector. The first example covers GitHub repository activity (stars, forks, watchers, open issues and PRs) via the JSON handler. The page is structured so additional examples can be added in the same shape. Cross-link from the existing xml.adoc reference page and add a nav entry.
…ctors/xml-examples.adoc Co-authored-by: Dino <dyancey@opennms.com>
…ctors/xml-examples.adoc Co-authored-by: Dino <dyancey@opennms.com>
…ctors/xml-examples.adoc Co-authored-by: Dino <dyancey@opennms.com>
…ctors/xml-examples.adoc Co-authored-by: Dino <dyancey@opennms.com>
…ctors/xml.adoc Co-authored-by: Dino <dyancey@opennms.com>
Add docs/modules/operation/pages/deep-dive/admin/automatic-cleanup.adoc covering the four mechanisms that prune OpenNMS data over time: Alarmd Drools rules, Vacuumd, the per-event auto-clean flag, and PostgreSQL autovacuum. Documents default behaviors, where each is configured, what does not get cleaned by default, and example Vacuumd extensions for outage and notification cleanup. Cross-link from housekeeping.adoc and add a nav entry under the existing housekeeping page.
…ntation (#8483) * NMS-16237: add support for RFC2348 "TFTP blksize" to the tftp implementation
…e-docs Docs: XmlCollector configuration examples
There was a problem hiding this comment.
Pull request overview
This PR refactors the Minion container configuration approach to move away from confd, shifting configuration to environment-variable interpolation and entrypoint-driven feature boot templating. It updates the smoke-test Minion container wiring accordingly and removes the confd template/rendering assets from the image build.
Changes:
- Replace confd-templated Minion configuration with static
etc/*.cfgfiles that use${env:...}interpolation. - Update
entrypoint.shto generate/selectfeaturesBoot.d/*.bootfiles from templates based on new env toggles (e.g.,MINION_IPC,JAEGER_ENABLED). - Update smoke tests (
MinionContainer) to configure Minion via env vars instead of mounting a generatedminion-config.yaml.
Reviewed changes
Copilot reviewed 84 out of 85 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java | Switch smoke-test Minion configuration to env vars (IPC strategy, broker URL, location/id, optional features). |
| opennms-container/minion/container-fs/etc/org.ops4j.pax.web.cfg | New pax-web config using ${env:JETTY_*} interpolation. |
| opennms-container/minion/container-fs/etc/org.opennms.netmgt.trapd.cfg | New trapd config using ${env:MINION_TRAPD_*} interpolation. |
| opennms-container/minion/container-fs/etc/org.opennms.netmgt.syslog.cfg | New syslog config using ${env:MINION_SYSLOG_*} interpolation. |
| opennms-container/minion/container-fs/etc/org.opennms.minion.controller.cfg | New Minion controller config (location/id/broker-url) via env interpolation. |
| opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50002-nxos.cfg | Add NXOS telemetry listener config with env-configurable port. |
| opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-udp-50001-jti.cfg | Add JTI telemetry listener config with env-configurable port. |
| opennms-container/minion/container-fs/etc/org.opennms.features.telemetry.listeners-single-port-flows.cfg | Add single-port flows listener config with env-configurable port. |
| opennms-container/minion/container-fs/etc/org.opennms.features.minion.dominion.grpc.cfg | Add Dominion gRPC client config using ${env:DOMINION_GRPC_*}. |
| opennms-container/minion/container-fs/etc/org.opennms.core.ipc.twin.kafka.cfg | Add Kafka “twin” IPC config using ${env:KAFKA_TWIN_*}. |
| opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.offheap.cfg | Add empty/offheap sink config placeholder in container etc/. |
| opennms-container/minion/container-fs/etc/org.opennms.core.ipc.sink.kafka.cfg | Add Kafka sink IPC config using ${env:KAFKA_SINK_*}. |
| opennms-container/minion/container-fs/etc/org.opennms.core.ipc.rpc.kafka.cfg | Add Kafka RPC IPC config using ${env:KAFKA_RPC_*}. |
| opennms-container/minion/container-fs/etc/org.opennms.core.ipc.kafka.cfg | Add Kafka IPC config using ${env:KAFKA_IPC_*}. |
| opennms-container/minion/container-fs/etc/org.opennms.core.ipc.grpc.client.cfg | Add gRPC IPC client config using ${env:IPC_GRPC_*}. |
| opennms-container/minion/container-fs/etc/org.apache.karaf.shell.cfg | Add Karaf shell SSH config using ${env:KARAF_SSH_*}. |
| opennms-container/minion/container-fs/etc/org.apache.karaf.management.cfg | Replace confd template with env-interpolated Karaf JMX management config. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-twin.boot | New boot template for Kafka twin feature selection. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-sink.boot | New boot template for Kafka sink feature selection. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-rpc.boot | New boot template for Kafka RPC feature selection. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/kafka-ipc.boot | New boot template for Kafka IPC feature selection. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/jaeger.boot | New boot template for enabling Jaeger tracing feature. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/grpc.boot | New boot template for enabling gRPC IPC client feature. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/dominion-scv.boot | New boot template for enabling Dominion SCV feature. |
| opennms-container/minion/container-fs/etc/featuresBoot.d/templates/disable-jms.boot | New boot template for disabling JMS features when not used. |
| opennms-container/minion/container-fs/etc/custom.system.properties | Add base custom.system.properties using ${env:OPENNMS_INSTANCE_ID} interpolation. |
| opennms-container/minion/container-fs/entrypoint.sh | Remove confd execution; add feature-boot templating, diagnostics, and env-driven IPC config handling. |
| opennms-container/minion/container-fs/confd/templates/prom-jmx-exporter.yaml.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.ops4j.pax.web.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.trapd.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.netmgt.syslog.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.minion.server-certificates.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.minion.process-env.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.minion.controller.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.features.minion.dominion.grpc.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.twin.kafka.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.offheap.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.sink.kafka.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.rpc.kafka.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.kafka.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.opennms.core.ipc.grpc.client.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/org.apache.karaf.shell.cfg.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/kafka-twin.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/kafka-sink.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/kafka-rpc.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/kafka-ipc.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/jaeger.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/instance-id.properties.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/grpc.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/dominion-scv.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/disable-jms.boot.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/custom.system.properties.tmpl | Remove confd template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/templates/confd-telemetry-feature.xml.tmpl | Remove confd telemetry feature template (confd deprecation/removal). |
| opennms-container/minion/container-fs/confd/scripts/remove-if-empty | Remove confd helper script. |
| opennms-container/minion/container-fs/confd/scripts/confd_lib.sh | Remove confd helper library. |
| opennms-container/minion/container-fs/confd/directories | Remove confd-managed directories list. |
| opennms-container/minion/container-fs/confd/confd.toml | Remove confd configuration. |
| opennms-container/minion/container-fs/confd/conf.d/prom-jmx-exporter.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.ops4j.pax.web.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.trapd.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.netmgt.syslog.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.server-certificates.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.process-env.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.minion.controller.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.features.minion.dominion.grpc.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.twin.kafka.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.offheap.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.sink.kafka.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.rpc.kafka.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.kafka.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.opennms.core.ipc.grpc.client.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.shell.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/org.apache.karaf.management.cfg.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/kafka-twin.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/kafka-sink.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/kafka-rpc.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/kafka-ipc.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/jaeger.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/instance-id.properties.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/grpc.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/dominion-scv.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/disable-jms.boot.toml | Remove confd boot template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/custom.system.properties.toml | Remove confd template mapping. |
| opennms-container/minion/container-fs/confd/conf.d/confd-telemetry-feature.xml.toml | Remove confd telemetry feature mapping. |
| opennms-container/minion/Dockerfile | Install gettext (for envsubst), copy new etc/ overlay, and remove confd assets from the image build. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| syslog.listen.interface = ${env:MINION_SYSLOG_LISTEN_INTERFACE:-0.0.0.0} | ||
| syslog.listen.port = ${env:MINION_SYSLOG_LISTEN_PORT:-1514} | ||
| syslog.useAddressFromVarbind = true No newline at end of file |
There was a problem hiding this comment.
syslog.useAddressFromVarbind doesn’t appear to be a valid/consumed syslogd setting (no references found outside this file). Leaving an unused property here is confusing and may imply functionality that doesn’t exist. Consider removing it, or replace it with the correct syslogd property if there was an intended behavior change.
| configure() { | ||
| initConfig | ||
| applyConfd | ||
| applyOpennmsPropertiesD | ||
| applyOverlayConfig |
There was a problem hiding this comment.
Now that confd-based regeneration is removed, applyOpennmsPropertiesD will append to etc/custom.system.properties on every container start, causing duplicate entries and unbounded file growth across restarts. Consider making this step idempotent (e.g., rebuild custom.system.properties from a pristine base each run, or write the aggregated output to a separate generated file and include it).
….adoc Removing pgsql autovacuum. Co-authored-by: Dino <dyancey@opennms.com>
….adoc Removing Co-authored-by: Dino <dyancey@opennms.com>
….adoc Removing Co-authored-by: Dino <dyancey@opennms.com>
* Update whatsnew doc and breaking changes * fix review comments * Update reference to event conf doc * some more updates to docs
…ing correctly (#8517) * NMS-19795: Fix password gate client side complexity check regex * smoke tests
The previous diagram_implementation.png predates the current stack illustration. opennms-full-stack.png is the refreshed asset that ships alongside it in the same images directory; switch the image:: macro to reference it so the rendered landing page matches the current artwork.
No remaining references after the landing-page image swap; deleting the file so the asset tree only carries the diagram that's actually rendered.
All Contributors
External References