可观测性:日志记录、跟踪和度量
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 应用程序,用于跟踪报告。