Skip to content

NMS-11035: Documentation gaps - #8984

Closed
joseanesONMS wants to merge 62 commits into
developfrom
jira/NMS-11035-documentation-gaps-smoke
Closed

joseanesONMS wants to merge 62 commits into
developfrom
jira/NMS-11035-documentation-gaps-smoke

Conversation

@joseanesONMS

@joseanesONMS joseanesONMS commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Closes open documentation tickets, led by NMS-11035, with content checked against the code on develop; one commit per ticket.

The docs build adds no warnings (develop's two existing ones remain), every new page is in a nav.adoc, and XML examples validate against their XSDs.

Ticket Topic Page(s) added/changed Source of truth
NMS-11035 JschSshMonitor (deprecated, delegates to SshMonitor) reference/…/monitors/JschSshMonitor.adoc (new), SshMonitor.adoc features/poller/monitors/core/…/JschSshMonitor.java, SshMonitor.java
NMS-11037 LaTableMonitor reference/…/monitors/LaTableMonitor.adoc (new) …/monitors/LaTableMonitor.java, SnmpMonitorStrategy.java
NMS-11041 LogMatchTableMonitor reference/…/monitors/LogMatchTableMonitor.adoc (new) …/monitors/LogMatchTableMonitor.java
NMS-9788 SshMonitor banner regular expressions reference/…/monitors/SshMonitor.adoc …/monitors/SshMonitor.java
NMS-15338 Examples for DeviceConfig, JolokiaBean and Web monitors DeviceConfigMonitor.adoc, JolokiaBeanMonitor.adoc, WebMonitor.adoc features/device-config/monitor/…/DeviceConfigMonitor.java, JolokiaBeanMonitor.java, WebMonitor.java
NMS-11036 JMX (JSR-160) detector reference/…/detectors/Jsr160Detector.adoc (new), JmxMonitor.adoc opennms-provision/opennms-detector-jmx/…, core/jmx/api/…/JmxConnectionConfig*.java
NMS-9014 All provisioning detectors (24 new pages) reference/…/detectors/*.adoc opennms-provision/opennms-detector-*, protocols/radius/…/detector, opennms-provision-api/…/support/*Detector*.java
NMS-12662 storFlagOverride and the ifAlias storage options operation/…/collectd/collection-packages.adoc collectd-configuration.xsd, CollectionSpecification.java, IfInfo.java
NMS-14278 strictInterval operation/…/collectd/configuration.adoc, reference/…/system-properties.adoc opennms-services/…/collectd/CollectableService.java
NMS-13557 Common collector parameters reference/…/performance-data-collection/introduction.adoc CollectableService.java, CollectorRequestBuilderImpl.java, RpcTargetHelper.java
NMS-12579 XmlCollector URL and request placeholders reference/…/collectors/xml.adoc protocols/xml/…/AbstractXmlCollectionHandler.java, XmlCollector.java
NMS-3927 subIndex and other resource label expressions operation/…/resource-types.adoc opennms-dao/…/GenericIndexResourceType.java
NMS-12623 Data collection groups and system definitions reference/…/collectors/SnmpCollector.adoc datacollection-config.xsd, DataCollectionConfigParser.java
NMS-15076 File handler needs an absolute path reference/…/handlers/file.adoc FileRequisitionProvider.java, ConfigurationHelper.ts
NMS-14428 Karaf command for the SNMP metadata adapter reference/…/adapters/snmp-metadata.adoc SnmpMetadataProvisioningAdapterCommand.java
NMS-8122 How the node label is chosen operation/…/provisioning/node-label.adoc (new) DefaultProvisionService.java, NodeLabelDaoImpl.java
NMS-15009 Setting a node's parent for path outages operation/…/provisioning/directed-discovery.adoc, path-outages.adoc model-import.xsd, DefaultProvisionService.setNodeParentAndDependencies
NMS-12873 SNMP configuration attributes operation/…/provisioning/snmp-configuration.adoc (new) snmp-config.xsd, SnmpConfiguration.java, SnmpConfigManager.java
NMS-13513 SNMP proxy-host snmp-configuration.adoc SnmpPeerFactory.java, Snmp4JAgentConfig.java
NMS-16211 SNMP configuration troubleshooting snmp-configuration.adoc core/snmp/commands/*, NodeInfoScan.java
NMS-20473 Correct CORE_SERVICE_*_ENABLED names reference/…/daemons/introduction.adoc service-configuration.xml.tmpl, service-configuration.xml
NMS-16398 Reloads after package filter changes operation/…/daemon-config-files.adoc and links PollerEventProcessor.java, Collectd.java, SnmpPoller.java, ThresholdingServiceImpl.java
NMS-19449 Trapd configuration in the database and its page reference/…/daemon-config-files/trapd.adoc, snmp-traps.adoc, core-docker.adoc DefaultTrapdConfigDao.java, changelog-cm/36.0.0, ui/src/components/TrapdConfiguration/*
NMS-14422 Deleting device configuration backups (REST) operation/…/device-config-backup/dcb.adoc DeviceConfigRestService.java
NMS-8517 Notification strategies operation/…/notifications/strategies/{javamail,http,snmp-trap,browser}.adoc (new), commands.adoc opennms-services/…/notifd/*NotificationStrategy.java, notificationCommands.xml
NMS-13290 Notifd event matching and automatic acknowledgment operation/…/notifications/concepts.adoc, reference/…/notifd.adoc BroadcastEventProcessor.java, NotificationManager.java, notifd-configuration.xsd
NMS-18229 PagerDuty through the Webhook strategy operation/…/strategies/webhook.adoc WebhookNotificationStrategy.java
NMS-15583 Notifications for specific nodes to specific users operation/…/notifications/route-by-node.adoc (new) JdbcFilterDao.java
NMS-12669 Sink and RPC patterns deployment/…/minion/ipc.adoc (new) core/ipc/sink/api, core/ipc/rpc/api
NMS-13800 Twin API deployment/…/minion/ipc.adoc, minion/message-broker/kafka.adoc core/ipc/twin/api, AbstractTwinPublisher.java
NMS-13814 Kafka producer .proto definitions operation/…/kafka-producer/kafka-producer.adoc features/kafka/producer/src/main/proto/*.proto, OpennmsKafkaProducer.java
NMS-14886 Kafka producer filter examples operation/…/kafka-producer/configure-kafka.adoc OpennmsKafkaProducer.java (SpEL filters)
NMS-14033 Sentinel settings for Kafka multi-tenancy reference/…/tuning-kafka.adoc, system-properties.adoc blueprint-ipc-server.xml, KafkaTopicProvider.java
NMS-13596 scvcli reference operation/…/scv-configuration.adoc features/scv/scvcli/*
NMS-8460 Newts evaluate strategy for sizing deployment/…/newts/configuration.adoc features/timeseries-evaluate/*
NMS-20453 Core setup credentials and Debian paths deployment/…/core/{centos,debian-ubuntu}/initialize-core.adoc debian/rules, debian/opennms-common.links
NMS-15295 Consistent sudo in the Debian upgrade deployment/…/upgrade/debian/up-debian.adoc n/a (commands)
NMS-14932 IPLIKE deployment/…/core/install.adoc, filters.adoc core/schema/…/Migrator.java, iplike.sql
NMS-19123 Supported RHEL versions deployment/…/core/install.adoc, minion/install.adoc docs/antora.yml
NMS-15365 KAR plugins in the core container deployment/…/core/docker/initialize.adoc opennms-container/core/Dockerfile, entrypoint.sh
NMS-12003 Surveillance Dashboard alarm and notification limits operation/…/visualizations/dashboard.adoc DefaultSurveillanceViewService.java

Corrections made to existing text while working these tickets: wrong WebMonitor parameter rows, the Kafka event-record key, the SnmpTrap command example, the SNMP sample namespace in xml-samples.adoc, and the second tee in the Debian setup now appends instead of overwriting opennms.conf.

Corrections to existing docs (separate NMS-11035: Fix … commits, each can be dropped on its own)

Topic Change Source of truth
Detector parameters brokerURL, useNodeLabel, storedProcedure, supported, authEnabled names; JDBC url, WQL serviceName, TCP banner, HTTPS defaults detector bean setters and field defaults
DeviceConfigMonitor schedule default is daily at midnight, never is the shipped value DeviceConfigMonitor.java, DeviceConfigConstants.java
Monitor retry Retries after the first attempt, on 13 TimeoutTracker-based monitors TimeoutTracker.shouldRetry()
Monitor listings Literal $\{…} backslashes in source blocks; DNSResolution {nodeLabel} case ParameterSubstitutingMonitor.java
SnmpCollector rrdRepository attribute name datacollection-config.xsd
Import handlers File URL example uses an absolute path Provisioner.java, FileRequisitionProvider.java
SNMP REST Field names, passphrase defaults, protocol reset when no passphrase Configuration.java, AddressSnmpConfigVisitor.java
Reportd, Tl1d, TL1 events Pages and remaining mentions removed: the daemons cannot be enabled on develop ServiceConfiguration.mergeWithDefaults(), defaults service-configuration.xml
Info REST example No Reportd in the services map InfoRestService.java
Meta-data page Trapd and SNMP entries reflect database-stored configuration TrapdConfigFactory.java, DefaultSnmpConfigDao.java, SnmpPeerFactory.java
Upgrade, backup, restore Absolute /opt/opennms paths, Debian Git-diff steps, dump file name, line continuations, sudo on privileged restore commands, supported PostgreSQL on Debian restore, stale CAP_NET_RAW step debian/rules, debian/opennms-common.links, opennms.spec, opennms.service
RHEL 7/8 Removed or relabelled on pages for supported releases docs/antora.yml (compatible-rhel: '9,10')
Release notes Duplicated platform upgrade section removed git log of whatsnew.adoc

Already documented

  • NMS-19123 (overview table): already fixed by NMS-19060 in deployment/…/core/system-requirements.adoc; this PR only aligns the page descriptions.

Not addressed

  • NMS-10411: there is no reloadable attribute on develop; the code (NMS-10350) is unmerged.
  • NMS-19839: threshold configuration is still file-based on develop; the database work is on an unmerged branch.
  • NMS-19267: develop does not claim or test Debian 13 (compatible-debian: '11, 12'), so install steps cannot be verified.
  • NMS-13414: AWS SQS is gone from develop and gRPC is a supported transport, so marking them experimental would be inaccurate.
  • NMS-11035, NMS-11037, NMS-11041 (detector part): no JschSsh, LaTable or LogMatchTable detector exists on develop.
  • NMS-9014: JBoss, MX4J, NSClient, WMI and XMP detectors no longer exist on develop.
  • NMS-18229 (plugin part): publishing the PagerDuty plugin's own docs is a docs-site playbook change outside this repository.
  • Docs-site infrastructure: NMS-12501, 13295, 13409, 13540, 13553, 13585, 13794, 13944, 14257, 14443, 14644, 14993, 14994, 15286, 15363, 16252, 16954, 18139, 18219, 18249, 20305.
  • Epics, audits and restructures that need a docs-team plan: NMS-9528, 11006, 11824, 12666, 13349, 13555, 13558, 13621, 13624, 14094, 14102, 14135, 14136, 14137, 14138, 14139, 14140, 14307, 14702, 14755, 14793, 14796, 15099, 16257.
  • Feature requests or not documentation: NMS-2742, 5853, 8031, 9184, 11731, 13204, 13825, 13829, 13959, 14052, 15749, 20003, 20285.
  • KSC / Graph Collections (belongs with that rewrite): NMS-11775, 14390.
  • Release QA tasks: NMS-16256, 16260, 17888, 19268.
  • Other repositories: NMS-15395 and NMS-20333 (ALEC docs), NMS-15614 (plugin standard).
  • Need engineering owners or unmerged code: NMS-11813, 11820, 12036, 12047, 12916, 13520, 15737 (depends on NMS-15736), 20244.

External References

The JschSshMonitor is still registered on develop but had no reference page.
It is a deprecated wrapper around SshMonitor (JschSshMonitor.java delegates every poll), so the page lists the SshMonitor parameters and points to it.
The LaTableMonitor is registered on develop but had no reference page.
The page follows LaTableMonitor.java: it walks laErrorFlag in the UCD-SNMP-MIB laTable and only reads the port, retry/retries, and timeout overrides.
The LogMatchTableMonitor is registered on develop but had no reference page.
The page follows LogMatchTableMonitor.java: it walks logMatchErrorFlag in the UCD-SNMP-MIB logMatchTable and only reads the port, retry/retries, and timeout overrides.
The banner parameter said "regular expression" without naming the flavour or how it is applied.
SshMonitor.java compiles banner/match with java.util.regex.Pattern and calls find() on the server banner line, so the page now says so and gives tested examples.
…olokiaBeanMonitor, and WebMonitor

The three pages had no complete service and monitor definition to copy from.
Examples follow the monitor classes and the shipped poller-configuration.xml; the WebMonitor header and response-text rows are corrected to match WebMonitor.java.
The JmxMonitor had a reference page, but the Jsr160Detector, the only JMX detector registered for provisioning, had none.
Parameters and defaults come from JMXDetector, GenericJMXDetectorFactory, and JmxConnectionConfigBuilder; examples follow default-foreign-source.xml.
Twenty-four detectors registered as ServiceDetectorFactory services on develop had no reference page, including the line-oriented, SNMP-based, DHCP, NTP, ICMP, SMB, SSH, RADIUS, and general purpose detectors.
Parameters and defaults come from each detector class and its base classes in opennms-provision and protocols/radius; examples validate against foreign-sources.xsd.
The collectd package elements storeByIfAlias, ifAliasDomain, storeByNodeID, storFlagOverride, and ifAliasComment were undocumented; storFlagOverride only has meaning together with the others.
Behavior is taken from collectd-configuration.xsd, CollectionSpecification, ServiceParameters, IfInfo, and AliasedResource.
org.opennms.netmgt.collectd.strictInterval has defaulted to true since NMS-14259, but neither the property nor its effect on collection scheduling was documented.
Behavior and default are taken from CollectableService.
Service monitors and detectors have a common parameter section, but collectors did not, so thresholding-enabled, ttl, and the Minion targeting parameters were only partly documented per collector.
The list is limited to parameters handled generically by CollectableService, CollectorRequestBuilderImpl, and RpcTargetHelper.
…ests

The XmlCollector page used placeholders such as {ipaddr} in examples but never listed which ones exist or where they apply, and linked to the unrelated filter parameters page.
The list comes from AbstractXmlCollectionHandler.parseString and XmlCollector.filterParameters.
The resourceLabel attribute of resource types supports subIndex, hex, and string expressions that shipped resource types such as cesServerFarmRserverEntry rely on, but none of them were documented.
Semantics are taken from GenericIndexResourceType, with a worked example for the Cisco SLB resource type.
The SnmpCollector page showed datacollection-config.xml and an include example, but did not explain the elements of a data collection group (group, mibObj, systemDef, ipList) or the include-collection options.
Element semantics are taken from datacollection-config.xsd, DataCollectionConfigParser, and DataCollectionConfigLookupUtils.
The file handler page did not say how the path is resolved; FileRequisitionProvider opens it with new File(path) and the external requisition UI rejects paths that do not start with a slash. The page now states that the path must be absolute and warns against using etc/imports as a source directory.
… adapter

The SNMP metadata adapter page did not mention opennms:snmp-metadata-provisioning-adapter. The new section covers its node selection options, dry-run versus persist behavior, and caveats, taken from SnmpMetadataProvisioningAdapterCommand and SnmpMetadataProvisioningAdapter.
The docs did not explain how Provisiond picks a node label or what the label source flag means. The new Node Labels page covers requisition, discovered, and manually changed labels, based on DefaultProvisionService, ScanResource, SaveOrUpdateOperation, and NodeLabelDaoImpl.
The path outages page showed one example but provisioning had no procedure for defining node parents. The new section in Directed Discovery covers the UI and requisition attributes, parent lookup rules, and critical interface selection from CoreImportActivities and DefaultProvisionService, and cross-links with path outages.
There was no operator page describing the SNMP agent configuration: its structure, how an IP address is matched to a definition, or each attribute and its default. The new SNMP Configuration page is based on snmp-config.xsd, the JAXB Configuration and Definition classes, AddressSnmpConfigVisitor, and SnmpConfiguration defaults, and the quick start, profile, and XML sample pages now link to it.
The proxy-host attribute was listed without any explanation of its effect. SnmpPeerFactory replaces the request address with the proxy and keeps the agent as ProxyForAddress, and the SNMP4J strategy sends only to the proxy; the new section describes this, which settings apply to the proxy, and how to verify it.
Operators had no guidance on checking the effective SNMP configuration, testing requests, or tuning timeouts and PDU sizes for slow agents. The new section uses the snmp-show-config, snmp-get, snmp-walk, and snmp-fit Karaf commands and the matching, security level, and profile fitting rules in AddressSnmpConfigVisitor and NodeInfoScan.
The daemon table listed CORE_SERVICE_ENLINKD_ENABLED instead of CORE_SERVICE_ENHANCEDLINKD_ENABLED, a variable for Eventd that has no effect, and rows for the removed Reportd and Tl1d daemons. The names now match etc/service-configuration.xml and the container confd template exactly.
Pollerd, Collectd, SnmpPoller, and the thresholding service evaluate package filters only when they schedule an interface, and the docs did not say that a filter change needs a reload or restart. The new section lists, per daemon, what a reload re-evaluates and which node events trigger a partial re-evaluation, based on PollerEventProcessor, Collectd, SnmpPoller, and ThresholdingServiceImpl.
…ation page

The trapd pages still described trapd-configuration.xml as a live file, although the configuration now lives in the database and is managed through the Trap Configuration page and /api/v2/trapd. The trapd reference now covers the one-time import, the reload behavior, and the three tabs of the page, based on DefaultTrapdConfigDao, the 36.0.0 changelog-cm, Trapd, and ui/src/containers/TrapdConfiguration.vue.
The DCB pages did not say how to delete a backup. The Device Configs page has no delete action on develop (NMS-14276 is open), so the new section covers the DELETE endpoints of DeviceConfigRestService and their effect on the Device Configs list.
Only the scripting, ticket, and webhook strategies had pages; JavaMail, browser, HTTP, SNMP trap, and null were undocumented or only shown by example. The pages follow the strategy classes in opennms-services and the shipped notificationCommands.xml and javamail-configuration.properties.
The docs did not explain how notifd matches events to notifications, what match-all does, or how auto-acknowledge rules and resolution notices behave. The text follows BroadcastEventProcessor, NotificationManager, and the notifd-configuration.xsd model and shipped defaults.
Adds a PagerDuty Events API v2 example to the webhook strategy page, with trigger and resolve commands tied together by a dedup key. It uses only the existing WebhookNotificationStrategy switches and notification parameters.
…fic users

The reference material for rules, groups, and destination paths existed, but nothing showed how to combine them for this common task. The procedure uses the filter rule syntax in JdbcFilterDao and the shipped notifications.xml and notifd-configuration.xml defaults.
The Minion docs described installation per broker but not the Sink and RPC patterns that carry Core, Minion, and Sentinel traffic. The new page follows the core/ipc sink and rpc APIs and the strategy selection in SinkStrategy and RpcStrategy.
The Twin pattern that replicates configuration from Core to Minions was only mentioned by name in the Kafka setup. The section follows the core/ipc/twin publisher and subscriber APIs, the keys registered by Trapd, telemetryd, and the IPFIX provider, and the twin-subscribe shell command.
The Debian package ships the real configuration directory at /opt/opennms/etc and makes /etc/opennms the link (debian/opennms-common.dirs, debian/opennms-common.links, debian/rules), so the mv and ln -s steps that assumed the reverse are replaced with the same commands as the RHEL tab, which also match the later etc.bak restore step.
The restore steps ran chown and the Debian apt-get install without sudo, and
appended to /etc/passwd and /etc/group with a shell redirect that runs
unprivileged even under sudo, so each step failed for a sudo user. They now
use sudo, and sudo tee -a for the appends.
.Create encrypted credentials for the PostgreSQL database connections
[source, console]
----
sudo -u opennms ${OPENNMS_HOME}/bin/scvcli set postgres opennms password <1>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know if we want to do this... we have standardized on the OPENNMS_HOME directory at this point so maybe this is ok? Need to get feedback from others. I'm ok with it though... I think.

endif::[]
====

[[iplike]]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would drop the change for IPLIKE for now until we get #8634 merged in.

@marshallmassengill

marshallmassengill commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

@joseanesONMS - I started reviewing but this needs to be broken up a bit. It's a bit too much in too many different places in one PR. Like, if it were one liners throughout... maybe it would be ok but this is too much to review in one PR for the docs. Can you break this up a bit further? Maybe pick like 5 or so of these to put into one PR or group them based on the topic or something...

@joseanesONMS

Copy link
Copy Markdown
Contributor Author

@marshallmassengill Split by topic as you suggested, on branches without -smoke (docs only):

The IPLIKE change (NMS-14932) is dropped until #8634 merges. The OPENNMS_HOME paths in initialize-core.adoc are now in #9006 for the wider feedback you mentioned.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants