OpenTelemetry configuration utilities for GCP Cloud Trace and Cloud Logging
Project description
CroudTech Python GCP OpenTelemetry
OpenTelemetry configuration utilities for GCP Cloud Trace and Cloud Logging integration.
Installation
# Install from PyPI
pip install croudtech-python-gcp-otel
# Install from GitHub
pip install git+https://github.com/CroudTech/croudtech-python-gcp-otel.git
# Install a specific version
pip install git+https://github.com/CroudTech/croudtech-python-gcp-otel.git@v1.0.0
# Install with Poetry
poetry add croudtech-python-gcp-otel
# Or from GitHub with Poetry
poetry add git+https://github.com/CroudTech/croudtech-python-gcp-otel.git
All instrumentations (Django, requests, psycopg2, logging) are included by default.
Usage
Basic Setup
from croudtech_gcp_otel import configure_telemetry
# Configure using environment variables
configure_telemetry()
Configuration via Environment Variables
GCP_PROJECT_IDorGOOGLE_CLOUD_PROJECT- GCP project ID for Cloud TraceGCP_REGION- GCP region (default: europe-west2)SERVICE_NAME- Service name for tracingSERVICE_VERSION- Service versionK_SERVICE- Cloud Run service name (auto-detected)K_REVISION- Cloud Run revision (auto-detected)
Explicit Configuration
from croudtech_gcp_otel import configure_telemetry, TelemetryConfig
config = TelemetryConfig(
service_name="my-service",
service_namespace="my-namespace",
project_id="my-gcp-project",
region="europe-west2",
service_version="1.0.0",
# Instrumentation flags (all default to True)
instrument_django=True,
instrument_requests=True,
instrument_psycopg2=True,
instrument_logging=True,
# Psycopg2 SQL commenter options
psycopg2_enable_commenter=True,
psycopg2_commenter_options={
"db_driver": True,
"dbapi_threadsafety": True,
"dbapi_level": True,
"libpq_version": True,
"driver_paramstyle": True,
},
)
configure_telemetry(config)
TelemetryConfig Options
| Option | Type | Default | Description |
|---|---|---|---|
service_name |
str | K_SERVICE or SERVICE_NAME env var |
Service name for tracing |
service_version |
str | K_REVISION or SERVICE_VERSION env var |
Service version |
service_namespace |
str | "" |
Service namespace for grouping |
project_id |
str | GCP_PROJECT_ID or GOOGLE_CLOUD_PROJECT env var |
GCP project ID |
region |
str | GCP_REGION env var or europe-west2 |
GCP region |
instrument_django |
bool | True |
Enable Django auto-instrumentation |
instrument_requests |
bool | True |
Enable requests library instrumentation |
instrument_psycopg2 |
bool | True |
Enable PostgreSQL instrumentation |
instrument_logging |
bool | True |
Enable logging instrumentation |
psycopg2_enable_commenter |
bool | True |
Add SQL comments with trace info |
psycopg2_commenter_options |
dict | See above | Configure SQL commenter fields |
JSON Logging for GCP Cloud Logging
from croudtech_gcp_otel import configure_logging
import logging
# Configure root logger with JSON formatting
configure_logging()
# Or with custom log level
configure_logging(level=logging.DEBUG)
# Or with explicit project ID for trace correlation
configure_logging(gcp_project_id="my-gcp-project")
Or use the formatter directly:
import logging
from croudtech_gcp_otel import JSONFormatter
handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter(
gcp_project_id="my-gcp-project", # For trace correlation URLs
include_extra_fields=True, # Include custom log record fields
))
logging.getLogger().addHandler(handler)
The JSON output includes:
timestamp,severity,message,logger,module,function,lineexceptionwith type, message, and stacktrace (when applicable)logging.googleapis.com/trace,logging.googleapis.com/spanId,logging.googleapis.com/trace_sampledfor Cloud Trace correlation
Manual Span Creation
from croudtech_gcp_otel import get_tracer, create_span_with_attributes
tracer = get_tracer(__name__)
with create_span_with_attributes(tracer, "my_operation", {"custom.attr": "value"}):
# your code here
pass
GCP Resource Attributes
Get resource attributes for custom OpenTelemetry configurations:
from croudtech_gcp_otel import get_gcp_resource_attributes, TelemetryConfig
# Using defaults from environment
attributes = get_gcp_resource_attributes()
# Or with explicit config
config = TelemetryConfig(service_name="my-service", project_id="my-project")
attributes = get_gcp_resource_attributes(config)
# Returns dict with: service.name, service.version, cloud.provider, cloud.platform,
# cloud.region, cloud.account.id, gcp.project_id, gcp.region, and Cloud Run
# specific attributes when running on Cloud Run
Features
- GCP Cloud Trace Integration: Automatic export of traces to Cloud Trace
- W3C Trace Context Propagation: Standard distributed tracing headers
- GCP Cloud Trace Propagation: Native GCP trace header support
- Auto-instrumentation: Django, requests, psycopg2, and logging
- JSON Logging: GCP Cloud Logging compatible structured logs with trace correlation
- App Hub Topology: Resource attributes for service topology visualization
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file croudtech_python_gcp_otel-1.0.1.tar.gz.
File metadata
- Download URL: croudtech_python_gcp_otel-1.0.1.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.0 CPython/3.11.14 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
782c59a0831a3e87fa77246e67a57776e6c73d0127ec520c3a5153b16a14f941
|
|
| MD5 |
670d590035597bb2a0507d8ce6e91ea0
|
|
| BLAKE2b-256 |
5c39ca819b19af024b11a38731207520e414610ae6ecc8ecb62aef58f22a1989
|
File details
Details for the file croudtech_python_gcp_otel-1.0.1-py3-none-any.whl.
File metadata
- Download URL: croudtech_python_gcp_otel-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.0 CPython/3.11.14 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf5e8b9e89f88d44cd439e5d363eba9b32551d25eb023345c0268cb61389aa98
|
|
| MD5 |
86cac583d37742b84e9a6eb9d1437432
|
|
| BLAKE2b-256 |
8d9a04ad44f40862aa87f6f2775fecd22fb60baf057066c86077e9f0c762abbc
|