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.4-cp313-cp313-win_amd64.whl (259.4 kB view details)

Uploaded CPython 3.13Windows x86-64

gl_observability_binary-0.2.4-cp313-cp313-manylinux_2_31_x86_64.whl (492.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.31+ x86-64

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

Uploaded CPython 3.13macOS 13.0+ ARM64

gl_observability_binary-0.2.4-cp312-cp312-win_amd64.whl (262.1 kB view details)

Uploaded CPython 3.12Windows x86-64

gl_observability_binary-0.2.4-cp312-cp312-manylinux_2_31_x86_64.whl (493.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.31+ x86-64

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

Uploaded CPython 3.12macOS 13.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

gl_observability_binary-0.2.4-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.4-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.4-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d117c360084ecc628ca190b3762d7ea1700cfeec0bbe763ccce5ec9283e97117
MD5 76da5adb733a92e695bd7839fda29734
BLAKE2b-256 43c04544ba3b242138cc9f8b27da4f683b56ed44118fd2524647a69d5fd89488

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.4-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.4-cp313-cp313-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp313-cp313-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 b7df1c68ffa5608ab59e63584f4cfda73f0844884525148cbb2505064e64974d
MD5 2bdfaf42df76803a2e2f9a81596cc6a3
BLAKE2b-256 5a008c592e644746a5243ec10c2da23166de106f2287453e3b39354b6385ec17

See more details on using hashes here.

File details

Details for the file gl_observability_binary-0.2.4-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 0e18996a921de790158d4858db5bf4ffe4743b5a10dd4d49c3e45911f8468540
MD5 c7a034500b797c10b8515d3c3b35dc4c
BLAKE2b-256 c30c4ad91516e665938b9f980003d9b13f9bd64cfc653f74ff42965f00655290

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.4-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.4-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 083cb44222fe42965ca93ba7f0381553e9925071096b89739acb6fa1c6bab783
MD5 a09d0719f11d94b9bfd9d6aeb298001e
BLAKE2b-256 396b51f4252a57d900cf94b7fa5aa1de6036699a7e85201dd864fac3304c4411

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.4-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.4-cp312-cp312-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp312-cp312-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 9a6e96f3bfabd5298793fd21311de4e756a4be25bba3a28747bd9ed44bea6089
MD5 886ac05c4dbf83e061d862c35c67cfb7
BLAKE2b-256 ce61b79bbe1ae46994f892080388d28258e5b58ec4fd716ff7c35be7e21e6283

See more details on using hashes here.

File details

Details for the file gl_observability_binary-0.2.4-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 4cc7099c47cd4b991fd58fd0b0954d911e307a79181bd0018bcd9d6a07a580e6
MD5 536f77f2676759f979e2f6e0e16bf18e
BLAKE2b-256 ea9fc48cbe080ac07633368d79768c29bb64fe3078eddd1912b9836dc8874d42

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.4-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.4-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4d0bd5535926c4c8810c64d059e05cc63128a724c9de071c7f4b023e61d5b46f
MD5 172227fb461ccb1105066e15d8fda272
BLAKE2b-256 f1096175a307a1b0760e0f316acc1e0e64a5cc9e61fb233d90d5e42cb7f71bc2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.4-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.4-cp311-cp311-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 b406918c08e93fd07b45075c67fa0b41987f6cf205d2cbff09e56cbe4eadcb13
MD5 7e3f8065b0b034d900cdb097c0d715d5
BLAKE2b-256 a344efab44b4a8803121f6fb354c2e80e633bc8cfacb145f22aa83cfbf0d7733

See more details on using hashes here.

File details

Details for the file gl_observability_binary-0.2.4-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.4-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 3a1344af0f77ab037809beb5b7fb3de2078ee651560af065e04b49b7c38aa758
MD5 b4b92e4b37287d052e2ac273dae2fddd
BLAKE2b-256 05c684e675085aaa76ca67d2e8eed0ad6c8180fba51545f66e24d89c51ac127e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.4-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