温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

openstack如何使用rsyslog转发日志

发布时间:2021-11-10 18:27:50 来源:亿速云 阅读:182 作者:柒染 栏目:云计算

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

系统:ubuntu14.04

openstack版本: juno

一,在nova中启用rsyslog

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

[DEFAULT]
use_syslog = True
syslog_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 restart
service 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配置后记得重启服务。

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI