Scaffold library
Project description
KLYM Telemetry
A small library to add instrumentation in KLYM apps.
Publish in PYPI
pip install twine
python setup.py bdist_wheel
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 Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file klym_telemetry-0.1.12.5-py3-none-any.whl
.
File metadata
- Download URL: klym_telemetry-0.1.12.5-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9069e9ecf1a5fa212223289f2181acb03636318581e7ab42e23d2c6bc63c4d2 |
|
MD5 | fd55e1f273aca6da44db03ee55569ed2 |
|
BLAKE2b-256 | bb60233a748536e111b6f36f6738633f8ae92899958a25a6a021f2e28fdd0401 |