可观测性:日志记录、跟踪和度量

Observability 通过 helpp_observability 软件包无缝集成到 Oracle AI Data Platform Workbench 应用程序中,从而实现自动遥测(日志、跟踪、度量)收集,并尽可能减少设置。

初始化

导入并初始化,如下所示:

from observability.aidp_observability import AIDPObservability
from observability.config import CollectorConfig

config = CollectorConfig()
config.service_name = "dummy_name"
observability = AIDPObservability(config)
observability.initialize()
初始化时:
  • 将创建跟踪、度量和日志的 OpenTelemetry 导出程序。
  • 为所有遥测数据(端口 4317、GRpc 协议)配置了收集器端点。
  • 已设置应用程序日志记录程序。
  • 游乐场模式允许内存中导出器进行即时跟踪显示。
  • 收集器已预先配置为进行日志轮转和缓冲,并包含用于遥测导出的接收器。
  • 所有遥测信号中都包括默认度量、日志和 AI 数据平台工作台元数据。
  • 为关联设置了默认跨度/会话属性(例如 sessionId、traceId)。

用法模式:

在应用逻辑中无需更改即可发出遥测。作为用户:
  • 使用 OpenTelemetry Meter 获取指标。
  • 将 Python 的标准 `logging` 用于日志。
  • 使用 OpenTelemetry Tracer 进行跟踪。

范例

import logging
import time
from opentelemetry import trace, metrics

tracer = trace.get_tracer(__name__)
meter = metrics.get_meter(__name__)

request_counter = meter.create_counter(
    name="requests_total",
    description="Number of requests processed",
    unit="1",
)

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("sample-app")

def process_request(user_id: str):
    logger.info("Processing request for user %s", user_id)
    request_counter.add(1, {"user.id": user_id})
    with tracer.start_as_current_span("process_request") as span:
        span.set_attribute("user.id", user_id)
        time.sleep(0.1)
        span.add_event("request_completed", {"status": "ok"})

if __name__ == "__main__":
    for i in range(3):
        process_request(f"user-{i}")
        time.sleep(1)

注意:

自动导出应用程序遥测;用户不需要更改仪器。可观测软件包自动安装 LLM 框架和 LangGraph 应用程序,用于跟踪报告。