Rsyslog 填满磁盘 - 意外行为

Rsyslog 填满磁盘 - 意外行为

我有一个将消息转发到 elasticsearch 的 rsyslog。它运行良好,已经运行了一年多,但最近磁盘开始莫名其妙地填满,直到达到 100%。

当我重新启动该进程时,磁盘立即清空至正常值,这让我相信该进程是填满磁盘的进程。

Rsyslog 版本是 rsyslogd 8.2002.0(又名 2020.02)

这是我的队列配置的 jinja2 示例:

if $msg contains "api_logs_rsyslog" then {
action(type="mmjsonparse" cookie="")

if $parsesuccess == "OK" then {
    if $!isIndexable == 0 then {
        action(type="omfile" file="{{ rsyslog.disk_log_path }}"
                ioBufferSize="64k" flushOnTXEnd="on"
                asyncWriting="off") stop
    } else {
        action(type="omelasticsearch"
            name="api_logs_rsyslog"
            server="{{ rsyslog.elasticsearch.server }}"
            serverport="9200"
            template="messageToES"
            dynSearchIndex="on"
            searchIndex="searchIndex-template"
            bulkmode="on"
            dynbulkid="on"
            bulkid="bulkid-template"
            maxbytes="100m"
            action.resumeRetryCount="-1" #eternal
            action.resumeInterval="300" #5min
            action.resumeIntervalMax="43200" #12h
            queue.type="linkedlist"
            queue.workerThreads="8"
            queue.size="250000"
            queue.dequeuebatchsize="4096"
            queue.workerThreadMinimumMessages="10000"
            queue.fileName="{{ rsyslog.elasticsearch.api_queue}}_disk"
            queue.maxDiskSpace="1g"
            queue.saveOnShutdown="on"
            uid="admin"
            pwd="{{ rsyslog.elasticsearch.passwd }}"
            errorfile="{{ rsyslog.elasticsearch.api_errorfile }}" 
            ) stop
    }
} else {
    action(type="omfile" File="{{ rsyslog.elasticsearch.parse_failed }}") stop
}}

我已经使用 impstats 调试了队列,但它们并没有被填满(我的第一个想法是队列会被填满,然后切换到磁盘辅助场景)

我现在唯一的解决方案是使用 cron 在几个小时后重新启动 rsyslog,但这显然感觉不对。

我会尝试寻找更新,我认为有几个小版本需要安装。

有人遇到过这种行为吗?

相关内容