OpenTelemetry pymemcache Instrumentation

0.62b0 · active · verified Sat Apr 11

This library provides OpenTelemetry instrumentation for `pymemcache`, enabling automatic tracing of Memcached client operations. It is part of the `opentelemetry-python-contrib` project, which generally follows a monthly release cadence. As of version 0.62b0, the instrumentation libraries within `opentelemetry-python-contrib` are considered beta and may undergo breaking changes.

Warnings

Install

Imports

Quickstart

This example sets up a basic OpenTelemetry tracing environment with an OTLP exporter, instruments the `pymemcache` library, and then demonstrates typical `pymemcache` client operations. Spans for `set`, `get`, and `delete` operations will be generated and sent to the configured OTLP endpoint (e.g., an OpenTelemetry Collector).

import os
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.instrumentation.pymemcache import PymemcacheInstrumentor
from pymemcache.client.base import Client

# Configure OpenTelemetry Tracer Provider
provider = TracerProvider()
processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=os.environ.get('OTEL_EXPORTER_OTLP_ENDPOINT', 'localhost:4317')))
provider.add_span_processor(processor)
trace.set_tracer_provider(provider)

# Instrument pymemcache
PymemcacheInstrumentor().instrument()

# Use pymemcache as usual
# Ensure a memcached server is running at localhost:11211
try:
    client = Client(('localhost', 11211))
    client.set('my_key', 'my_value')
    value = client.get('my_key')
    print(f"Retrieved value: {value.decode('utf-8') if value else None}")
    client.delete('my_key')
except Exception as e:
    print(f"Error connecting to Memcached or during operation: {e}")
    print("Please ensure a memcached server is running at localhost:11211")

# Flush spans before exiting
provider.shutdown()

view raw JSON →