2017-07-10 30 views
0

我有一个非常基本的用例:使rsyslog侦听给定的TCP端口并将每一行接收写入指定的文本文件。 Rsyslog在端口上正确侦听,并使用logger + ngrep进行测试,结果显示TCP部分的一切正常。但是rsyslog从不会在指定的文件中写入任何内容。我有点困惑,我以前从未遇到过这个问题。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 

而且使用strace-ING的过程中显示的唯一文件rsyslog现在倒是有/etc/resolv.conf/etc/hosts当我得到,但它确实收到了我的日志行虽然

[email protected]:~$ 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]) 

我错过了一些明显的东西?

谢谢:)

回答

0

升级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