Skip to main content

Telemetry utilities and shared components for Pharia projects

Project description

Pharia Telemetry

Python PyPI version License: MIT CI Coverage

A clean, minimal OpenTelemetry foundation library for Pharia services providing observability, tracing, and context propagation utilities.

๐ŸŽฏ What is pharia-telemetry?

pharia-telemetry provides a simple, focused foundation for observability in Pharia services:

  • Context Propagation: User and session context flows automatically across all service calls
  • Structured Logging: Logs automatically include trace IDs and user context
  • OpenTelemetry Setup: Minimal, high-level setup for distributed tracing
  • Standardized Constants: Clean, namespaced constants for consistent telemetry

Key Principle: pharia-telemetry handles the foundation with minimal API surface, you add framework-specific auto-instrumentation.

๐Ÿ“ฆ Installation

Requires Python 3.10+.

# Basic installation
pip install pharia-telemetry

# With structlog support (for structured logging)
pip install pharia-telemetry[structlog]

Install from GitHub (pinned to commit)

For services that depend on a specific commit from the GitHub repo, use a direct VCS reference:

# HTTPS (recommended)
pip install "pharia-telemetry @ git+https://github.com/aleph-alpha/pharia-telemetry.git@<commit-sha>"

# SSH (if you have SSH keys configured)
pip install "pharia-telemetry @ git+ssh://git@github.com/aleph-alpha/pharia-telemetry.git@<commit-sha>"

# With optional extras
pip install "pharia-telemetry[structlog] @ git+https://github.com/aleph-alpha/pharia-telemetry.git@<commit-sha>"

In requirements files (PEP 508):

pharia-telemetry @ git+https://github.com/aleph-alpha/pharia-telemetry.git@<commit-sha>
pharia-telemetry[structlog] @ git+https://github.com/aleph-alpha/pharia-telemetry.git@<commit-sha>

๐Ÿš€ 30-Second Setup

from pharia_telemetry import setup_telemetry, constants, set_baggage_item

# 1. One-line setup
setup_telemetry("my-service", service_version="1.0.0")

# 2. Set context that flows everywhere
set_baggage_item(constants.Baggage.USER_ID, "user-123")

# 3. Add framework instrumentation (optional)
# FastAPIInstrumentor.instrument_app(app)  # for FastAPI
# SQLAlchemyInstrumentor().instrument()    # for databases

Result: Your service now has distributed tracing with user context flowing through all operations!

๐ŸŽฏ Clean API Design

pharia-telemetry features a clean, focused API designed for ease of use:

from pharia_telemetry import (
    # Core setup (essential)
    setup_telemetry,           # One-function setup

    # GenAI instrumentation (most users)
    create_chat_span,          # Smart sync/async chat spans
    create_embeddings_span,    # Smart sync/async embeddings spans
    create_tool_execution_span,# Smart sync/async tool spans
    set_genai_span_usage,      # Token usage tracking
    set_genai_span_response,   # Response metadata

    # Context propagation (advanced)
    set_baggage_item,          # Set context for propagation
    get_baggage_item,          # Get propagated context

    # Logging integration (optional)
    create_context_injector,   # Custom logging integration
)

๐Ÿ“š Documentation Guide

Choose your path based on what you need:

๐Ÿ†• New to pharia-telemetry?

Start here โ†’ Getting Started Guide

  • Basic setup and first examples
  • Understanding the concepts
  • Your first instrumented service

๐Ÿ”Œ Want automatic instrumentation?

Go to โ†’ Auto-Instrumentation Guide

  • Available instrumentation packages
  • FastAPI, SQLAlchemy, HTTPX setup
  • When auto-instrumentation works (and when it doesn't)

๐Ÿ› ๏ธ Need manual control?

See โ†’ Manual Instrumentation Guide

  • SSE streaming issues and solutions
  • HTTP/2 compatibility problems
  • Custom span management
  • Performance optimization

๐Ÿงณ Working with context propagation?

Read โ†’ Baggage & Context Guide

  • User and session context
  • Cross-service correlation
  • Standardized baggage keys
  • Custom context patterns

๐Ÿ“Š Setting up logging?

Check โ†’ Structured Logging Guide

  • Automatic trace correlation
  • Log configuration patterns
  • Integration with structlog

๐Ÿค– Building GenAI applications?

Visit โ†’ GenAI Spans Guide

  • OpenTelemetry semantic conventions for AI
  • Automatic span attributes for models
  • Token usage tracking
  • Agent and tool instrumentation

โš™๏ธ Need advanced configuration?

Visit โ†’ Configuration Guide

  • Environment variables
  • OTLP exporter setup
  • Custom resource attributes
  • Production deployment

๐Ÿ—๏ธ Building integrations?

Browse โ†’ Integration Examples

  • Complete FastAPI service
  • Microservice communication
  • Background task processing
  • Real-world patterns

๐Ÿ› Having issues?

Try โ†’ Troubleshooting Guide

  • Common problems and solutions
  • Debug techniques
  • Performance considerations

๐ŸŒŸ Core Features

  • ๐Ÿ”ฌ OpenTelemetry Integration: Minimal setup utilities for distributed tracing
  • ๐Ÿงณ Baggage Management: Context propagation across service boundaries
  • ๐Ÿ“Š Structured Logging: Automatic trace correlation for log records
  • ๐Ÿค– Smart GenAI Spans: Auto-detecting sync/async convenience functions for AI operations
  • ๐Ÿ”ง Production Ready: Graceful degradation when OpenTelemetry is unavailable
  • ๐Ÿ“ˆ Pharia Standards: Standardized constants and conventions across all services
  • ๐ŸŽฏ Focused API: Clean, intuitive functions for common use cases

๐Ÿ›๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         Your Application + Auto         โ”‚
โ”‚           Instrumentation              โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚        pharia-telemetry Foundation      โ”‚
โ”‚     (Propagators, Baggage, Logging)     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚           OpenTelemetry SDK             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚        OTLP Exporters & Backend        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ” Quick Examples

Context Propagation

from pharia_telemetry import constants, set_baggage_item

# Set once, flows everywhere
set_baggage_item(constants.Baggage.USER_ID, "user-123")
set_baggage_item(constants.Baggage.SESSION_ID, "session-456")

Structured Logging

import structlog
from pharia_telemetry import add_context_to_logs

# Easy integration with any logging framework
injector = add_context_to_logs("structlog")
structlog.configure(processors=[
    injector,  # Adds trace_id + baggage automatically
    structlog.processors.JSONRenderer(),
])

GenAI Operations

from pharia_telemetry import create_chat_span, create_embeddings_span
from pharia_telemetry.sem_conv.gen_ai import GenAI

# Smart convenience functions that auto-detect sync/async context
with create_chat_span(
    model="llama-3.1-8B",
    agent_id=GenAI.Values.PhariaAgentId.QA_CHAT,
    conversation_id="conv-123"
) as span:
    # Works in both sync and async contexts
    pass

# Also works seamlessly in async contexts
async with create_embeddings_span(model="text-embedding-3-small") as span:
    # Automatic context detection
    pass

Clean Constants Structure

from pharia_telemetry import constants

# Namespaced and organized
user_id = constants.Baggage.USER_ID                    # "app.user.id"
qa_chat = constants.Baggage.Values.UserIntent.QA_CHAT  # "pharia_qa_chat"

# GenAI constants in separate module
model = constants.GenAI.REQUEST_MODEL                  # "gen_ai.request.model"
chat_op = constants.GenAI.Values.OperationName.CHAT    # "chat"

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide for details.

๐Ÿ“ž Support

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

pharia_telemetry-0.1.1.dev2.tar.gz (77.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pharia_telemetry-0.1.1.dev2-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file pharia_telemetry-0.1.1.dev2.tar.gz.

File metadata

  • Download URL: pharia_telemetry-0.1.1.dev2.tar.gz
  • Upload date:
  • Size: 77.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pharia_telemetry-0.1.1.dev2.tar.gz
Algorithm Hash digest
SHA256 16422c0cad20cfb20861a482140a801adffe234e523c265ac603ac7e04388b37
MD5 c94f22ab54e0422af3effe5216fc9df3
BLAKE2b-256 134131e845fcdd75a6e63f6f904e48643407c7c6891ad370c6359b28f9aa9331

See more details on using hashes here.

Provenance

The following attestation bundles were made for pharia_telemetry-0.1.1.dev2.tar.gz:

Publisher: release-please.yml on Aleph-Alpha/pharia-telemetry

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pharia_telemetry-0.1.1.dev2-py3-none-any.whl.

File metadata

File hashes

Hashes for pharia_telemetry-0.1.1.dev2-py3-none-any.whl
Algorithm Hash digest
SHA256 afe9cabb8658d95294ac867f0560fcdc6cbf315903848e6ce2471b63da5a3247
MD5 9e14f9a054dfbd76b44693075f6cfbfd
BLAKE2b-256 f41681d9766a027e9a11dde7be832a9c501a6d2020f7e7b652d9211a5108b88d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pharia_telemetry-0.1.1.dev2-py3-none-any.whl:

Publisher: release-please.yml on Aleph-Alpha/pharia-telemetry

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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