You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止rsyslog接收vCenter日志时生成异常文件夹?

问题:rsyslog接收vCenter日志时生成大量无关文件夹

我在Fedora 40服务器上安装了rsyslog,希望将其用作网络中的日志服务器。

初始rsyslog模板配置如下(已启用TCP和UDP模块):

$template PerHostLog,"/var/log/syslog/%HOSTNAME%/%PROGRAMNAME%.log"
if $fromhost-ip startswith '10.' then -?PerHostLog
& STOP

之后在vCenter 8中启用并关联该日志服务器测试转发功能,日志已保存到预期路径(vCenter主机名为srv05tff-vcenter-01),但同时生成了大量疑似来自vCenter的无效文件夹:

root@srv76tff-log-10:/var/log/syslog# ll
drwx------. 2 root root    47  3. Okt 11:53 al
drwx------. 2 root root    24  3. Okt 12:24 amples
drwx------. 2 root root    30  3. Okt 13:11 ations
drwx------. 2 root root    24  3. Okt 12:03 ax
drwx------. 2 root root  4096  3. Okt 12:24 srv05tff-vcenter-01 # 期望保留的文件夹
drwx------. 2 root root    26  3. Okt 12:03 Filter
drwx------. 2 root root    24  3. Okt 12:03 in
drwx------. 2 root root    43  3. Okt 13:11 l
drwx------. 2 root root    26  3. Okt 13:05 les
drwx------. 2 root root    46  3. Okt 12:50 max
drwx------. 2 root root    24  3. Okt 12:03 mean
drwx------. 2 root root    25  3. Okt 12:24 min
drwx------. 2 root root    24  3. Okt 12:14 n
drwx------. 2 root root    19  3. Okt 11:23 nDetails
drwx------. 2 root root    30  3. Okt 13:16 ns
drwx------. 2 root root    30  3. Okt 11:22 ons
drwx------. 2 root root    30  3. Okt 11:58 Operations
drwx------. 2 root root    70  3. Okt 13:31 otal
drwx------. 2 root root    97  3. Okt 14:07 tal
drwx------. 2 root root    22  3. Okt 12:19 tenance
drwx------. 2 root root    30  3. Okt 12:09 tion
drwx------. 2 root root    24  3. Okt 11:43 total
drwx------. 2 root root    23  3. Okt 13:26 ts
drwx------. 2 root root    26  3. Okt 14:07 umSamples

我尝试修改模板配置转换特殊字符,测试了:clean、:?-unknown:clean和:escape-cc等选项,但均无效。当前使用的配置仍未解决问题:

$template PerHostLog,"/var/log/syslog/%HOSTNAME:clean%/%PROGRAMNAME:replace:([()\])=_:clean%.log"
if $fromhost-ip startswith '10.' then -?PerHostLog
& STOP

请问为何这些文件夹会持续充斥rsyslog存储路径?


问题原因及解决方法

问题根源

vCenter转发的部分日志中,HOSTNAME字段并非完整的主机名,而是日志内容里的片段(比如指标名称、操作名称的一部分)。这是因为vCenter的某些日志源没有正确填充HOSTNAME字段,导致rsyslog误把这些片段当作主机名创建了文件夹。

解决步骤

  1. 替换为更可靠的fromhost字段
    fromhost记录的是发送日志设备的DNS名称或IP地址,不会被日志内容篡改,比HOSTNAME更稳定。修改模板:

    $template PerHostLog,"/var/log/syslog/%fromhost:clean%/%PROGRAMNAME:replace:([()\])=_:clean%.log"
    
  2. 添加字段合法性检查
    确保只处理字段非空的日志,避免空值或无效值导致异常文件夹:

    if $fromhost-ip startswith '10.' and $fromhost != '' then -?PerHostLog
    & STOP
    
  3. 过滤特定日志源(可选)
    如果仍有异常日志,可通过PROGRAMNAME字段过滤,只保留vCenter核心服务的日志:

    if $fromhost-ip startswith '10.' and $fromhost != '' and ($PROGRAMNAME contains 'vpxd' or $PROGRAMNAME contains 'vcsa') then -?PerHostLog
    & STOP
    
  4. 清理已生成的无效文件夹
    执行命令删除无关文件夹(注意不要误删目标文件夹):

    cd /var/log/syslog && rm -rf al amples ations ax Filter in l les max mean min n nDetails ns ons Operations otal tal tenance tion total ts umSamples
    

内容的提问来源于stack exchange,提问作者REVECT7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:35:03