可觀測性:記錄日誌、追蹤以及度量

可觀測性會透過 aidp_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 協定)。
  • 已設定應用程式日誌。
  • Playground 模式可讓記憶體內匯出程式即時追蹤顯示。
  • 收集器已預先配置為進行日誌循環、緩衝處理,並包含用於遙測匯出的槽。
  • 所有遙測訊號都會包含預設度量、日誌及 AI Data Platform Workbench 描述資料。
  • 已設定關聯性的預設跨度 / 階段作業屬性 (例如 sessionId、traceId)。

用法模式:

應用程式邏輯不需要任何變更即可發出遙測。以使用者身分:
  • 使用 OpenTelemetry 計量表作為測量結果。
  • 使用 Python 的標準 `logging` 進行日誌記錄。
  • 使用 OpenTelemetry 追蹤器進行追蹤。

範例

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 應用程式。