• 2
  • 新人请关照

rsyslog omfile写入失败

问题描述

我配置了local0级别的消息全部都往/root/workspace/local1中写入,同时使用imfile的input读取/root/workspace/local1的内容并写入到/root/workspace/local2文件中

问题现象:
local1中每次运行php脚本都可以看到结果,但是local2中只有每次启动的一瞬间才会有数据写入,之后没有任何改变。

相关代码

rsyslog配置信息

$ModLoad imuxsock 
module(load = "mmjsonparse")
module(load="imfile" )
module(load="omuxsock")
module(load="omfile")

$DebugFile /var/log/rsyslog.debug
$DebugLevel 1

global(WorkDirectory = "/data1/rsyslog/workdir")

template (
  name = "msg_with_control_flags_tpl"
  type = "string"
  string = "<%pri%>%timereported% %$.control_flags% %syslogtag% %$!%\n"
)

if $syslogfacility-text == 'local0' then {
    call rule1
}

ruleset(name="rule1") {
 action(type="omfile" file="/root/workspace/local1")
}

input(type="imfile" file="/root/workspace/local1" Ruleset="rule2" tag="file" Facility="local1")

ruleset(name="rule2") {
action(type="omfile" file="/root/workspace/local2" ioBufferSize = "64K" template="msg_with_control_flags_tpl" dirCreateMode="0700" FileCreateMode="0644")
}

php的测试脚本

<?php
 openlog('USER-LOG', LOG_PID, LOG_LOCAL0);
 syslog(LOG_INFO, 'ERROR!!!');

问题出现的平台版本及自己尝试过哪些方法

rsyslog版本信息

rsyslogd  8.2004.0 (aka 2020.04) compiled with:
        PLATFORM:                               x86_64-redhat-linux-gnu
        PLATFORM (lsb_release -d):
        FEATURE_REGEXP:                         Yes
        GSSAPI Kerberos 5 support:              No
        FEATURE_DEBUG (debug build, slow code): No
        32bit Atomic operations supported:      Yes
        64bit Atomic operations supported:      Yes
        memory allocator:                       system default
        Runtime Instrumentation (slow code):    No
        uuid support:                           Yes
        systemd support:                        No
        Config file:                            /etc/rsyslog.conf
        PID file:                               /var/run/syslogd.pid
        Number of Bits in RainerScript integers: 64

See https://www.rsyslog.com for more information.

系统发型版本

CentOS release 6.7 (Final)
Kernel \r on an \m

你期待的结果是什么?实际看到的错误信息又是什么?

local2文件有更新

阅读 1.2k
评论
    1 个回答
    • 2
    • 新人请关照

    补充未提到的信息,centos运行在docker中

    问题原因

    该问题大概率是由于imfile默认使用ifnotiy方式来获取文件更新信息,而docker对于非挂载目录无法获取到更新,导致问题。

    解决方案

    1. 将要监听的文件放在挂载目录下
    2. 使用poll方式来获取更新
      撰写回答

      登录后参与交流、获取后续更新提醒

      相似问题
      推荐文章