Skip to main content

Python HTTP server to record traces from the browser.

Project description

jaeger-browser
PyPI npm

This repo is to help you submit Jaeger traces from your browser. It is a workaround until a browser client is implemented.

It contains a Python package that runs a REST API which submits traces locally.

It also contains a TypeScript library that connects to this REST API.

If you want to use this alongside your Jupyter server, check out jupyter-jaeger. There is an example in that repo of starting a span in a kernel server side and then continueing it on the clien side.

In turn, we use that to instrument plotting interactive Vega visualizations with a Python backend.

Limitations

  • Doesn't implement full Jaeger API just a subset I needed. PRs welcome.
  • Hard coded to connect to a local Jaeger server. PRs welcome.
  • No sampling implemented, it will collect all traces. PRs welcome.

Usage

First get the REST server installed and started:

# install jaeger-all-in-one
conda -c conda-forge install jaeger

# Install the REST server
pip install jaeger_browser

# Start jaeger all in one
jaeger-all-in-one
# Start the REST server
env PORT=8080 jaeger-browser

Then install the client side library and connect to it:

yarn add jaeger-browser
import {Client} from 'jaeger-browser';


const client = new Client(new URL('http://localhost:8080/'))



async function doThings(originalExtractedScan: object): Promise<object> {
    // Start a span based on some text-map encoded data
    const span = await client.startSpanExtract({
        name: 'new-span',
        reference: originalExtractedScan,
        relationship: 'child_of'
    });
    // create a new span under it
    const newSpan = await client.startSpan({
        name: 'other-span',
        reference: span,
        relationship: 'child_of'
    })

    // Finish this inner span
    await client.finishSpan(newSpan);

    // return the span we started text-map encoded
    return await client.injectSpan(span);
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jaeger_browser-1.0.1.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

jaeger_browser-1.0.1-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file jaeger_browser-1.0.1.tar.gz.

File metadata

  • Download URL: jaeger_browser-1.0.1.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.21.0

File hashes

Hashes for jaeger_browser-1.0.1.tar.gz
Algorithm Hash digest
SHA256 75b019c8a3f66254fece0517ddae17064d1e14b90716270eac6039dd23af41d4
MD5 913b0bc37c3d17de568d5a1bc780bed3
BLAKE2b-256 f4dc76d789d1f3ab38dda369ad41242aa61cd139ebc94b89bc160e6474f1d057

See more details on using hashes here.

File details

Details for the file jaeger_browser-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for jaeger_browser-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 176442772510bedb46e47a4db1a24429a406b612165d2db25fe18e7619182f4b
MD5 b367ffb6f939e759f6880ed3d3a04bf8
BLAKE2b-256 669978e6692a0cc1b01821d2895fc182c4ed3c5b67c66d7a81918d2eab4add15

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page