使用 Init-Script 时,rsyslogd 无法在 Ubuntu 14.04.4 LTS 上正确启动

使用 Init-Script 时,rsyslogd 无法在 Ubuntu 14.04.4 LTS 上正确启动

不知何故,我的 rsyslogd 初始化脚本不起作用。我尝试启用 rsyslogd 以接受 udp:514 上的日志数据。

如果我通过 Init-Script 启动 rsyslogd,则不会转发任何日志数据。甚至 syslog 也不会转发!而且不会绑定任何端口。

netstat -plantu | grep 514 | grep LISTEN

ps -ef | grep sysl
root      7330     1  0 Jun21 ?        00:00:00 /sbin/mdadm --monitor --pid-file /run/mdadm/monitor.pid --daemonise --scan --syslog
root     16448 26559  0 10:35 pts/3    00:00:00 grep --color=auto sysl
root     19573 14931  0 09:55 pts/5    00:00:00 tail -f /var/log/syslog

如果我以 root 身份通过控制台启动 rsyslogd,一切都运行正常。

root@server:/etc# which rsyslogd 
/usr/sbin/rsyslogd

root@server:/etc# rsyslogd
... {Output trunnked}
2736.651185540:7fb7b0357780: Checking pidfile '/var/run/rsyslogd.pid'.

root@server:/etc netstat -plantu | grep 514 | grep udp
    udp        0      0 127.0.0.1:514           0.0.0.0:*                           22762/rsyslogd 

/etc/rsyslog.conf

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#           For more information see
#           /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf

#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

# Enable non-kernel facility klog messages
$KLogPermitNonKernelFacility on

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.

$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$DebugFile /var/log/rsyslog.log
$DebugLevel 2

$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

/etc/rsyslog.d/49-haproxy.conf

local1.*    /var/log/haproxy.log
local0.*    /var/log/haproxy-details.log

对于缺失的 /dev/xconsole (https://askubuntu.com/questions/108924/missing-dev-xconsole-causes-rsyslog-to-stop-as-well-as-all-other-services我修改了文件 /etc/rsyslog.d/50-默认.conf

#  Default rules for rsyslog.
#
#           For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*         /var/log/auth.log
*.*;auth,authpriv.none,local0.none,local1.none      -/var/log/syslog
#cron.*             /var/log/cron.log
#daemon.*           -/var/log/daemon.log
kern.*              -/var/log/kern.log
#lpr.*              -/var/log/lpr.log
mail.*              -/var/log/mail.log
#user.*             -/var/log/user.log
#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info          -/var/log/mail.info
#mail.warn          -/var/log/mail.warn
mail.err            /var/log/mail.err

#
# Logging for INN news system.
#
news.crit           /var/log/news/news.crit
news.err            /var/log/news/news.err
news.notice         -/var/log/news/news.notice

#
# Some "catch-all" log files.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
local0,local1,mail,news.none        -/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg                                :omusrmsg:*

#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
#   news.=crit;news.=err;news.=notice;\
#   *.=debug;*.=info;\
#   *.=notice;*.=warn   /dev/tty8

# The named pipe /dev/xconsole is for the `xconsole' utility.  To use it,
# you must invoke `xconsole' with the `-file' option:
# 
#    $ xconsole -file /dev/xconsole [...]
#
# NOTE: adjust the list below, or you'll go crazy if you have a     reasonably
#      busy site..
#
#daemon.*;mail.*;\
#   news.err;\
#   *.=debug;*.=info;\
#   *.=notice;*.=warn   |/dev/xconsole

根据Rsyslogd 没有监听端口,我修改了/etc/apparmor.d/usr.sbin.rsyslogd

# Last Modified: Sun Sep 25 08:58:35 2011
#include <tunables/global>

# Debugging the syslogger can be difficult if it can't write to the file
# that the kernel is logging denials to. In these cases, you can do the
# following:
# watch -n 1 'dmesg | tail -5'

/usr/sbin/rsyslogd {
  #include <abstractions/base>
  #include <abstractions/nameservice>

  network inet dgram,
  network inet6 dgram,
  network inet stream,
  network inet6 stream,

  capability sys_tty_config,
  capability dac_override,
  capability dac_read_search,
  capability setuid,
  capability setgid,
  capability sys_nice,
  capability syslog,

  # rsyslog configuration
  /etc/rsyslog.conf r,
  /etc/rsyslog.d/ r,
  /etc/rsyslog.d/** r,
  /{,var/}run/rsyslogd.pid rwk,
  /var/spool/rsyslog/ r,
  /var/spool/rsyslog/** rwk,

  /usr/lib{,32,64}/rsyslog/*.so mr,

  /dev/tty*                     rw,
  /dev/xconsole                 rw,
  @{PROC}/kmsg                  r,

  /dev/log                      rwl,
  /var/lib/*/dev/log            wl,
  /var/spool/postfix/dev/log    wl,

  # 'r' is needed when using imfile
  /var/log/**                   rw,

  # Add these for mysql support
  #/etc/mysql/my.cnf r,
  #/{,var/}run/mysqld/mysqld.sock rw,

  # Add thes for postgresql support
  ##include <abstractions/openssl>
  ##include <abstractions/ssl_certs>
  #/{,var/}run/postgresql/.s.PGSQL.*[0-9] rw,

  # Site-specific additions and overrides. See local/README for     details.
  #include <local/usr.sbin.rsyslogd>
}

Apparmor 状态

root@server:~# apparmor_status 
apparmor module is loaded.
9 profiles are loaded.
9 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/libvirt/virt-aa-helper
   /usr/sbin/libvirtd
   /usr/sbin/ntpd
   libvirt-7715abf7-991b-4b74-90bf-14ed26914d3b
   libvirt-a4d428db-ca82-45b4-9f27-af7564c8ce78
   libvirt-ecede722-e23c-4f66-9194-3ddd4522b7d8
0 profiles are in complain mode.
5 processes have profiles defined.
5 processes are in enforce mode.
   /usr/sbin/libvirtd (1159) 
   /usr/sbin/ntpd (1497) 
   libvirt-7715abf7-991b-4b74-90bf-14ed26914d3b (17524) 
   libvirt-a4d428db-ca82-45b4-9f27-af7564c8ce78 (8124) 
   libvirt-ecede722-e23c-4f66-9194-3ddd4522b7d8 (30950) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

root@server:~# ls -lah /etc/apparmor.d/disable/usr.sbin.rsyslogd 
lrwxrwxrwx 1 root root 33 Mar 17  2014 /etc/apparmor.d/disable/usr.sbin.rsyslogd -> /etc/apparmor.d/usr.sbin.rsyslogd

环境信息:

root@server:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:    14.04
Codename:   trusty


root@server:~# rsyslogd -v
rsyslogd 7.4.4, compiled with:
    FEATURE_REGEXP:             Yes
    FEATURE_LARGEFILE:          No
    GSSAPI Kerberos 5 support:      Yes
    FEATURE_DEBUG (debug build, slow code): No
    32bit Atomic operations supported:  Yes
    64bit Atomic operations supported:  Yes
    Runtime Instrumentation (slow code):    No
    uuid support:               Yes

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

有什么想法可以说服 rsyslog 正确通过 init 启动吗?

答案1

* 更新 *我注释掉了所有条目在 /etc/默认/rsyslog 中

# Options for rsyslogd
# -x disables DNS lookups for remote messages
# See rsyslogd(8) for more details
#$ModLoad imudp
#$UDPServerRun 514
#RSYSLOGD_OPTIONS=""

现在使用“service rsyslog start”重新启动就可以了。

root@server:~# netstat -plantu | grep 514 | grep udp
udp 0 0 127.0.0.1:514 0.0.0.0:* 24632/rsyslogd

相关内容