emplocity-nameko-zipkin
Zipkin tracing for nameko framework
Install
pip install emplocity-nameko-zipkin
Usage
Services
from nameko_zipkin import Zipkin
from nameko.rpc import rpc
class Service:
name = 'service'
zipkin = Zipkin() # Dependency provider injects py_zipkin.zipkin.zipkin_span object
@rpc
def method(self):
assert self.zipkin.service_name == Service.name
assert self.zipkin.span_name == Service.method.__name__
Standalone rpc
from py_zipkin import zipkin
from nameko_zipkin import monkey_patch
from nameko_zipkin.transport import HttpHandler
from nameko.standalone.rpc import ClusterRpcProxy
handler = HttpHandler('http://localhost:9411/api/v1/spans').handle
monkey_patch(handler)
with zipkin.zipkin_server_span('RootService',
'RootMethod',
sample_rate=100.,
transport_handler=handler):
with ClusterRpcProxy({'AMQP_URI': "pyamqp://guest:guest@localhost"}) as proxy:
proxy.service.method()
How it works
- monkey_patch patches MethodProxy class to initialize a client span, it's called in dependency provider setup method
- On service method call a server span is created
- Trace parameters (trace_id, parent_span_id, etc.) are passed through context data and are accessible in py_zipkin.thread_local.get_zipkin_attrs
- If there are no parameters, request isn't traced
- Child service calls are also supported
- Trace results are reported through handler classes in nameko_zipkin.transport
Configuration
ZIPKIN section must be added to nameko service config.yaml
ZIPKIN:
HANDLER: HttpHandler
HANDLER_PARAMS:
url: http://localhost:9411/api/v1/spans
Test it out locally
We've provided an example docker-compose based stack that includes a nameko
service and a Zipkin instance. To try it out, run docker-compose up in the
root directory of the project. This will bring up three services: RabbitMQ
(required by nameko), Zipkin, and an example Python service with both RPC
and HTTP endpoints.
Navigate to http://localhost:8000 to visit the example service, and if you then visit Zipkin dashboard (typically at http://localhost:9411), you should see some traces there!
Planned changes
- Kafka transport support
- Custom handlers support in config.yaml ('my_module.MyHandler')
Metadata
Release files for emplo-nameko-zipkin 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| emplo-nameko-zipkin-0.1.8.tar.gz | 8.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| emplo_nameko_zipkin-0.1.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.2 kB
Release files / emplo-nameko-zipkin-0.1.8.tar.gz
| Download URL | emplo-nameko-zipkin-0.1.8.tar.gz |
|---|---|
| Size | 8.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d335397c590702b25a5594abf08593822b232f5543ba1a93a3af6b406501bac5
|
|
BLAKE2b-256 checksum How to use checksums |
175928a117639f96a7d0a2ab6b12933e5a5c0beb7e80235f23c6c9b193fb27a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Release files / emplo_nameko_zipkin-0.1.8-py3-none-any.whl
| Download URL | emplo_nameko_zipkin-0.1.8-py3-none-any.whl |
|---|---|
| Size | 9.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f26c0bf34cbcebf50301020c766a7ed3a262ab77b6577e8f5fd6752fbd855da
|
|
BLAKE2b-256 checksum How to use checksums |
4a0029efcdfbdb5b51590a2a745046b0f471b6ccaa3117ec95c31afacdda386a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
|
Security for emplo-nameko-zipkin 0.1.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.