千家信息网

openstack如何使用rsyslog转发日志

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,openstack如何使用rsyslog转发日志,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。系统:ubuntu14.0
千家信息网最后更新 2024年11月23日openstack如何使用rsyslog转发日志

openstack如何使用rsyslog转发日志,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

系统:ubuntu14.04

openstack版本: juno

一,在nova中启用rsyslog

1. 修改 /etc/nova/nova.conf

[DEFAULT]use_syslog = Truesyslog_log_facility = LOG_LOCAL0


2. 修改nova代码。

2.1首先确认nova代码的位置

python -c 'import nova;print nova.__path__'['/usr/lib/python2.7/dist-packages/nova']

2.2进入nova目录

cd /usr/lib/python2.7/dist-packages/nova

2.3修改代码

vim openstack/common/log.py

2.3.1 搜索"use-syslog-rfc-format"关键字,将配置中的default=False改为True,启用rfc格式的日志,如果不启用的话,不会把发送日志的程序名打印出来,该配置在配置文件中修改无效,所以直接改代码中的默认值。修改后如下:

    cfg.BoolOpt('use-syslog-rfc-format',                # TODO(bogdando) remove or use True after existing                #    syslog format deprecation in J                default=True,                help='(Optional) Enables or disables syslog rfc5424 format '                     'for logging. If enabled, prefixes the MSG part of the '                     'syslog message with APP-NAME (RFC5424). The '                     'format without the APP-NAME is deprecated in I, '                     'and will be removed in J.'),

2.3.2 搜索"if CONF.use_syslog"关键字,往下几行。

(1)将syslog = RFCSysLogHandler(facility=facility)改为syslog = RFCSysLogHandler(address='/dev/log',facility=facility)

(2)将syslog = logging.handlers.SysLogHandler(facility=facility)改为syslog = logging.handlers.SysLogHandler(address='/dev/log',facility=facility)

最终结果如下:

    if CONF.use_syslog:        try:            facility = _find_facility_from_conf()            # TODO(bogdando) use the format provided by RFCSysLogHandler            #   after existing syslog format deprecation in J            if CONF.use_syslog_rfc_format:                syslog = RFCSysLogHandler(address='/dev/log',facility=facility)            else:                syslog = logging.handlers.SysLogHandler(address='/dev/log',facility=facility)                #syslog = logging.handlers.SysLogHandler(facility=facility)            log_root.addHandler(syslog)        except socket.error:            log_root.error('Unable to add syslog handler. Verify that syslog'                           'is running.')

二, 配置rsyslog

1. 新增rsyslog配置。rsyslog在ubuntu14.04中已经安装。

#新增配置文件echo 'local0.*    @@192.168.100.100:514' > /etc/rsyslog.d/60-nova.conf

效果是将本地local0.*的日志转发到远程的192.168.100.100:514。

local0对应nova.conf中的LOG_LOCAL0,后面的.*表示转发所有级别的日志,如果只想传送错入日志,可以改成local0.error,最后的@@192.168.100.100:514表示将本地的rsyslog转发到远程日志服务器。具体参考rsyslog官方文档。

local0.*    @@192.168.100.100:514

2, 重启服务器

service rsyslog restartservice nova-compute restart

3. 验证rsyslog有没有配置成功。在shell中执行如下命令,正常的话结果会在192.168.100.100显示出来。

logger -p local0.debug "test rsyslog"

三, 总结

整个日志的流程是(1)nova发送日志给本地的rsyslog服务器。(2)本地的rsyslog接收日志,并转发到远程的日志服务器192.168.100.100。(3)远程的日志服务器可以使rsyslog,也可以是其他的日志服务器如graylog,记得打开远程日志服务器的tcp接收端口。

openstack其他服务的配置也是类似的,唯一的区别是定位代码的位置,如过要修改cinder的话,可以这样确定代码位置:

python -c 'import cinder;print cinder.__path__'

修改openstack或rsyslog配置后记得重启服务。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

0