首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停靠容器内的rsyslog => "rsyslogd未运行...失败“

停靠容器内的rsyslog => "rsyslogd未运行...失败“
EN

Stack Overflow用户
提问于 2016-03-01 13:59:23
回答 2查看 6.9K关注 0票数 7

我在docker容器中运行rsyslog,以便将UDP消息发送到logstash。

当我登录到docker容器,并输入:

代码语言:javascript
复制
service rsyslog status

显示:

代码语言:javascript
复制
rsyslogd is not running ... failed! 

但是,当我在容器中时,如果我键入:

代码语言:javascript
复制
service rsyslog start 

它完美地启动了,没有错误,也没有真正的迹象表明为什么它在开始时失败了

我不明白为什么它失败了!

*除了允许imfile的模块之外,rsyslog conf文件尚未修改。rsyslog.conf如下:

代码语言:javascript
复制
#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#################
#### MODULES ####
#################
module(load="imfile" PollingInterval="10")
module(load="imuxsock" )  # provides support for local system logging
module(load="immark")  #provides --MARK-- message capability

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

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

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0644
$DirCreateMode 0755
$Umask 0022

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

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


###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.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;\
        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

*我有一个启动rsyslog的脚本文件

代码语言:javascript
复制
if [[ -z "$(pgrep rsyslog)" ]]; then
  echo "starting rsyslog"
  service rsyslog start
fi

我的conf文件如下:

代码语言:javascript
复制
##Get Nginx Error Logs
$InputFileName /var/log/nginx/error.log
$InputFileTag http-error
$InputFileStateFile stat-nginx-error
$InputFileSeverity error
$InputFileFacility local7
$InputRunFileMonitor

#GRAB PHP-FPM ACCESS LOGS
$InputFileName /var/log/php-fpm/access_log
$InputFileTag php-fpm-access
$InputFileStateFile stat-php-fpm-access
$InputFileSeverity info
$InputFileFacility local7
$InputRunFileMonitor

#GRAB PHP-FPM ERROR LOGS
$InputFileName /var/log/php-fpm/error_log
$InputFileTag php-fpm-error
$InputFileStateFile stat-php-fpm-error
$InputFileSeverity error
$InputFileFacility local7
$InputRunFileMonitor

#Json Template

template(name="json_temp" type="list")
  { constant(value="{")
    constant(value="\"@timestamp\":\"")         property(name="timegenerated" dateFormat="rfc3339")
    constant(value="\",\"message\":\"")         property(name="msg")
    constant(value="\",\"severity_label\":\"")  property(name="syslogseverity-text")
    constant(value="\",\"severity\":\"")        property(name="syslogseverity")
    constant(value="\",\"facility_label\":\"")  property(name="syslogfacility-text")
    constant(value="\",\"facility\":\"")        property(name="syslogfacility")
    constant(value="\",\"program\":\"")         property(name="programname")
    constant(value="\",\"pid\":\"")             property(name="procid")
    constant(value="\",\"rawmsg\":\"")          property(name="rawmsg")
    constant(value="\",\"syslogtag\":\"")       property(name="syslogtag")
    constant(value="\"}\n")
  }

if $programname == 'http-error' then @ip.address:port;json_temp
if $programname == 'http-error' then stop
if $programname == 'php-fpm-access' then @ip.address:port;json_temp
if $programname == 'php-fpm-access' then stop
if $programname == 'php-fpm-error' then @ip.address:port;json_temp
if $programname == 'php-fpm-error' then stop


*.* @ip.address:port;json_temp

任何帮助都是很棒的,因为我不明白为什么它不能启动。

干杯

EN

回答 2

Stack Overflow用户

发布于 2020-07-06 15:05:39

这是我在docker container(Centos7)中的rsyslog.conf:

代码语言:javascript
复制
$> cat /etc/rsyslog.conf |grep -vE '^$|^#'
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging off
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

我还更改了/etc/rsyslog.d/listen.conf

代码语言:javascript
复制
#$SystemLogSocketName /run/systemd/journal/syslog

然后

代码语言:javascript
复制
$> rsyslogd -n 

谢谢@elinax

欲了解更多信息,请访问https://www.projectatomic.io/blog/2014/09/running-syslog-within-a-docker-container/

票数 3
EN

Stack Overflow用户

发布于 2019-02-01 02:51:11

我们在CentOS 7.3.1611上创建的docker17.03.2-ce镜像上遇到了同样的问题。解决方案是根据this文档验证/etc/rsyslog.conf。基本上,在/etc/rsyslog.conf

  • Remove $ModLoad imjournal
  • $OmitLocalLogging to off
  • 确保$ModLoad imuxsock is imjournal out:$IMJournalStateFile imjournal

最后,请注意,运行rsyslogd或其他任何东西都是在容器内运行的程序的责任。它不会自动启动。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35715720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档