我有一个将消息转发到 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,但这显然感觉不对。
我会尝试寻找更新,我认为有几个小版本需要安装。
有人遇到过这种行为吗?