Visual Studio Code Microsoft Foundry 도구 키트를 사용하여 로컬 추적을 수집하거나 Microsoft Foundry에 배포된 에이전트에 대한 원격 분석을 볼 수 있습니다. 추적은 요청에 대해 기록된 작업을 그룹화합니다. 각 작업은 타이밍, 상태 및 계측 코드에서 제공하는 모든 속성이나 이벤트를 포함하는 스팬입니다.
이 문서에서는 먼저 로컬 수집을 다루고, 이어서 배포된 에이전트의 클라우드 추적을 다룹니다. 조사 내용에 맞는 데이터 소스를 선택하세요.
| Approach | 다음 용도로 사용 | 데이터 및 책임 |
|---|---|---|
| 에이전트 인스펙터 | 로컬 요청을 보내거나, 라이브 응답 및 도구 이벤트를 검사하거나, 중단점에서 코드를 일시 중지합니다. | 서버는 프로토콜 이벤트 및 개발 진단 정보를 제공합니다. 이 방법은 OTLP 수집기가 필요하지 않고 클라우드 추적 기록도 생성하지 않습니다. |
| 로컬 추적 | 개발 중에 기록된 모델, 도구 및 에이전트 스팬을 비교합니다. | 애플리케이션은 원격 분석을 도구 키트의 로컬 수집기로 내보냅니다. 계측 장비를 구성하고 저장된 로컬 데이터를 관리합니다. |
| 호스팅 에이전트 트레이스 | Foundry에 배포된 에이전트가 처리한 요청을 조사합니다. | 추적은 프로젝트에 연결된 Application Insights 리소스에 저장됩니다. 액세스, 보존 및 요금은 Azure 리소스 구성을 따릅니다. |
호스트된 에이전트는 Foundry 에이전트 서비스에서 사용자 지정 코드를 실행합니다. Foundry는 호스팅을 관리하지만 귀하는 코드 및 종속성에 대한 책임을 집니다. 트레이싱은 에이전트 생성 및 배포를 대체하지 않습니다.
Prerequisites
- 현재 공개 Foundry Toolkit 확장이 설치된 Visual Studio Code Foundry 도구 키트 설치를 참조하세요.
- 모델 및 도구 연결이 구성된 상태에서 로컬로 실행할 수 있는 애플리케이션입니다.
- 첫 번째 예시는 Python으로 작성된 Microsoft Agent Framework 애플리케이션과 해당 애플리케이션에 사용된 Python 개발 환경입니다. 다른 SDK의 경우 Python 또는 JavaScript 및 TypeScript 설정을 사용합니다.
- 클라우드 트레이싱을 위해서는 배포된 에이전트와 해당 Foundry 프로젝트에 연결된 Application Insights 리소스가 필요하거나, 연결 또는 생성 권한이 있어야 합니다.
- 클라우드 쿼리의 경우 연결된 Application Insights 리소스에 대한 로그 분석 리더 역할이 필요합니다. 보호된 테이블의 경우 Privileged Monitoring Data Reader 역할도 할당합니다. Foundry 트레이싱 필수 조건을 참조하세요.
로컬 컬렉션에는 Application Insights 또는 클라우드 원격 분석 권한이 필요하지 않습니다. 모델 호출과 도구 실행은 여전히 원격 서비스를 사용할 수 있으며, 이에 따라 요금이 발생할 수 있습니다.
로컬 추적 수집
로컬 수집기는 OTLP(OpenTelemetry Protocol)를 통해 원격 분석을 받습니다. 애플리케이션을 자동으로 계측하지 않습니다. 사용하는 프레임워크 또는 계측 라이브러리가 스팬을 생성하고 이를 컬렉터로 내보내야 합니다.
SDK 및 언어 설정
기본 제공 계측이 있는 SDK에는 여전히 익스포터가 필요합니다. 다른 SDK는 별도의 계측 패키지를 사용합니다.
| SDK 또는 프레임워크 | Python | JavaScript 및 TypeScript(Node.js) |
|---|---|---|
| Microsoft 에이전트 프레임워크 | 기본 제공 OpenTelemetry 계측. | 전용 Toolkit 설정 지침이 없습니다. |
| Azure AI 추론 SDK(미리 보기) | Azure SDK 계측 도구. | Azure SDK 계측 기능. |
| Foundry Projects SDK | 클라이언트 측 계측기(미리 보기). | 기본 OpenAI 또는 Azure SDK 클라이언트를 계측합니다. |
| Foundry 클래식 에이전트 SDK | Azure SDK 계측 도구. | 전용 Toolkit 설정 안내가 없습니다. |
| Anthropic | OpenLLMetry 인스트루멘터. | Traceloop 계측. |
| Google GenAI (Gemini) | Google GenAI OpenTelemetry 계측기. | 전용 Toolkit 설정 지침이 없습니다. |
| LangChain | OpenLLMetry 인스트루멘터. | Traceloop 인스트루먼테이션. |
| Azure OpenAI 클라이언트를 포함한 OpenAI SDK | OpenLLMetry 인스트루멘터. | Traceloop 계측. |
| OpenAI 에이전트 SDK | OpenLLMetry 추적 프로세서. | Toolkit 설정에 대한 전용 지침이 없습니다. |
"전용 도구 키트 설정 지침 없음"은 수집기가 원격 분석을 거부하는 것이 아니라 해당 언어에 대한 SDK 관련 설정 경로가 없음을 의미합니다. 수집기는 OTLP 데이터를 허용합니다. 계측기는 어떤 작업과 메시지 세부 정보를 캡처할지 결정합니다.
이러한 예제에서는 호환되는 라이브러리의 전체 목록이 아닌 선택한 계측 옵션을 사용합니다. OpenLLMetry 및 Traceloop 계측은 Microsoft 라이브러리가 아닌 라이브러리입니다.
계측기 설치
기존 Python Agent Framework 애플리케이션과 함께 이 절차를 사용합니다. 이 연습에서는 에이전트와 수집기를 동일한 로컬 환경에 유지합니다.
'활동' 바에서 Foundry 툴킷을 선택한 후, 개발자 도구>모니터링>트레이싱을 선택하세요.
애플리케이션을 실행하기 전에 Start Collector를 선택합니다.
애플리케이션의 Python 환경에서 종속성에 아직 선언되지 않은 경우 gRPC 익스포터를 설치합니다.
python -m pip install opentelemetry-exporter-otlp-proto-grpc에이전트를 생성하거나 실행하기 전에 애플리케이션 시작 시 OpenTelemetry를 한 번만 구성하세요.
import os os.environ["OTEL_EXPORTER_OTLP_ENDPOINT"] = "http://localhost:4317" os.environ["OTEL_EXPORTER_OTLP_PROTOCOL"] = "grpc" from agent_framework.observability import configure_otel_providers configure_otel_providers(enable_sensitive_data=False)참조: Agent Framework 관찰성.
애플리케이션 또는 호스팅 라이브러리에서 이미 OpenTelemetry 프로바이더를 구성한 경우, 다른 프로바이더 설정을 추가하지 말고 기존 exporter를 구성하세요. 신호별로 지정된
OTEL_EXPORTER_OTLP_*_ENDPOINT변수는 기본 엔드포인트를 재정의할 수 있습니다. 다른 위치를 가리키는 기존 추적, 로그 또는 메트릭 설정이 있는지 확인합니다.일반 진입점으로 애플리케이션을 실행하고 에이전트가 동작하도록 하는 요청을 보냅니다. 요청이 완료되고 수출업체가 원격 측정 데이터를 전송할 시간을 주고 프로세스를 중지하세요.
추적에서 새로 고침을 선택한 다음 새 추적을 선택하여 해당 스팬을 검사합니다.
Agent Framework는 지원되는 모델 클라이언트, 에이전트 및 워크플로 작업을 위한 도구를 제공합니다. 다른 프레임워크에서는 인스트루멘테이션 라이브러리가 필요할 수 있습니다. OTLP 호환성을 사용하면 수집기에서 데이터를 수신할 수 있으며, 내보낸 특성 및 생성 AI 의미 체계 규칙은 뷰어가 표시하는 내용을 결정합니다.
다른 SDK 또는 언어의 경우 에이전트 프레임워크 구성 대신 아래 설정을 사용합니다. 먼저 수집기를 시작하고, 클라이언트를 생성하기 전에 계측을 구성한 다음, 애플리케이션을 실행하고 추적 목록을 새로 고치세요.
수집기 엔드포인트
내보내기 프로토콜을 수집기 엔드포인트에 맞추세요. 도구 키트는 다음 기본값을 사용하여 localhost에서 수신 대기합니다.
| 수출업자 | 엔드포인트 |
|---|---|
| OTLP gRPC | http://localhost:4317 |
| OTLP HTTP 추적 내보내기 | http://localhost:4318/v1/traces |
| OTLP HTTP 로그 내보내기 | http://localhost:4318/v1/logs |
일부 HTTP 익스포터는 http://localhost:4318을(를) 수락하고 자체적으로 추가합니다. 경로를 두 번 추가하지 말고 익스포터의 구성을 따르세요. 일부 계측 라이브러리는 메시지 콘텐츠를 로그 레코드로 보내므로 스팬만 내보내면 입력 및 출력 세부 정보가 제공되지 않을 수 있습니다.
이러한 포트는 에이전트 HTTP 서버 및 디버거 포트와 관련이 없습니다. 컨테이너 또는 원격 개발 환경이라고 하면 localhost은(는) 해당 환경을 의미합니다. 컬렉터가 데스크톱을 의미한다고 가정하지 말고, 컬렉터와 적절한 연결을 설정하세요.
Python SDK 설정
다음 예제에서는 애플리케이션에 이미 모델 SDK, 자격 증명 및 모델 구성이 있다고 가정합니다. 다음 표에서 SDK에 대한 공유 종속성 및 추가 패키지를 설치합니다.
python -m pip install opentelemetry-sdk opentelemetry-exporter-otlp-proto-http
참조: OpenTelemetry Python SDK, OTLP 익스포터.
애플리케이션 시작 시 이 공유 설정을 한 번 추가한 후, 테이블 행 하나에서 계측을 수행합니다. 다른 라이브러리의 공급자 설정과 결합하지 마세요.
import os
os.environ["TRACELOOP_TRACE_CONTENT"] = "false"
os.environ["OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT"] = "false"
os.environ["AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED"] = "false"
from opentelemetry import trace
from opentelemetry.sdk.resources import Resource
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import (
OTLPSpanExporter,
)
provider = TracerProvider(
resource=Resource.create({"service.name": "my-agent"})
)
provider.add_span_processor(BatchSpanProcessor(
OTLPSpanExporter(endpoint="http://localhost:4318/v1/traces")
))
trace.set_tracer_provider(provider)
참조: TracerProvider 및 스팬 프로세서, OTLPSpanExporter.
python -m pip install <package>(으)로 선택한 행에 패키지를 설치하세요. OpenAI, Anthropic, LangChain 및 별도의 OpenAI Agents 예시에서는 Microsoft가 아닌 OpenLLMetry 계측을 사용합니다. SDK 버전 및 모델 API는 서로 다른 세부 정보를 생성할 수 있습니다.
| SDK | 추가 패키지 | 공유 설정 후 계측 |
|---|---|---|
| OpenAI(Azure OpenAI 클라이언트 포함) | opentelemetry-instrumentation-openai |
from opentelemetry.instrumentation.openai import OpenAIInstrumentorOpenAIInstrumentor().instrument() |
| Anthropic | opentelemetry-instrumentation-anthropic |
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentorAnthropicInstrumentor().instrument() |
| LangChain | opentelemetry-instrumentation-langchain |
from opentelemetry.instrumentation.langchain import LangchainInstrumentorLangchainInstrumentor().instrument() |
| Google GenAI | opentelemetry-instrumentation-google-genai |
os.environ["OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT"] = "NO_CONTENT"from opentelemetry.instrumentation.google_genai import GoogleGenAiSdkInstrumentorGoogleGenAiSdkInstrumentor().instrument() |
| Foundry Projects 클라이언트 쪽 추적(미리 보기) |
azure-core-tracing-opentelemetry, 함께 azure-ai-projects |
os.environ["AZURE_EXPERIMENTAL_ENABLE_GENAI_TRACING"] = "true"from azure.ai.projects.telemetry import AIProjectInstrumentorAIProjectInstrumentor().instrument(enable_content_recording=False) |
| Foundry 클래식 에이전트 SDK |
azure-core-tracing-opentelemetry, 함께 azure-ai-agents |
os.environ["AZURE_SDK_TRACING_IMPLEMENTATION"] = "opentelemetry"from azure.ai.agents.telemetry import AIAgentsInstrumentorAIAgentsInstrumentor().instrument() |
| Azure AI 추론 SDK(미리 보기) |
azure-core-tracing-opentelemetry, 함께 azure-ai-inference |
os.environ["AZURE_SDK_TRACING_IMPLEMENTATION"] = "opentelemetry"from azure.ai.inference.tracing import AIInferenceInstrumentorAIInferenceInstrumentor().instrument() |
Foundry 프로젝트의 경우 클라이언트 쪽 추적 지침을 따르고 계측 후 해당 OpenAI 클라이언트를 생성하세요. 이 지침은 클래식 에이전트 SDK에 대한 지침과 다릅니다. 동일한 OpenAI 호출에 대해 AIProjectInstrumentor 및 별도의 OpenAI 계측 도구를 사용하지 마세요.
OpenAI Agents SDK의 경우 opentelemetry-instrumentation-openai-agents 설치 후 공유된 설정 다음에 다음 코드를 추가하세요.
from agents import set_trace_processors
from opentelemetry.instrumentation.openai_agents import OpenAIAgentsInstrumentor
set_trace_processors([])
OpenAIAgentsInstrumentor().instrument()
참조: OpenAI 에이전트 계측, OpenAI 에이전트 추적.
다음은 OpenTelemetry 프로세서를 추가하기 전에 기존 추적 프로세서를 바꾸는 예제입니다. 이러한 대체가 없으면 SDK는 추적을 기본 백 엔드로 내보낼 수도 있습니다. 기존 프로세서가 필요한 경우, 변경하기 전에 트레이싱 대상을 검토하세요. OpenTelemetry 프로세서가 이벤트를 받도록 SDK 추적을 사용하도록 설정합니다.
단시간 실행 애플리케이션이 요청을 완료한 후, 종료하기 전에 버퍼링된 스팬을 전송하도록 provider.force_flush()을(를) 호출하세요. 이러한 코드 조각을 수정하는 데 도움이 필요하면 툴킷의 트레이싱 코드 생성 도구를 사용하세요.
메시지 로그 레코드 내보내기
일부 계측기는 메시지 내용을 스팬 속성 대신 OpenTelemetry 로그 레코드로 출력합니다. 제어된 개발 테스트에서 해당 콘텐츠를 기록하려면 앞서 설명한 Python 트레이스 공급자와 함께 다음 설정을 한 번만 추가하세요.
from opentelemetry import _logs
from opentelemetry.sdk._logs import LoggerProvider
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
from opentelemetry.exporter.otlp.proto.http._log_exporter import OTLPLogExporter
logger_provider = LoggerProvider(resource=provider.resource)
logger_provider.add_log_record_processor(BatchLogRecordProcessor(
OTLPLogExporter(endpoint="http://localhost:4318/v1/logs")
))
_logs.set_logger_provider(logger_provider)
참조: OpenTelemetry Python 로깅 SDK, OTLPLogExporter.
짧은 시간 동안 실행되는 애플리케이션을 종료하기 전에 logger_provider.force_flush()을(를) 호출하세요. 로그 익스포터는 콘텐츠 캡처 기능을 자동으로 활성화하지 않습니다. 인스트루멘터의 콘텐츠 설정 및 데이터 처리 지침을 따르세요.
JavaScript 및 TypeScript SDK 설정
Node.js 애플리케이션의 경우, 하나의 트레이스 공급자는 공유하고 SDK에 대한 계측을 등록하세요. 이 예제에서는 CommonJS 및 OpenTelemetry JavaScript 2.x 공급자 구성을 사용합니다. CommonJS로 컴파일된 TypeScript 애플리케이션은 동일한 초기화 순서를 사용할 수 있습니다.
애플리케이션에는 이미 모델 SDK, 자격 증명 및 모델 구성이 있어야 합니다. 공유 종속성 및 OpenAI 계측기를 설치합니다.
npm install @opentelemetry/api @opentelemetry/sdk-trace-node \
@opentelemetry/sdk-trace-base @opentelemetry/exporter-trace-otlp-proto \
@opentelemetry/instrumentation @traceloop/instrumentation-openai
참조: OpenTelemetry JavaScript 익스포터, OpenAI 인스트루멘테이션.
tracing.cjs을 만듭니다.
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { BatchSpanProcessor } = require('@opentelemetry/sdk-trace-base');
const {
OTLPTraceExporter
} = require('@opentelemetry/exporter-trace-otlp-proto');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { OpenAIInstrumentation } = require('@traceloop/instrumentation-openai');
const provider = new NodeTracerProvider({
spanProcessors: [
new BatchSpanProcessor(new OTLPTraceExporter({
url: 'http://localhost:4318/v1/traces'
}))
]
});
provider.register();
registerInstrumentations({
instrumentations: [new OpenAIInstrumentation({ traceContent: false })]
});
module.exports = provider;
참조: NodeTracerProvider, OpenAI 계측.
모델 SDK를 가져오거나 불러오기 전에 이 파일을 로드하세요. 예를 들어, CommonJS 애플리케이션의 경우 node --require ./tracing.cjs app.cjs을(를) 실행해 보세요. 다른 SDK를 사용하는 경우 OpenAI 패키지, 가져오기 및 등록 항목을 해당 행으로 교체하세요.
| SDK | 계측 패키지 | 가져오기 및 등록 항목 |
|---|---|---|
| Azure OpenAI 클라이언트를 포함한 OpenAI | @traceloop/instrumentation-openai |
const { OpenAIInstrumentation } = require('@traceloop/instrumentation-openai');new OpenAIInstrumentation({ traceContent: false }) |
| Anthropic | @traceloop/instrumentation-anthropic |
const { AnthropicInstrumentation } = require('@traceloop/instrumentation-anthropic');new AnthropicInstrumentation({ traceContent: false }) |
| LangChain | @traceloop/instrumentation-langchain |
const { LangChainInstrumentation } = require('@traceloop/instrumentation-langchain');new LangChainInstrumentation({ traceContent: false }) |
| Azure AI Inference를 포함한 Azure SDK 작업 | @azure/opentelemetry-instrumentation-azure-sdk |
const { createAzureSdkInstrumentation } = require('@azure/opentelemetry-instrumentation-azure-sdk');createAzureSdkInstrumentation() |
Traceloop 패키지는 Microsoft 제품이 아닌 다른 계측 도구입니다. Foundry Projects 애플리케이션의 경우 모델 요청을 만드는 클라이언트를 계측합니다. Azure SDK 계측은 OpenAI 클라이언트를 통한 호출에 대해 OpenAI 계측을 대체하지 않습니다.
네이티브 ECMAScript 모듈의 경우 OpenTelemetry의 ESM 설정을 따릅니다. 대상 SDK 이후에 계측 도구를 로드하면 호출이 계측되지 않은 상태로 남을 수 있습니다. 종료 시, 버퍼링된 스팬을 내보내기 위한 요청이 완료될 때까지 provider.shutdown()을(를) 기다립니다.
Important
이러한 예제에서는 나열된 GenAI 계측기에 대한 메시지-콘텐츠 캡처를 해제합니다. 이는 일반적인 정보 삭제 보장이 아닙니다. 데이터를 공유하기 전에 다른 익스포터, SDK 로깅, 스팬 속성 및 사용자 지정 계측을 검토하세요. 지원되는 패키지 및 API에 대한 자세한 내용은 링크된 계측기 설명서를 참조하세요.
로컬 추적 검사 및 관리
스팬 트리를 사용하여 에이전트 오케스트레이션에서 모델 및 도구 작업까지 요청의 흐름을 추적합니다.
- 느리거나 실패한 스팬을 선택합니다.
- 해당 항목의 지속 시간 및 상태를 검사합니다.
- 계측에서 제공하는 경우 기록된 메시지에 대한 입력 + 출력을 열거나 span 속성에 대한 메타데이터를 엽니다.
예시에서는 민감한 콘텐츠 캡처 기능이 비활성화되어 있습니다. 메시지가 없는 타이밍 데이터는 예상된 결과일 수 있습니다.
제어된 Agent Framework 개발 테스트를 위해, 지원되는 프롬프트, 응답 및 도구 콘텐츠를 기록하도록 기존 구성에서 enable_sensitive_data=True을(를) 설정하세요. 테스트가 완료되면 이를 False로 복원합니다. 다른 계측기에는 자체 콘텐츠 설정이 있습니다.
주의
콘텐츠 녹화는 개인 데이터, 비밀, 도구 인수 및 결과를 캡처할 수 있습니다. 민감하지 않은 테스트 데이터를 사용하고, 원격 측정 데이터에 입력하기 전에 내용을 최소화하거나 수정하세요. 빈 입력 및 출력 뷰를 채우기 위해서만 프로덕션 콘텐츠 녹음/녹화를 켜지 마세요.
수집된 추적은 사용자 홈 폴더 아래 tracing의 traces.db 하위 디렉터리에 있는 .aitk라는 이름의 로컬 SQLite 데이터베이스에 유지됩니다. 뷰어를 닫아도 삭제되지 않습니다.
수집기 중지를 선택하여 로컬 수집을 중지합니다. 에이전트 및 해당 모델 호출은 계속 실행 중입니다. 로컬 레코드를 제거하려면 목록에서 추적 항목을 선택하고 삭제를 선택합니다.
로컬 스토리지는 Application Insights와 별개입니다. 로컬 기록을 삭제해도 클라우드 원격 측정 데이터는 제거되지 않으며, 인스펙터에서 대화를 삭제해도 저장소는 삭제되지 않습니다.
호스팅 에이전트 트레이스 보기
배포 후 클라우드 추적을 사용하여 로컬 프로세스가 아닌 Foundry에서 실행되는 에이전트를 조사합니다. 도구 키트는 프로젝트의 연결된 Application Insights 리소스를 쿼리합니다. 로컬 트레이스 데이터베이스를 업로드하지 않습니다.
시작하기 전에 클라우드 필수 구성 요소를 확인하세요. 에이전트에 대한 액세스만으로는 원격 분석을 쿼리할 수 있는 권한을 부여하지 않습니다.
Application Insights 연결 및 요청 검사
에이전트의 트레이스 탭을 사용하여 Application Insights에 연결하고 배포된 에이전트 요청을 찾으세요.
Foundry Toolkit 사이드바에서 내 리소스>에이전트를 여세요. 호스트된 에이전트 탭을 선택한 다음 에이전트의 이름을 선택합니다.
추적을 선택합니다. 프로젝트에 연결된 리소스가 없는 경우 App Insights 사용을 선택합니다.
App Insights 설정에서 기존 Application Insights 리소스 이름을 선택합니다. 또는 리소스를 만들고 필요한 리소스 및 작업 영역 필드를 완료하도록 선택합니다. 제출을 선택하고 확인을 기다립니다.
이렇게 하면 로컬 작업 영역 기본 설정이 아니라 프로젝트의 공유 Application Insights 연결이 변경됩니다. 리소스 만들기 및 원격 분석 수집에는 Azure 요금이 발생할 수 있습니다. 제출하기 전에 계획된 프로젝트와 리소스를 확인하세요.
Playground로 돌아가서 배포된 에이전트에 테스트 요청을 보냅니다.
수집이 완료될 때까지 잠시 기다린 다음 Traces을 다시 엽니다. 시간 범위, 대화 ID로 검색, 상태 또는 지속 시간 필터를 사용하여 요청을 찾으세요.
트레이스를 선택한 다음 스팬을 선택하여 콘텐츠를 사용할 수 있는 경우 메타데이터 및 입력 + 출력을 검토합니다.
대화와 연결된 작업을 검사하려면 추적 목록에서 대화 ID 를 선택합니다. 대화 보기에는 작업 트리 및 메타데이터가 표시됩니다.
Application Insights를 연결하면 Foundry의 서버 쪽 추적이 가능합니다. 모델 호출, 도구 호출 및 사용자 지정 코드에 대한 가시성은 호스팅 라이브러리 및 프레임워크 계측에 따라 달라집니다. 서비스 측 수집 및 추가 클라이언트 계측은 Foundry에서 추적 설정을 참조하세요.
툴킷의 트레이스 상세 정보 조회는 현재 지난 7일간의 기록을 대상으로 합니다. 이는 보존 설정이 아닌 쿼리 창입니다. 이전 데이터의 경우 연결된 작업 영역의 데이터 보존 구성에 따라 Foundry 포털 또는 Azure Monitor를 사용하세요.
데이터, 액세스, 보존 및 비용
콘텐츠 캡처를 사용하도록 설정하거나 클라우드 리소스를 연결하기 전에 원격 분석의 위치를 결정합니다. 동일한 요청은 로컬 스팬, 클라우드 텔레메트리 및 모델 또는 도구 공급자에게 전송된 데이터를 생성할 수 있습니다.
| 데이터 원본 | Responsibilities |
|---|---|
| 로컬 트레이스 | 로컬 데이터베이스 및 복사된 데이터에 대한 액세스를 보호합니다. 수집기를 중지해도 애플리케이션에 구성된 다른 내보내기는 중지되지 않습니다. |
| 클라우드 트레이스 | Application Insights와 로그 분석은 액세스, 보존 및 원격 측정 요금을 제어합니다. 툴킷 필터는 해당 정책을 변경하지 않습니다. |
| 모델 및 도구 호출 | 로컬 컬렉션은 요청이 컴퓨터를 벗어나는 것을 방지하지 않습니다. Microsoft 이외의 도구를 포함해 각 연결된 서비스의 데이터 처리 방식을 검토하세요. |
보안 및 개인정보 보호, 데이터 보존 및 비용 측면에서는 Foundry의 트레이스 지침을 활용하세요. 프로덕션 ID, 네트워크 격리 및 다운스트리밍 액세스에 대해서는 호스팅 에이전트 보안 및 데이터 처리 지침을 따르세요. 로컬 자격 증명을 배포된 에이전트의 권한으로 취급하지 마세요.
Troubleshooting
| Issue | 확인할 사항 |
|---|---|
| 추적 기능은 사이드바에서는 사용할 수 없습니다. | 현재 확장 프로그램이 실행 환경에 설치되어 있고 활성화되어 있는지 확인하세요. 로컬 트레이싱을 위해서는 네이티브 SQLite 구성 요소가 로드되어야 합니다. |
| 수집기가 시작되지 않습니다. | 포트 4317 또는 4318을 사용하여 다른 프로세스를 확인하고 도구 키트 출력을 검토합니다. 동일한 포트에서 경쟁하는 수집기를 사용하지 마세요. |
| 로컬 요청이 성공하지만 추적이 나타나지 않습니다. | 요청 전에 계측이 실행되는지, 컬렉터가 실행 중인지, 그리고 익스포터가 올바른 프로토콜과 엔드포인트를 사용하는지 확인하세요. 엔드포인트 재정의, 내보내기 오류 및 버퍼링된 원격 분석을 확인한 다음 새로 고침을 선택합니다. |
| 스팬은 메시지 없이 표시됩니다. | 콘텐츠 녹화 설정 및 지원되는 속성을 확인합니다. 일부 라이브러리에는 로그 익스포터도 필요합니다. 콘텐츠가 누락되었다고 해서 반드시 컬렉션이 실패한 것은 아닙니다. |
| 클라우드 추적은 비어 있습니다. | 프로젝트 및 Application Insights 연결을 확인하고, 새 트래픽을 생성하고, 시간 범위를 확장하고, 수집 지연을 감안하세요. |
| 권한 부여 오류로 클라우드 쿼리가 실패합니다. | 서비스 필수 구성 요소를 사용하여 보호된 테이블을 포함하여 Application Insights 및 Log Analytics 대한 읽기 액세스를 확인합니다. |
| 이전 트레이스 기록에는 툴킷에 세부 정보가 없습니다. | 상세 조회는 7일간의 정보를 포함합니다. Foundry 또는 Azure Monitor에서 이전에 보존된 레코드를 쿼리합니다. |