osprofiler package

osprofiler package

Subpackages

Submodules

osprofiler.exc module

exception osprofiler.exc.CommandError(message=None)[source]

Bases: Exception

Invalid usage of CLI.

exception osprofiler.exc.LogInsightAPIError[source]

Bases: Exception

exception osprofiler.exc.LogInsightLoginTimeout[source]

Bases: Exception

osprofiler.initializer module

osprofiler.initializer.init_from_conf(conf, context, project, service, host, **kwargs)[source]

Initialize notifier from service configuration

Parameters
  • conf – service configuration

  • context – request context

  • project – project name (keystone, cinder etc.)

  • service – service name that will be profiled

  • host – hostname or host IP address that the service will be running on.

  • kwargs – other arguments for notifier creation

osprofiler.notifier module

osprofiler.notifier.clear_notifier_cache()[source]
osprofiler.notifier.create(connection_string, *args, **kwargs)[source]

Create notifier based on specified plugin_name

Parameters
  • connection_string – connection string which specifies the storage driver for notifier

  • args – args that will be passed to the driver’s __init__ method

  • kwargs – kwargs that will be passed to the driver’s __init__ method

Returns

Callable notifier method

osprofiler.notifier.get()[source]

Returns notifier callable.

osprofiler.notifier.notify(info)[source]

Passes the profiling info to the notifier callable.

Parameters

info – dictionary with profiling information

osprofiler.notifier.set(notifier)[source]

Service that are going to use profiler should set callable notifier.

Callable notifier is instance of callable object, that accept exactly one argument “info”. “info” - is dictionary of values that contains profiling information.

osprofiler.opts module

osprofiler.opts.list_opts()[source]
osprofiler.opts.set_defaults(conf, enabled=None, trace_sqlalchemy=None, hmac_keys=None, connection_string=None, es_doc_type=None, es_scroll_time=None, es_scroll_size=None, socket_timeout=None, sentinel_service_name=None)[source]

osprofiler.profiler module

class osprofiler.profiler.Trace(name, info=None)[source]

Bases: object

class osprofiler.profiler.TracedMeta(cls_name, bases, attrs)[source]

Bases: type

Metaclass to comfortably trace all children of a specific class.

Possible usage:

>>>  class RpcManagerClass(object, metaclass=profiler.TracedMeta):
>>>      __trace_args__ = {'name': 'rpc',
>>>                        'info': None,
>>>                        'hide_args': False,
>>>                        'hide_result': True,
>>>                        'trace_private': False}
>>>
>>>      def my_method(self, some_args):
>>>          pass
>>>
>>>      def my_method2(self, some_arg1, some_arg2, kw=None, kw2=None)
>>>          pass

Adding of this metaclass requires to set __trace_args__ attribute to the class we want to modify. __trace_args__ is the dictionary with one mandatory key included - “name”, that will define name of action to be traced - E.g. wsgi, rpc, db, etc…

osprofiler.profiler.clean()[source]
osprofiler.profiler.get()[source]

Get profiler instance.

Returns

Profiler instance or None if profiler wasn’t inited.

osprofiler.profiler.init(hmac_key, base_id=None, parent_id=None)[source]

Init profiler instance for current thread.

You should call profiler.init() before using osprofiler. Otherwise profiler.start() and profiler.stop() methods won’t do anything.

Parameters
  • hmac_key – secret key to sign trace information.

  • base_id – Used to bind all related traces.

  • parent_id – Used to build tree of traces.

Returns

Profiler instance

osprofiler.profiler.start(name, info=None)[source]

Send new start notification if profiler instance is presented.

Parameters
  • name – The name of action. E.g. wsgi, rpc, db, etc..

  • info – Dictionary with extra trace information. For example in wsgi it can be url, in rpc - message or in db sql - request.

osprofiler.profiler.stop(info=None)[source]

Send new stop notification if profiler instance is presented.

osprofiler.profiler.trace(name, info=None, hide_args=False, hide_result=True, allow_multiple_trace=True)[source]

Trace decorator for functions.

Very useful if you would like to add trace point on existing function:

>> @profiler.trace(“my_point”) >> def my_func(self, some_args): >> #code

Parameters
  • name – The name of action. E.g. wsgi, rpc, db, etc..

  • info – Dictionary with extra trace information. For example in wsgi it can be url, in rpc - message or in db sql - request.

  • hide_args – Don’t push to trace info args and kwargs. Quite useful if you have some info in args that you wont to share, e.g. passwords.

  • hide_result – Boolean value to hide/show function result in trace. True - hide function result (default). False - show function result in trace.

  • allow_multiple_trace – If the wrapped function has already been traced either allow the new trace to occur or raise a value error denoting that multiple tracing is not allowed (by default allow).

osprofiler.profiler.trace_cls(name, info=None, hide_args=False, hide_result=True, trace_private=False, allow_multiple_trace=True, trace_class_methods=False, trace_static_methods=False)[source]

Trace decorator for instances of class .

Very useful if you would like to add trace point on existing method:

>> @profiler.trace_cls(“rpc”) >> RpcManagerClass(object): >> >> def my_method(self, some_args): >> pass >> >> def my_method2(self, some_arg1, some_arg2, kw=None, kw2=None) >> pass >>

Parameters
  • name – The name of action. E.g. wsgi, rpc, db, etc..

  • info – Dictionary with extra trace information. For example in wsgi it can be url, in rpc - message or in db sql - request.

  • hide_args – Don’t push to trace info args and kwargs. Quite useful if you have some info in args that you wont to share, e.g. passwords.

  • hide_result – Boolean value to hide/show function result in trace. True - hide function result (default). False - show function result in trace.

  • trace_private – Trace methods that starts with “_”. It wont trace methods that starts “__” even if it is turned on.

  • trace_static_methods – Trace staticmethods. This may be prone to issues so careful usage is recommended (this is also why this defaults to false).

  • trace_class_methods – Trace classmethods. This may be prone to issues so careful usage is recommended (this is also why this defaults to false).

  • allow_multiple_trace – If wrapped attributes have already been traced either allow the new trace to occur or raise a value error denoting that multiple tracing is not allowed (by default allow).

osprofiler.sqlalchemy module

osprofiler.sqlalchemy.add_tracing(sqlalchemy, engine, name, hide_result=True)[source]

Add tracing to all sqlalchemy calls.

osprofiler.sqlalchemy.disable()[source]

Disable tracing of all DB queries. Reduce a lot size of profiles.

osprofiler.sqlalchemy.enable()[source]

add_tracing adds event listeners for sqlalchemy.

osprofiler.sqlalchemy.handle_error(exception_context)[source]

Handle SQLAlchemy errors

osprofiler.sqlalchemy.wrap_session(sqlalchemy, sess)[source]

osprofiler.web module

class osprofiler.web.WsgiMiddleware(application, hmac_keys=None, enabled=False, **kwargs)[source]

Bases: object

WSGI Middleware that enables tracing for an application.

classmethod factory(global_conf, **local_conf)[source]
osprofiler.web.X_TRACE_HMAC = 'X-Trace-HMAC'

Http header that will contain the traces data hmac (that will be validated).

osprofiler.web.X_TRACE_INFO = 'X-Trace-Info'

Http header that will contain the needed traces data.

osprofiler.web.disable()[source]

Disable middleware.

This is the alternative way to disable middleware. It will be used to be able to disable middleware via oslo.config.

osprofiler.web.enable(hmac_keys=None)[source]

Enable middleware.

osprofiler.web.get_trace_id_headers()[source]

Adds the trace id headers (and any hmac) into provided dictionary.

Module contents

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.