Rsyslog不写入文件

时间:2017-07-10 17:41:08

标签: rsyslog

我有一个非常基本的用例:让rsyslog监听给定的TCP端口,并将接收到的每一行写入指定的文本文件。 Rsyslog在端口上正确侦听,使用logger + ngrep进行测试表明TCP部分的一切正常。但是,rsyslog从不在指定的文件中写入任何内容。我有点困惑,我之前从未遇到过这个问题。

我的配置:

module(load="imtcp")
ruleset(name="rs1") {
    # I tested both syntaxes. None of them worked
    #*.* /var/log/test.log
    action(type="omfile" file="/var/log/test.log")
}
input(type="imtcp" port="10514" ruleset="rs1")

配置的其余部分是Debian's rsyslog configuration file

sudo /usr/sbin/rsyslogd -f /etc/rsyslog.conf -N 1

rsyslogd: version 8.4.2, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.

运行/usr/sbin/rsyslogd -dn显示(像往常一样)大量输出,并表示一切正常。我三倍检查文件权限和其他基本检查,一切正常。

这是测试时得到的调试输出

[..]
9533.048681189:main Q:Reg/w0  : strm 0x7f4e64003930: file -1(messages) flush, buflen 142
9533.048698110:main Q:Reg/w0  : strmPhysWrite, stream 0x7f4e64003930, len 142
9533.048720759:main Q:Reg/w0  : file '/var/log/messages' opened as #10 with mode 416
9533.048740602:main Q:Reg/w0  : strm 0x7f4e64003930: opened file '/var/log/messages' for WRITE as 10
9533.048762238:main Q:Reg/w0  : strm 0x7f4e64003930: file 10 write wrote 142 bytes
9533.048788387:main Q:Reg/w0  : Action 15 transitioned to state: rdy
9533.048794753:main Q:Reg/w0  : Action 15 transitioned to state: itx
9533.048810943:main Q:Reg/w0  : Action 15 transitioned to state: rdy
9533.048827085:main Q:Reg/w0  : actionCommit, in retry loop, iRet 0
9533.048842385:main Q:Reg/w0  : actionCommitAll: action 17, state 0, nbr to commit 0 isTransactional 0
9533.048848882:main Q:Reg/w0  : processBATCH: batch of 1 elements has been processed
9533.048865523:main Q:Reg/w0  : regular consumer finished, iret=0, szlog 0 sz phys 1
9533.048883876:main Q:Reg/w0  : DeleteProcessedBatch: we deleted 1 objects and enqueued 0 objects
9533.048900724:main Q:Reg/w0  : doDeleteBatch: delete batch from store, new sizes: log 0, phys 0
9533.048917314:main Q:Reg/w0  : regular consumer finished, iret=4, szlog 0 sz phys 0
9533.048923512:main Q:Reg/w0  : main Q:Reg/w0: worker IDLE, waiting for work.


9537.087044117:imtcp.c        : epoll returned 1 entries
9537.087054376:imtcp.c        : epoll push ppusr[0]: 0x180e070
9537.087059193:imtcp.c        : tcpsrv: ready to process 1 event entries
9537.087062349:imtcp.c        : tcpsrv: processing item 1, pUsr 0x180e070, bAbortConn
9537.087065363:imtcp.c        : New connect on NSD 0x18219a0.
9537.087078854:imtcp.c        : dnscache: entry (nil) found
9537.087174947:imtcp.c        : adding nsdpoll entry 0/0x7f4e5c002af0, sock 11
9537.087182220:imtcp.c        : New session created with NSD 0x7f4e5c002af0.
9537.087185460:imtcp.c        : doing epoll_wait for max 128 events
9537.087612939:imtcp.c        : epoll returned 1 entries
9537.087618865:imtcp.c        : epoll push ppusr[0]: 0x7f4e5c002af0
9537.087621850:imtcp.c        : tcpsrv: ready to process 1 event entries
9537.087624642:imtcp.c        : tcpsrv: processing item 0, pUsr 0x7f4e5c002af0, bAbortConn
9537.087636869:imtcp.c        : netstream 0x7f4e5c002a20 with new data
9537.087649100:imtcp.c        : doing epoll_wait for max 128 events
9537.087705735:imtcp.c        : epoll returned 1 entries
9537.087710379:imtcp.c        : epoll push ppusr[0]: 0x7f4e5c002af0
9537.087713159:imtcp.c        : tcpsrv: ready to process 1 event entries
9537.087715744:imtcp.c        : tcpsrv: processing item 0, pUsr 0x7f4e5c002af0, bAbortConn
9537.087718426:imtcp.c        : netstream 0x7f4e5c002a20 with new data
9537.087722700:imtcp.c        : removing nsdpoll entry 0/0x7f4e5c002af0, sock 11
9537.087742477:imtcp.c        : doing epoll_wait for max 128 events

并且进程流程显示rsyslog触摸的唯一文件是/etc/resolv.conf/etc/hosts但它确实接收了我的日志行

iznogoud@haproxylogs-xen02:~$ sudo strace -p $(cat /var/run/rsyslogd.pid) -f                                                                                                                                       
Process 7463 attached with 9 threads
[pid  7471] futex(0x7fead1c25004, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
[pid  7470] futex(0x7fead1c24f9c, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
[pid  7469] futex(0x7fead1c24f34, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
[pid  7468] futex(0x7fead1c24ecc, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
[pid  7467] futex(0x84967c, FUTEX_WAIT_PRIVATE, 11, NULL <unfinished ...>
[pid  7466] epoll_wait(8,  <unfinished ...>
[pid  7465] read(4,  <unfinished ...>
[pid  7464] select(4, [3], NULL, NULL, NULL <unfinished ...>
[pid  7463] select(1, NULL, NULL, NULL, {577, 636835}

 <unfinished ...>
[pid  7466] <... epoll_wait resumed> {{EPOLLIN, {u32=3288344160, u64=140646287418976}}}, 128, -1) = 1
[pid  7466] accept(6, {sa_family=AF_INET6, sin6_port=htons(37578), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, [28]) = 13
[pid  7466] rt_sigprocmask(SIG_BLOCK, [HUP], ~[KILL STOP TTIN RTMIN RT_1], 8) = 0
[pid  7466] open("/etc/resolv.conf", O_RDONLY|O_CLOEXEC) = 14
[pid  7466] fstat(14, {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
[pid  7466] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fead4506000
[pid  7466] read(14, "nameserver 10.75.164.1\n", 4096) = 23
[pid  7466] read(14, "", 4096)          = 0
[pid  7466] close(14)                   = 0
[pid  7466] munmap(0x7fead4506000, 4096) = 0
[pid  7466] uname({sys="Linux", node="haproxylogs-xen02", ...}) = 0
[pid  7466] open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 14
[pid  7466] fstat(14, {st_mode=S_IFREG|0644, st_size=201, ...}) = 0
[pid  7466] mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fead4506000
[pid  7466] read(14, "127.0.0.1\tlocalhost\n10.75.164.12"..., 4096) = 201
[pid  7466] close(14)                   = 0
[pid  7466] munmap(0x7fead4506000, 4096) = 0
[pid  7466] rt_sigprocmask(SIG_SETMASK, ~[KILL STOP TTIN RTMIN RT_1], NULL, 8) = 0
[pid  7466] fcntl(13, F_GETFL)          = 0x2 (flags O_RDWR)
[pid  7466] fcntl(13, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid  7466] epoll_ctl(8, EPOLL_CTL_ADD, 13, {EPOLLIN, {u32=3288345072, u64=140646287419888}}) = 0
[pid  7466] epoll_wait(8, {{EPOLLIN, {u32=3288345072, u64=140646287419888}}}, 128, -1) = 1

# Rsyslog received my test logline as shown below (truncated)
[pid  7466] recvfrom(13, "<5>Jul 10 18:02:01 iznogoud: Mon"..., 131072, MSG_DONTWAIT, NULL, NULL) = 58

[pid  7466] gettimeofday({1499709721, 740339}, NULL) = 0
[pid  7466] epoll_wait(8, {{EPOLLIN, {u32=3288345072, u64=140646287419888}}}, 128, -1) = 1
[pid  7466] recvfrom(13, "", 131072, MSG_DONTWAIT, NULL, NULL) = 0
[pid  7466] epoll_ctl(8, EPOLL_CTL_DEL, 13, 7feac40029f0) = 0
[pid  7466] close(13)                   = 0
[pid  7466] epoll_wait(8,  <unfinished ...>
[pid  7464] <... select resumed> )      = 1 (in [3])

我遗漏了一些明显的东西?

谢谢:)

1 个答案:

答案 0 :(得分:1)

升级rsyslog 8.23修复了问题

rsyslogd 8.23.0, compiled with:
    PLATFORM:                               x86_64-pc-linux-gnu
    PLATFORM (lsb_release -d):
    FEATURE_REGEXP:                         Yes
    GSSAPI Kerberos 5 support:              Yes
    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
    Number of Bits in RainerScript integers: 64