Skip to main content

Python HTTP server to record traces from the browser.

Project description

jaeger-browser

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

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.

Files for jaeger_browser, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size jaeger_browser-1.0.0-py3-none-any.whl (6.5 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size jaeger_browser-1.0.0.tar.gz (4.7 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page