[openstack-dev] Fw: [Openstack-dev] [Fuel] [Oslo] Add APP-NAME (RFC5424) for Oslo syslog logging

Bogdan Dobrelya bdobrelia at mirantis.com
Mon Feb 3 14:58:40 UTC 2014


On 12/20/2013 08:21 PM, Bogdan Dobrelya wrote:
> *Preamble*
> Hi stackers, I was trying to implement correct APP-NAME tags for remote
> logging in Fuel for Openstack, and faced the
> https://bugs.launchpad.net/nova/+bug/904307 issue. There are no logging
> options in Python 2.6/2.7 to address this APP-NAME in logging formats or
> configs (log_format, log_config(_append)).
> 
> Just look at the log file names, and you will understand me:
> cinder-cinder.api.extensions.log
> cinder-cinder.db.sqlalchemy.session.log
> cinder-cinder.log
> cinder-cinder.openstack.common.rpc.common.log
> cinder-eventlet.wsgi.server.log
> cinder-keystoneclient.middleware.auth_token.log
> glance-eventlet.wsgi.server.log
> glance-glance.api.middleware.cache.log
> glance-glance.api.middleware.cache_manage.log
> glance-glance.image_cache.log
> glance-keystoneclient.middleware.auth_token.log
> keystone-root.log
> nova-keystoneclient.middleware.auth_token.log
> nova-nova.api.openstack.compute.extensions.log
> nova-nova.api.openstack.extensions.log
> nova-nova.ec2.wsgi.server.log
> nova-nova.log
> nova-nova.metadata.wsgi.server.log
> nova-nova.network.driver.log
> nova-nova.osapi_compute.wsgi.server.log
> nova-nova.S3.log
> quantum-eventlet.wsgi.server.log
> quantum-keystoneclient.middleware.auth_token.log
> quantum-quantum.api.extensions.log
> quantum-quantum.manager.log
> quantum-quantum.openstack.common.rpc.amqp.log
> quantum-quantum.plugins.openvswitch.ovs_quantum_plugin.log
> 
> But I actually want to see something like this:
> cinder-api.log
> cinder-volume.log
> glance-api.log
> glance-manage.log
> glance-registry.log
> keystone-all.log
> nova-api.log
> nova-conductor.log
> nova-consoleauth.log
> nova-objectstore.log
> nova-scheduler.log
> ...and so on.
> 
> Another words, logging should honor RFC3164 & RFC5424, here are some quotes:
> "The MSG part has two fields known as the TAG field and the CONTENT
> field. The value in the TAG field will be the name of the program or
> process that generated the message. The CONTENT contains the details of
> the message..."
> "The APP-NAME field SHOULD identify the device or application that
> originated the message..."
> 
> I see two solutions for this issue.
> 
> *Solution 1*
> The one of possible solutions is to use new key for log_format (i.e.
> %(binary_name)s) to extract application/service name for log records.
> The implementation could be like patch #4:
> https://review.openstack.org/#/c/63094/4
> And the log_format could be like this:
> log_format=%(asctime)s %(binary_name)s %(levelname)s: %(name)s: %(message)s
> 
> The patch is applicable to other Openstack services, which did not moved
> to Oslo yet.
> I tested it with nova services, and all services can start with
> log_format using %(binary_name)s, but nova-api. Looks like
> /keystoneclient/middleware/auth_token.py is unhappy with this patch, see
> the trace http://paste.openstack.org/show/55519/
> 
> *Solution 2*
> The other and only option I can suggest, is to backport ‘ident’ from
> python 3.3, see http://hg.python.org/cpython/rev/6baa90fa2b6d
> The implementation could be like this:
> https://review.openstack.org/#/c/63094
> To ensure we will have APP-NAME in message we can set use_syslog = true
> and check the results.
> If we’re using log_config_append, the formatters and handlers could be
> like this:
> [formatter_normal]
> format = %(levelname)s: %(message)s
> [handler_production]
> class = openstack.common.log.RFCSysLogHandler
> level = INFO
> formatter = normal
> args = ('/dev/log', handlers.SysLogHandler.LOG_LOCAL6)
> 
> The patch is also applicable to other Openstack services, which did not
> moved to Oslo yet.
> For syslog logging, the application/service/process name (aka APP-NAME,
> see RFC5424) would be added before the MSG part, right after it has been
> formatted, and there is no need to use any special log_format settings
> as well.
> 
> *Conclusion*
> I vote for implement solution 2 for Oslo logging, and for those
> Openstack services, which don’t use Oslo for logging yet. That would not
> require any changes outside of the Openstack modules, thus looks like a
> good compromise for backporting ‘ident’ feature for APP-NAME tags from
> Python 3.3. What do you think?
> 

Hi, stackers.
FYI, the patch https://bugs.launchpad.net/oslo/+bug/904307 had been
merged into Oslo-incubator to implement Option 2 (see above).

According to the docs provided, to honor RFC5424 APP-NAME for syslog
messages, the existing syslog format is DEPRECATED during I and will be
removed in J.

New use_syslog_rfc_format option was introduced:
(Optional) use syslog rfc5424 format for logging. If enabled, will add
APP-NAME (RFC5424) before the MSG part of the syslog message.  The old
format without APP-NAME is deprecated in I, and will be removed in J.

1) Please consider to sync the patch to any affected Openstack projects
(i.e. all projects with use_syslog option in their configs) to ensure
the application/service name will be present in the syslog messages, if
use_syslog_rfc_format = true.

2) Please consider to add this info to the Syslog section of the
https://wiki.openstack.org/wiki/LoggingStandards

> -- 
> Best regards,
> Bogdan Dobrelya,
> Researcher TechLead, Mirantis, Inc.
> +38 (066) 051 07 53
> Skype bogdando_at_yahoo.com
> Irc #bogdando
> 38, Lenina ave.
> Kharkov, Ukraine
> www.mirantis.com
> www.mirantis.ru
> bdobrelia at mirantis.com
> 


-- 
Best regards,
Bogdan Dobrelya,
Researcher TechLead, Mirantis, Inc.
+38 (066) 051 07 53
Skype bogdando_at_yahoo.com
Irc #bogdando
38, Lenina ave.
Kharkov, Ukraine
www.mirantis.com
www.mirantis.ru
bdobrelia at mirantis.com



More information about the OpenStack-dev mailing list