Scaffold library
Project description
KLYM Telemetry
A small library to add instrumentation in KLYM apps.
Publish in PYPI
pip install twine
python setup.py sdist
twine upload dist/*
Installation
pip install klym-telemetry
Get started
Instrumenting a fastapi app
- Import klym instrumenter
from klym_telemetry.instrumenters import instrument_app
- Import instrument decorator
from klym_telemetry.utils import instrument
- Initialize automatic instrumentation
instrument_app(app_type='fastapi', app=app, service_name="test-klym-microservice", endpoint="http://localhost:4317")
Full example:
import time
from fastapi import FastAPI
from klym_telemetry.instrumenters import instrument_app
from klym_telemetry.utils import instrument, klym_telemetry
app = FastAPI()
instrument_app(app_type='fastapi', app=app, service_name="test-klym-microservice", endpoint="http://localhost:4317")
@instrument(private_methods=True, attributes={"description": "Class to say hello"})
class Hello:
@instrument(span_name="Get start message (private method)")
def _get_start_message(self):
return "Hello"
def say_hello(self):
return {"message": self._get_start_message() + " World"}
def say_hello_with_name(self, name: str):
return {"message": f"{self._get_start_message()} {name}"}
@app.get("/")
def root():
klym_telemetry.add_event_curr_span("Start sleeping") # Custom event example
for _ in range(10):
time.sleep(0.2)
klym_telemetry.add_event_curr_span("Finished sleeping")
return Hello().say_hello()
@app.get("/hello/{name}")
@instrument(span_name="Say hello with name", attributes={"description": "Class to say hello asynchrounously"})
async def say_hello(name: str):
return {"message": f"Hello {name}"}
Instrumenting a celery app
- Import klym instrumenter
from klym_telemetry.instrumenters import instrument_app
- Import celery signal when worker starts
from celery.signals import worker_init
- Initialize automatic instrumentation
instrument_app(app_type='celery', service_name="integrations", endpoint="http://localhost:4317")
Full example:
import os
from celery import Celery
from celery.signals import worker_init
from klym_telemetry.instrumenters import instrument_app
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings.local')
app = Celery('integrations')
# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
# should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
app.conf.update(
worker_pool_restarts=True,
)
@worker_init.connect()
def init_celery_tracing(*args, **kwargs):
instrument_app(app_type='celery', service_name="integrations", endpoint="http://localhost:4317")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
klym-telemetry-0.1.12.tar.gz
(8.6 kB
view details)
File details
Details for the file klym-telemetry-0.1.12.tar.gz
.
File metadata
- Download URL: klym-telemetry-0.1.12.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73b417a7f4f7c96b852cf18e285fa8ecf2e1f42cfb1b253af0e7969903fe90d2 |
|
MD5 | 0842c800f3820f6f0ecd520799d90338 |
|
BLAKE2b-256 | 2104d15936f077664381d62fd1a256a53a63917f33f08f403156438ca68bfb23 |