osprofiler package¶
Subpackages¶
- osprofiler.cmd package
- osprofiler.drivers package- Submodules
- osprofiler.drivers.base module
- osprofiler.drivers.elasticsearch_driver module
- osprofiler.drivers.jaeger module
- osprofiler.drivers.loginsight module
- osprofiler.drivers.messaging module
- osprofiler.drivers.mongodb module
- osprofiler.drivers.otlp module
- osprofiler.drivers.redis_driver module
- osprofiler.drivers.sqlalchemy_driver module
- Module contents
 
Submodules¶
osprofiler.exc module¶
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.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.opts module¶
osprofiler.profiler module¶
- 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.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.requests module¶
osprofiler.sqlalchemy module¶
- osprofiler.sqlalchemy.add_tracing(sqlalchemy, engine, name, hide_result=True)[source]¶
- Add tracing to all sqlalchemy calls. 
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. 
- 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. 
