Skip to content

chore(collectd): remove deprecated JMX-Cassandra catalog and RRD-only ejn collection - #399

Merged
pbrane merged 4 commits into
developfrom
chore/collectd-rrd-amputation
Jul 2, 2026
Merged

pbrane merged 4 commits into
developfrom
chore/collectd-rrd-amputation

Conversation

@indigo423

@indigo423 indigo423 commented Jul 1, 2026 •

Copy link
Copy Markdown
Collaborator

What

Removes dead / inert RRDtool-related config from the collectd overlay. delta-v is Kafka-first and never persists to RRDtool, so parts of the inherited collectd config no longer serve any purpose.

Three commits, all schema-valid and verified — no runtime behavior change:

Commit Change
1491736 Remove the deprecated cassandra-via-jmx package (JMX-Cassandra, JMX-Cassandra-Newts) + its 2 <collector> registrations, and the RRD-only ejn <snmp-collection> + orphaned datacollection/ejn.xml.
7c5d028 Comment the retained rrdRepository attr + default <rrd> block as an XSD-required sentinel (inert under Kafka), pointing at the upstream schema fix.
29189f5 Drop the inert rrd-base-name/ds-name params from the OpenNMS-JVM/JMX-Minion/JMX-Kafka services (read only by the dormant RRD persister; never reach the emitted metric name).
 collectd-configuration.xml    -37   (cassandra catalog + 6 inert JMX params)
 datacollection-config.xml     -17 +7 (ejn removal; sentinel comment)
 datacollection/ejn.xml       -102   (orphaned group, deleted)

Why the RRDtool config itself is NOT removed here

The original intent (#398) also wanted to drop the rrdRepository attribute and the <rrd>/<rra> archives. That is blocked upstream: datacollection-config.xsd (in opennms-config-jaxb, shipped by delta-v-horizon) declares rrdRepository use="required" and snmp-collection/rrd minOccurs="1", and collectd unmarshals with a schema-validating parser — so removing either aborts boot at parse time (cvc-complex-type.4). Tracked, with a ready-to-implement fix recipe, in pbrane/delta-v-horizon#26. This PR keeps those elements (commented as sentinels) and ships only what is schema-valid from delta-v alone.

Verification

  • Rebuilt deltav/collectd:1.3.0 and ran make up PROFILE=metrics: collectd boots healthy, zero parse errors, still publishing — deltav_timeseries_batches_published_total{producer="collectd"} = 6 (Default) + 198 (nl6-lab), deltav_collectd_persister_inner_failures_total = 0.
  • Repo-wide sweep: no dangling references (thresholds, events, dashboards, requisitions, build manifests) to any removed service/collection/resourceType.
  • rrd-base-name/ds-name removal validated by code trace: CollectionSetToProtobufTranslator builds metric names from MBean-derived CollectionResource/AttributeGroup names, not service params, so no emitted series changes (friendly-name retained).
  • Both edited XMLs pass xmllint.

Deliberate scope note

Deleting ejn.xml drops Juniper EGN/GGSN (GPRS APN) collection for sysoid .1.3.6.1.4.1.2636.1.1.1.2.18. Intentional under greenfield/zero-back-compat; such devices degrade gracefully to generic Juniper collection (juniper.xml's sysoidMask .1.3.6.1.4.1.2636.1. still matches). Recoverable from git history if ever needed.

Refs #398 · blocked-on pbrane/delta-v-horizon#26

🤖 Generated with Claude Code

… ejn collection

delta-v is Kafka-first and never persists to RRDtool, so the collectd
overlay carried dead config. This removes the two schema-valid pieces:

- the deprecated cassandra-via-jmx package (JMX-Cassandra,
  JMX-Cassandra-Newts services) and its two <collector> registrations,
  already removed from the pollerd catalog in #361
- the ejn <snmp-collection> — which existed solely for a different RRD
  archive shape — plus its now-orphaned datacollection/ejn.xml group
  (snmp-collection is minOccurs=0; nothing references collection="ejn")

Verified live: collectd boots healthy and keeps publishing to
deltav-timeseries (batches_published > 0, zero inner-persister failures).

Removing the RRDtool config itself (the rrdRepository attribute and the
snmp-collection <rrd>/<rra> archives) is blocked upstream:
datacollection-config.xsd declares them use="required"/minOccurs=1 and the
unmarshaller is schema-validating, so their removal aborts boot at parse
time. Tracked in pbrane/delta-v-horizon#26.

Refs #398

Assisted-by: ClaudeCode:claude-opus-4-8
Signed-off-by: Ronny Trommer <ronny@no42.org>
@indigo423
indigo423 requested a review from pbrane as a code owner July 1, 2026 12:10
indigo423 and others added 3 commits July 1, 2026 15:16
The rrdRepository attribute and the default snmp-collection's <rrd>/<rra>
block are inert under delta-v's Kafka -> VictoriaMetrics persistence, but
datacollection-config.xsd (opennms-config-jaxb) declares them
required/minOccurs=1 and the unmarshaller is schema-validating, so they
cannot be removed without a boot-time parse failure. Comment them so the
next config-trimmer knows they are a schema sentinel, not live config, and
points at the upstream schema relaxation that unblocks their removal.

Refs #398 · blocked-on pbrane/delta-v-horizon#26

Assisted-by: ClaudeCode:claude-opus-4-8
Signed-off-by: Ronny Trommer <ronny@no42.org>
…vices

The rrd-base-name and ds-name parameters on OpenNMS-JVM, JMX-Minion and
JMX-Kafka are read only by the dormant RRD persister (file naming) and the
poller/perspective response-time adaptors — never by the JMX/Jsr160
collection path. CollectionSetToProtobufTranslator builds the emitted metric
names from the CollectionResource and AttributeGroup (i.e. the MBean
definitions), not from these service parameters, so under delta-v's
Kafka -> VictoriaMetrics persistence they are inert and their removal does
not change any emitted series. friendly-name (a live resource-labeling
param) is retained.

Refs #398

Assisted-by: ClaudeCode:claude-opus-4-8
Signed-off-by: Ronny Trommer <ronny@no42.org>
# Conflicts:
#	deploy/overlays/collectd/etc/collectd-configuration.xml
@pbrane

pbrane commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Merge-conflict resolution + integration validation

This PR overlapped #400 on collectd-configuration.xml and datacollection-config.xml (both PRs trim collectd toward SNMP-only). #400 merged first, so I merged develop into this branch and resolved the conflict to the union of the two changes — which is the whole point: #399 and #400 are complementary halves of "make collectd SNMP-only."

Resolution applied to collectd-configuration.xml:

datacollection-config.xml auto-merged cleanly (this PR drops the ejn RRD group; #400 drops vmware/wmi — disjoint edits).

Validated before merge on a fresh full-profile stack (PostgreSQL 16), all three PRs (#397 → #400 → #399) integrated together:

  • refactor(deploy): consolidate per-daemon snmp-config.xml into shared overlay #397's shipped staging unit test: 8/8 pass
  • collectd image rebuilt from the integrated branch → boots healthy, loads collectd-configuration.xml + datacollection-config.xml with zero errors (no "class not available", no parse/unmarshal failures)
  • 72 distinct nl6-lab SNMP collections actively persisting; no log references to any removed collector

Net combined diff vs develop: +118 / -491 across 16 files. Merging.

@pbrane
pbrane merged commit e96880a into develop Jul 2, 2026
3 checks passed
@pbrane
pbrane deleted the chore/collectd-rrd-amputation branch July 2, 2026 12:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants