Skip to main content

GL Observability

gl-observability is a comprehensive SDK for implementing observability in Python applications. It provides easy-to-use wrappers for OpenTelemetry, Sentry, and custom logging handlers with PII redaction capabilities.

Key Features

  • 📊 OpenTelemetry Integration: simplified initialization for tracing.
  • 🛡️ Sentry Support: easy setup for error tracking and performance monitoring.
  • 🕵️ PII Redaction: custom logging handlers to redact PII using Regex or NER (Named Entity Recognition).
  • 🔌 Framework Support: built-in support for FastAPI, Langchain, HTTPX, Requests, OpenAI, Anthropic, Bedrock, and Google Generative AI instrumentation.

Installation

Prerequisites

1. Installation from Pypi

Choose one of the following methods to install the package:

Using pip

pip install gl-observability-binary[all]

Using Poetry

poetry add gl-observability-binary[all]

Using uv

uv add gl-observability-binary[all]

2. Development Installation (Git)

For development purposes, you can install directly from the Git repository:

poetry add "git+ssh://git@github.com/GDP-ADMIN/gl-sdk.git#subdirectory=libs/gl-observability" --extras all

Optional Dependencies

The OTel instrumentor packages for FastAPI, Langchain, HTTPX, Requests, OpenAI, Anthropic, Bedrock, and Google Generative AI are bundled in core. HTTPX, Requests, and all LLM providers (OpenAI, Anthropic, Bedrock, Google Generative AI) are enabled by default — use_httpx and use_requests default to True, and use_llm (which covers all four LLM providers together) defaults to True. Set any flag to False to disable that integration. Langchain and FastAPI follow the same use_* pattern (use_langchain defaults to False; FastAPI runs when fastapi_config is set).

Each instrumentor must run against a compatible version of the library it traces. If you hit a DependencyConflictError at startup, it means your installed library version falls outside the range the bundled instrumentor supports.

The optional extras solve this by pulling in the instrumented library at a version that is known to be compatible with the bundled instrumentor. Use them as a version resolver, not as a feature flag.

Extra Installs
fastapi fastapi at a compatible version
langchain langchain at a compatible version
httpx httpx at a compatible version
requests requests at a compatible version
llm openai, anthropic, boto3, google-generativeai at compatible versions
all All libraries above

Install a specific extra via gl-observability-binary:

# pip
pip install "gl-observability-binary[langchain]"

# Poetry
poetry add "gl-observability-binary[langchain]"

# uv
uv add "gl-observability-binary[langchain]"

Usage

1. Telemetry Initialization

The library uses a unified init_telemetry function that takes a TelemetryConfig object. You can configure it to send traces to OpenTelemetry (OTLP) or Sentry backend. Multiple backend configuration is supported.

OpenTelemetry Configuration

This setup sends traces to an external OTLP collector (e.g., Jaeger, Tempo).

from fastapi import FastAPI
from gl_observability import init_telemetry, TelemetryConfig, OpenTelemetryBackendConfig, FastAPIConfig

# 1. Setup FastAPI Config (optional, if using FastAPI)
app = FastAPI()
fastapi_config = FastAPIConfig(app=app)

# 2. Configure OpenTelemetryBackendConfig
otel_backend_config = OpenTelemetryBackendConfig(
    endpoint="localhost:4318",                  # OTLP endpoint
    use_grpc=False,                             # Use gRPC or HTTP
    headers={"Authorization": "Bearer ..."},    # Optional headers
)

# 3. Configure TelemetryConfig
otel_config = TelemetryConfig(
    attributes={"service.name": "..."},         # Resource attributes
    backend_config=otel_backend_config,         # Backend configuration
    fastapi_config=fastapi_config,              # FastAPI Instrumentation
    use_langchain=True,                         # Enable Langchain instrumentation (default: False)
    # use_httpx, use_requests, and use_llm default to True; set to False to disable.
)

# 4. Initialize Telemetry
init_telemetry(otel_config)

Sentry Configuration

This setup sends errors and traces to Sentry.

from fastapi import FastAPI
from gl_observability import init_telemetry, TelemetryConfig, SentryBackendConfig, FastAPIConfig

# 1. Setup FastAPI Config (optional, if using FastAPI)
app = FastAPI()
fastapi_config = FastAPIConfig(app=app)

# 2. Configure SentryBackendConfig
sentry_backend_config = SentryBackendConfig(
    dsn="https://...",
    environment="...",
    release="...",
    send_default_pii=True,
    disable_sentry_distributed_tracing=False
)

# 3. Configure TelemetryConfig
otel_config = TelemetryConfig(
    attributes={"service.name": "..."},         # Resource attributes
    backend_config=sentry_backend_config,       # Backend configuration
    fastapi_config=fastapi_config,              # FastAPI Instrumentation
    use_langchain=True,                         # Enable Langchain instrumentation (default: False)
    # use_httpx, use_requests, and use_llm default to True; set to False to disable.
)

# 4. Initialize Telemetry
init_telemetry(otel_config)

Multiple Backend Configuration

This setup the OpenTelemetry SDK used for tracing.

from fastapi import FastAPI
from gl_observability import init_telemetry, TelemetryConfig, OpenTelemetryBackendConfig, SentryBackendConfig

jaeger_backend = OpenTelemetryBackendConfig(endpoint="jager...", ...)
init_telemetry(
    TelemetryConfig(
        attributes={"service.name": "..."},
        backend_config=jaeger_backend,
        fastapi_config=fastapi_config,
        use_langchain=True,
        use_httpx=True,
        use_requests=True,
        use_llm=True,
    )
)

langfuse_backend = OpenTelemetryBackendConfig(endpoint="langfuse...", ...)
init_telemetry(
    TelemetryConfig(
        backend_config=langfuse_backend
    )
)

sentry_backend = SentryBackendConfig(dsn="https://...", ...)
init_telemetry(
    TelemetryConfig(
        backend_config=sentry_backend
    )
)

2. Logging Handlers

The library provides logging handlers to automatically redact Personally Identifiable Information (PII) from logs.

Regex-based PII Redaction

Uses regular expressions to mask common PII patterns like KTP, NPWP, Phone Numbers, and Email.

import logging
from gl_observability.logs.regex_pii_logger_handler import init_regex_pii_logging_handler

# Initialize the handler for a specific logger
init_regex_pii_logging_handler(
    logger_name="my_application_logger",
    pii_regex_process_enabled=True
)

logger = logging.getLogger("my_application_logger")
logger.info("User email is john.doe@example.com and phone is 08123456789")
# Output: User email is jo******om and phone is 0812******6789

NER-based PII Redaction (Named Entity Recognition)

Uses an external API to perform Named Entity Recognition for more advanced PII detection and redaction.

[!WARNING] The NER logging handler makes synchronous API calls for each log record, which may impact performance.

import logging
from gl_observability.logs.ner_pii_logger_handler import init_ner_pii_logging_handler

# Initialize the handler
init_ner_pii_logging_handler(
    logger_name="my_application_logger",
    api_url="https://your-ner-api.com/anonymize",
    api_field="text",  # The field name in API response containing the redacted text
    pii_ner_process_enabled=True
)

logger = logging.getLogger("my_application_logger")
logger.info("My KTP is 3525011212941001")
# Output will be redacted based on API response

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 Distributions

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

gl_observability_binary-0.2.3.post1-cp313-cp313-win_amd64.whl (259.5 kB view details)

Uploaded CPython 3.13Windows x86-64

gl_observability_binary-0.2.3.post1-cp313-cp313-manylinux_2_31_x86_64.whl (492.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.31+ x86-64

gl_observability_binary-0.2.3.post1-cp313-cp313-macosx_13_0_arm64.whl (289.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

gl_observability_binary-0.2.3.post1-cp312-cp312-win_amd64.whl (262.2 kB view details)

Uploaded CPython 3.12Windows x86-64

gl_observability_binary-0.2.3.post1-cp312-cp312-manylinux_2_31_x86_64.whl (493.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.31+ x86-64

gl_observability_binary-0.2.3.post1-cp312-cp312-macosx_13_0_arm64.whl (289.4 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

gl_observability_binary-0.2.3.post1-cp311-cp311-win_amd64.whl (268.7 kB view details)

Uploaded CPython 3.11Windows x86-64

gl_observability_binary-0.2.3.post1-cp311-cp311-manylinux_2_31_x86_64.whl (448.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.31+ x86-64

gl_observability_binary-0.2.3.post1-cp311-cp311-macosx_13_0_arm64.whl (285.4 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

Details for the file gl_observability_binary-0.2.3.post1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7476b98c556f2f0e0bc99d03b293321dfa18a56543cec98d1f63f37aab72b205
MD5 4925c77936c233a05cf441b053a9e4cd
BLAKE2b-256 7fba2160ed13cb841dd761aa5327c76c51e70f89717b66e98572977306868c0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.3.post1-cp313-cp313-win_amd64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

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

File details

Details for the file gl_observability_binary-0.2.3.post1-cp313-cp313-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp313-cp313-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 5222168ccff68bec9511ee2873b693920d8987952dc1d810fd4e4deea93f30df
MD5 feee50928fbbc763a5e6e52362e4a647
BLAKE2b-256 6863797ecea5e32b52df2e735018c72c482a837273fcd8341f9ab23154a19965

See more details on using hashes here.

File details

Details for the file gl_observability_binary-0.2.3.post1-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1f9ce6c6393838ea507da57cf85287fdf42aed77351a1119cf46cbf2efa7a34f
MD5 11e4a34b751baba7c81732bb3e415d24
BLAKE2b-256 f0c67955afea65a12cbd5e6d602e2376617f5b72735f37c153e13f100ef81cc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.3.post1-cp313-cp313-macosx_13_0_arm64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

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

File details

Details for the file gl_observability_binary-0.2.3.post1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9b576178aa2f23953323833004601dc33648454386ce8eab8e228767da3176a5
MD5 2070cb5e5880b09471a53ffebed21b51
BLAKE2b-256 45971c4ffae5bc7fefba6b76b8750eb006d6079f6de9b6e881710769aa1b9264

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.3.post1-cp312-cp312-win_amd64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

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

File details

Details for the file gl_observability_binary-0.2.3.post1-cp312-cp312-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp312-cp312-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 9286e6d135c16bdf02a0e09020296f388d262a986870e8caaa3d81ba91fb51a5
MD5 5c4d296bfad82200d750f8a083d39fa3
BLAKE2b-256 cf94365cb60ee2ce1b10d463921165bcf62d7687c154c7d434be79902f4caa88

See more details on using hashes here.

File details

Details for the file gl_observability_binary-0.2.3.post1-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bf9df5e844d0e4f06d204393407aac52289119fb5244d03f00278d11b211b064
MD5 cc82eb3cfb522d0807c8a108158d5343
BLAKE2b-256 9e7b8403269f57c6f5ea4ac6a7a173a36c575b463272018ab36decc46b31a282

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.3.post1-cp312-cp312-macosx_13_0_arm64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

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

File details

Details for the file gl_observability_binary-0.2.3.post1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 550bc58359b1977391b6f6cd60f939a74837f0a7f36033866c738324897e0aab
MD5 8c6245975451d7eb13c476ffda0d9927
BLAKE2b-256 29be1761d3635daab3f97c0f994ca95f018969b42660ecedbd3cb98f925db263

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.3.post1-cp311-cp311-win_amd64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

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

File details

Details for the file gl_observability_binary-0.2.3.post1-cp311-cp311-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 c6cc7f62798d78d0d12b0c7faccf0c2af10fb364ed55ff1fabfe596b546b7d77
MD5 6a143ad39da21c065ba30ea85b41f97f
BLAKE2b-256 089f901773a87b8468464ec3add981b1cfbc40e837420cad26edc41da8283395

See more details on using hashes here.

File details

Details for the file gl_observability_binary-0.2.3.post1-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.3.post1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 e81ed50b22fcd8fa3d2725f5f756a65bd3b3eca60e948766ffd8885280f90814
MD5 99cc6ee639cced703cd4a2ef7b1227ef
BLAKE2b-256 b84f241a8202b24bada444e8ae950bf221e1c8ea9c6a969a926287f1a34f1d0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.3.post1-cp311-cp311-macosx_13_0_arm64.whl:

Publisher: build-binary.yml on GDP-ADMIN/gl-sdk

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 Sentry Error logging StatusPage Status page