Skip to main content

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')

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)

Source distribution for emplo-nameko-zipkin 0.1.8
File Size Uploaded
emplo-nameko-zipkin-0.1.8.tar.gz 8.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for emplo-nameko-zipkin 0.1.8
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.8 This release

2 release files

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page