Repository navigation
Conversation
rsyslog counts every message an action queue discards (discarded.nf when the queue is nearly full, discarded.full when it is full), but Ascender never loads impstats, so nothing reports those counters and a deployment can lose external log events with no sign of it. Register LOG_AGGREGATOR_ACTION_QUEUE_STATS_INTERVAL (seconds, default 0 = off). When it is above 0 and external logging is enabled, the generated rsyslog.conf loads impstats at that interval, in JSON, bound to its own ruleset whose only action writes to rsyslogd's stdout, which is the container log. The separate ruleset keeps the statistics out of the external action in the default ruleset. With the default, the generated configuration is unchanged. related ctrliq#1097 Assisted-by: Claude Opus 5.5 Signed-off-by: Quanah Gibson-Mount <quanah@dropbox.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
SUMMARY
Assisted-by: Claude Opus 5.5. Drafted with AI assistance; the commit carries the same trailer.
Option 2 from #1097: an opt-in setting that routes rsyslog's own queue counters into the container log, where any log collector already picks them up and a monitor can alert on discards.
LOG_AGGREGATOR_ACTION_QUEUE_STATS_INTERVAL: seconds, default 0 (off).rsyslog.confgains:stdout_logfile=/dev/stdoutin both supervisor configs) ⇒ no new files or volumes.impstatsships in the basersyslogpackage the image installs ⇒ no new dependency.conf.dinclude fix (The generated rsyslog.conf no longer reads /var/lib/ascender/rsyslog/conf.d #1091): it needs no operator drop-in.Same change upstream: ansible/awx#16718 (for ansible/awx#16717).
related #1097
ISSUE TYPE
COMPONENT NAME
ASCENDER VERSION
ADDITIONAL INFORMATION
Tests:
test_rsyslog_conf_queue_statsinascender/main/tests/unit/api/test_logger.py, parametrized over the registered default, 0, 60, and 60 with external logging disabled (no queue ⇒ no statistics). Run inpython:3.14with Ascender's requirements, againstmain640cf5f2, withtest_external_logging_durability.pyalongside:End to end, on
rockylinux/rockylinux:9withrsyslog-8.2510.0-2.el9_8.2: thersyslog.confthe patched code generates for a TCP destination on a closed port,LOG_AGGREGATOR_ACTION_QUEUE_SIZE=100and an interval of 1 s; 300 INFO messages sent through the Ascender socket:enqueued300 = only the job events reached the external queue; the statistics stayed in their own ruleset. Same result with the other external logging fixes applied underneath (conf.dinclude, keepalive, discard severity, RELP).discarded.nfreads 300 with 90 messages still queued. The same test through AWX's datagram socket reads 210 (300 − 90), so the difference comes from rsyslog's batchedimptcppath, not from this change; either way the counter is non-zero exactly when the queue discards.ruff checkandruff format --check(ruff 0.16.10) are clean on the touched files.