Skip to main content

SDK for Observability tools

Project description

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

Project details


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

Uploaded CPython 3.13Windows x86-64

gl_observability_binary-0.2.2-cp313-cp313-manylinux_2_31_x86_64.whl (466.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.31+ x86-64

gl_observability_binary-0.2.2-cp313-cp313-macosx_13_0_arm64.whl (269.8 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

gl_observability_binary-0.2.2-cp312-cp312-win_amd64.whl (241.1 kB view details)

Uploaded CPython 3.12Windows x86-64

gl_observability_binary-0.2.2-cp312-cp312-manylinux_2_31_x86_64.whl (468.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.31+ x86-64

gl_observability_binary-0.2.2-cp312-cp312-macosx_13_0_arm64.whl (269.4 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

gl_observability_binary-0.2.2-cp311-cp311-win_amd64.whl (245.5 kB view details)

Uploaded CPython 3.11Windows x86-64

gl_observability_binary-0.2.2-cp311-cp311-manylinux_2_31_x86_64.whl (426.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.31+ x86-64

gl_observability_binary-0.2.2-cp311-cp311-macosx_13_0_arm64.whl (266.4 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

Details for the file gl_observability_binary-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0e0c52fafcf0b36ded275c9b9c7982a180aa3f966676af3e1cf4a5e623b02333
MD5 a7faf6ec4a0be51b802b6b0481e94eab
BLAKE2b-256 dd62db119ee2464e457fa3cc3fa128324ea3812f4eef3071f5f1cc311122fc94

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp313-cp313-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 98c5b463bcf1ec862ea5870c1cb194a74769e215b8ff76a355a552873fb94db5
MD5 a8aaa8474f03045b6fbfbdde574cd010
BLAKE2b-256 6f8452c64af8d473b41ab749c00332e59d4417926f73f70cb3390dd1a001936c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 632f2686a1470b11130d427c1261e486cd28c65f840f1713be7d2572e66520d0
MD5 c64a3c38f9ee77e83dd6ab64565a9da7
BLAKE2b-256 106a03a745032dc6da2b73d182a9464dbdf8ae84f2e546cddcf5983b17e3f185

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e3578fd28cf9dda3baaed44fe994a30bf941979b4131c3332f4df9b1060dabe6
MD5 76f3435a6235c1f85afdb4a02f3898d8
BLAKE2b-256 28ca71219ac9443aad25aac9a8dcb6d91b0d441b7fc182299c715a1ffb16bbb7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp312-cp312-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 74ab148ca3720eb1b71113243b154fff94bcb7c66544805272e1f1c8a6f1f5e9
MD5 546c45cf0bde15d3918859ba3a85cdf7
BLAKE2b-256 12fa48e22cb48730f8565078067b529ca74fc6884553a578b0db40be67204781

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 adc6f99fda75b50ae77a562dc8a1f4d5c517d8c06ea6bb2220f62f76721dfe64
MD5 051a41c619489bbb78a55323567f9b15
BLAKE2b-256 8421fca3735b702213ee0f93aaf0714ba450ae52799e225e9f0b893fe951997a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 179b42b18e12c58d142bd499803ca13f62eabc1be3324745da69505b07fadc0e
MD5 466816e2e34cbf57707fe448848e163c
BLAKE2b-256 37d8fe62f7ce1cd81a3edd9db891bdfa49450cc07bc2de683901de628f2d61e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp311-cp311-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 92f08ecb8014de80d1c3b51ec2e1c6d5bcc28bdb373114e31c37c02b40a85d71
MD5 b50f56a55604b8a0f2bcd8eb7db28486
BLAKE2b-256 2ea3a5132ed39cb49d3b46a9f8e6c1d604c89eecfb3cbb5607a433d5163649fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for gl_observability_binary-0.2.2-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c3b3489bdc6218377949449f718e0e1b9612b23126bfca14f9d1814e1e5b45f5
MD5 55bc62b3777afbaabaa36b5f290a3bfc
BLAKE2b-256 6032631d0b4f9e13bf9d310898eb6503dcb950420c339dffb20fa321534faa4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gl_observability_binary-0.2.2-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 Pingdom Monitoring Sentry Error logging StatusPage Status page