[OpenNMS/opennms] e5747b: NMS-6400: Add syslog TCP settings to the configura...
Marshall Massengill via opennms-cvs <[email protected]>
| Newsgroups | gmane.network.opennms.cvs |
|---|---|
| Message-ID | <OpenNMS/opennms/push/refs/heads/mm/NMS-6400-smoke/[email protected]> |
Branch: refs/heads/mm/NMS-6400-smoke
Home: https://github.com/OpenNMS/opennms
Commit: e5747b0751811e835a5c6523db343fc8fa16e3ba
https://github.com/OpenNMS/opennms/commit/e5747b0751811e835a5c6523db343fc8fa16e3ba
Author: Marshall Massengill <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SyslogConfigBean.java
M opennms-config-model/src/main/java/org/opennms/netmgt/config/syslogd/Configuration.java
A opennms-config-model/src/main/java/org/opennms/netmgt/config/syslogd/SyslogTcpClientAuth.java
A opennms-config-model/src/main/java/org/opennms/netmgt/config/syslogd/SyslogTcpConfig.java
A opennms-config-model/src/main/java/org/opennms/netmgt/config/syslogd/SyslogTcpFraming.java
M opennms-config-model/src/main/resources/xsds/syslog.xsd
A opennms-config-model/src/test/java/org/opennms/netmgt/config/syslogd/SyslogTcpConfigTest.java
M opennms-config-model/src/test/java/org/opennms/netmgt/config/syslogd/SyslogdConfigurationTest.java
M opennms-config/src/main/java/org/opennms/netmgt/config/SyslogdConfig.java
M opennms-config/src/main/java/org/opennms/netmgt/config/SyslogdConfigFactory.java
Log Message:
-----------
NMS-6400: Add syslog TCP settings to the configuration model
Eleven optional attributes on the syslogd configuration, all of them off by
default: the listen port and address, the RFC 6587 framing, message and
connection limits, an idle timeout, and the RFC 5425 TLS material. Leaving
syslog-tcp-port unset gives the UDP-only behaviour installs have today.
SyslogTcpConfig is the shared shape both SyslogdConfig implementations expose, so
the core reaches it through the JAXB model and a Minion through a bean the
blueprint populates. Framing and client authentication are strings there, parsed
on the way out, because the Minion has no schema to reject a typo for it.
Commit: 885aee152c596fa83f611c9dee1281bce271fcc2
https://github.com/OpenNMS/opennms/commit/885aee152c596fa83f611c9dee1281bce271fcc2
Author: Marshall Massengill <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M features/events/syslog/pom.xml
A features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SyslogTcpExceptionHandler.java
A features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SyslogTcpFrameDecoder.java
A features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogTcpFrameDecoderTest.java
Log Message:
-----------
NMS-6400: Add an RFC 6587 frame decoder for syslog over TCP
TCP carries no message boundaries, and RFC 6587 defines two incompatible ways to
supply them that senders disagree about. The decoder handles both: octet counting,
where a length prefix precedes each message, and non-transparent, where a newline
or a NUL separates them. Under the default auto it reads the framing from the
first frame of a connection and then latches it, since a stream that changes
framing cannot be decoded unambiguously and guessing per frame would turn a sender
bug into corrupt events.
A framing error leaves the position of every later message unknown, so
SyslogTcpExceptionHandler drops the connection and lets the sender resynchronise
rather than skipping bytes. Netty is used directly instead of through Camel
because the Camel netty component has no codec for octet counting.
Commit: 424636fcee286081463264f667bb4b4616b3afb1
https://github.com/OpenNMS/opennms/commit/424636fcee286081463264f667bb4b4616b3afb1
Author: Marshall Massengill <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SinkDispatchingSyslogReceiver.java
M features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SyslogReceiverJavaNetImpl.java
A features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SyslogTcpListener.java
A features/events/syslog/src/main/java/org/opennms/netmgt/syslogd/SyslogTcpSslContextFactory.java
M features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogClient.java
A features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogTcpListenerDispatchIT.java
A features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogTcpSslContextFactoryTest.java
A features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogdMultiListenerIT.java
A features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogdReceiverNettyTcpIT.java
A features/events/syslog/src/test/java/org/opennms/netmgt/syslogd/SyslogdReceiverNettyTcpTlsIT.java
Log Message:
-----------
NMS-6400: Accept syslog over TCP and TLS
SyslogTcpListener owns the socket and hands decoded messages to a dispatcher that
belongs to someone else. It is deliberately not a second SyslogReceiver: a receiver
creates its own sink dispatcher, the Sink API names its metrics after the module
id, and a second dispatcher for the same module throws and takes its listener
down, sometimes the UDP one. SinkDispatchingSyslogReceiver therefore owns one
dispatcher and starts a TCP socket alongside its UDP one, which gives both
existing receiver implementations TCP without touching Syslogd.
Messages from one connection are dispatched one at a time, in arrival order, from
a pool thread rather than an event loop: AsyncDispatcher.send() blocks while the
sink queue is full and SyslogSinkModule asks for blockWhenFull, so dispatching on
an event loop stalls every connection on that worker. Reads are paused until the
dispatch returns, which turns a slow sink into TCP backpressure instead of
unbounded buffering, and the connection is not treated as idle while that is
outstanding. The wait for the dispatch is bounded, because after a Minion
configuration reload the sink delivers messages but completes the wrong futures.
TLS follows RFC 5425 and refuses to start on unusable certificate material rather
than falling back to plaintext on a port an operator believes is encrypted.
Commit: e204fc8a5002d6a156b0c4e22ea2a42ac50ccbd8
https://github.com/OpenNMS/opennms/commit/e204fc8a5002d6a156b0c4e22ea2a42ac50ccbd8
Author: Marshall Massengill <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M features/events/syslog/blueprint-syslog-listener-camel-netty.xml
M features/events/syslog/blueprint-syslog-listener-javanet.xml
M opennms-container/minion/CONFD_README.md
Log Message:
-----------
NMS-6400: Let a Minion listen for syslog over TCP
The TCP settings hang off the syslog listener feature a Minion already installs, as
syslog.tcp.* keys in org.opennms.netmgt.syslog.cfg, rather than a second feature.
syslog.tcp.listen.port defaults to 0, meaning off, because the .cfg always carries
the key. The placeholder already reloads, so a change takes effect through config
admin without restarting the container.
Commit: 1b1db7098d8e2006c9252614189a4dc27df0e27d
https://github.com/OpenNMS/opennms/commit/1b1db7098d8e2006c9252614189a4dc27df0e27d
Author: Marshall Massengill <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M opennms-base-assembly/src/main/filtered/etc/syslogd-configuration.xml
Log Message:
-----------
NMS-6400: Describe the TCP attributes in the shipped configuration
Commented out, so an install that is not touched keeps listening on UDP alone. The
example uses unprivileged ports, since the registered 601 and 6514 need a redirect
or added capabilities for a process that is not root.
Commit: 511b6ae88bc09ed2927822b58ec0916b0442a14d
https://github.com/OpenNMS/opennms/commit/511b6ae88bc09ed2927822b58ec0916b0442a14d
Author: Marshall Massengill <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M docs/modules/operation/pages/deep-dive/events/sources/syslog.adoc
M docs/modules/reference/pages/daemons/daemon-config-files/syslogd.adoc
Log Message:
-----------
NMS-6400: Document syslog ingestion over TCP and TLS
Covers both framings and what a mismatch looks like from the outside, since that is
the failure operators will actually hit, along with the TLS attributes and the
Minion keys.
Commit: 1b05962a70d1816829f3fa2ab6ae3962b2c8d1db
https://github.com/OpenNMS/opennms/commit/1b05962a70d1816829f3fa2ab6ae3962b2c8d1db
Author: Marshall Massengill <[email protected]>
Date: 2026-08-18 (Tue, 18 Aug 2026)
Changed paths:
M smoke-test/src/main/java/org/opennms/smoketest/containers/MinionContainer.java
M smoke-test/src/main/java/org/opennms/smoketest/stacks/NetworkProtocol.java
M smoke-test/src/main/java/org/opennms/smoketest/utils/SyslogUtils.java
A smoke-test/src/main/resources/syslog-tcp/org.opennms.netmgt.syslog.cfg
A smoke-test/src/test/java/org/opennms/smoketest/minion/SyslogTcpIT.java
Log Message:
-----------
NMS-6400: Add a smoke test for syslog over TCP to a Minion
Sends both framings to a Minion and counts the events that reach the core. The
count is exact rather than a lower bound, because over-delivery is what a framing
bug produces and a greater-than assertion would pass straight over one message
becoming several.
The .cfg that switches the port on is placed relative to the Minion's etc, since
the overlay is rsynced into it rather than into the Minion home.
Compare: https://github.com/OpenNMS/opennms/compare/587adba45018...1b05962a70d1
To unsubscribe from these emails, change your notification settings at https://github.com/OpenNMS/opennms/settings/notifications
_______________________________________________
Please read the OpenNMS Mailing List FAQ:
http://www.opennms.org/wiki/index.php?page=MailingListFaq
opennms-cvs mailing list
To *unsubscribe* or change your subscription options, see the bottom of this page:
https://lists.sourceforge.net/lists/listinfo/opennms-cvs