Scaffold library
Project description
KLYM Telemetry
A small library to add instrumentation in KLYM apps.
Installation
pip install git+https://github.com/Dandresfsoto/klym_telemetry.git#egg=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.3.tar.gz
(7.8 kB
view details)
File details
Details for the file klym-telemetry-0.1.3.tar.gz
.
File metadata
- Download URL: klym-telemetry-0.1.3.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ba733ff6661944a8214bfc2aa53fcb2453695cd75e5c47ae8f791795cf68791 |
|
MD5 | 597aac68dfa9d90343554988cfe34b41 |
|
BLAKE2b-256 | 700194fba1bdfac5964e1443aacd71114626bb09083c59f43eba5d7dca7f82ca |