기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CloudWatch Logs를 사용하여 지식 기반 모니터링
Amazon Bedrock은 모니터링 시스템을 지원하므로 지식 기반에 대한 모든 데이터 수집 작업의 실행을 이해하는 데 도움이 됩니다. 다음 섹션에서는 AWS Management Console 및 CloudWatch API를 모두 사용하여 Amazon Bedrock 지식 기반에 대한 로깅 시스템을 활성화하고 구성하는 방법을 다룹니다. 이 로깅 시스템을 사용하여 지식 기반 리소스의 데이터 수집을 확인할 수 있습니다.
사전 조건
Amazon Bedrock 지식 기반에 대한 로깅을 활성화하기 전에 다음을 확인합니다.
-
콘솔에 로그인한 사용자 계정에 권한이
bedrock:AllowVendedLogDeliveryForResource있습니다. 이 권한을 통해 지식 기반 리소스에 대한 로그를 전달할 수 있습니다. 필요한 모든 권한이 있는 IAM 정책의 예는 다양한 전송 대상에 대한 판매 로그 권한을 참조하세요. 특정 로깅 대상 리소스(CloudWatch Logs, Amazon S3 또는 Amazon Data Firehose)에 대한 업데이트 허용을 포함하여 로깅 대상에 대한 IAM 역할/권한 정책 예제를 따릅니다. -
CloudWatch Logs 전송 관련 API 호출에 대한 할당량 제한이 있는지 확인합니다. 자세한 내용은 CloudWatch Logs 서비스 할당량 설명서를 참조하세요. 제한을 초과하면
ServiceQuotaExceededException오류가 발생합니다.
지원되는 로그 유형
Amazon Bedrock 지식 기반은 다음 로그 유형을 지원합니다.
-
APPLICATION_LOGS: 데이터 수집 작업 중에 특정 파일의 현재 상태를 추적하는 로그입니다.
Amazon Bedrock 지식 기반에 대한 로깅 활성화(콘솔)
콘솔을 사용하여 로깅을 활성화하려면
-
지식 기반을 생성합니다. 지침은 지식 기반 생성을 참조하세요.
-
지식 기반을 편집하여 로그 전송 옵션을 추가합니다.
참고
구조화된 데이터 스토어 또는 Kendra GenAI 인덱스를 사용하여 지식 기반을 생성할 때는 로그 전송이 지원되지 않습니다.
-
다음을 포함하여 로그 전송 세부 정보를 구성합니다.
-
로깅 대상(CloudWatch Logs, Amazon S3 또는 Amazon Data Firehose)
-
(CloudWatch Logs를 사용하는 경우) 로그 그룹 이름
-
(Amazon S3를 사용하는 경우) 버킷 이름
-
(Amazon Data Firehose를 사용하는 경우) Firehose 스트림
-
-
계정에 IAM 정책을 연결하여 대상에 로그를 쓸 수 있는 권한을 부여합니다.
다음 예제 IAM 정책은 CloudWatch Logs를 사용할 때 필요한 권한을 부여합니다.
-
콘솔에서 로그 전송 상태가 전송 활성으로 표시되는지 확인합니다.
Amazon Bedrock 지식 기반에 대한 로깅 활성화(CloudWatch API)
CloudWatch API를 사용하여 로깅을 활성화하려면
-
Amazon Bedrock API 또는 Amazon Bedrock 콘솔을 사용하여 지식 기반을 생성합니다. 지침은 지식 기반 생성을 참조하세요.
-
지식 기반의 ARN을 가져옵니다. GetKnowledgeBase API를 호출하여 ARN을 검색합니다. 지식 기반 ARN은 다음 형식을 따릅니다.
arn:aws:bedrock:your-region:your-account-id:knowledge-base/knowledge-base-id -
PutDeliverySource API를 호출하여 지식 기반에 대한 전송 소스를 생성합니다. 지식 기반 ARN을 로 전달합니다
resourceArn. 수집 작업 중 파일 상태를 추적APPLICATION_LOGS하는logType로 설정합니다.{ "logType": "APPLICATION_LOGS", "name": "my-knowledge-base-delivery-source", "resourceArn": "arn:aws:bedrock:your-region:your-account-id:knowledge-base/knowledge_base_id" } -
PutDeliveryDestination API를 호출하여 로그가 저장되는 위치를 구성합니다.
-
CloudWatch Logs, Amazon S3 또는 Amazon Data Firehose를 대상으로 선택합니다.
-
선택한 대상의 ARN을 지정합니다.
-
outputFormat를json, ,plain,w3c, 중 하나로 설정합니다rawparquet.
다음 예제에서는 로그를 Amazon S3 버킷에 JSON 형식으로 저장합니다.
{ "deliveryDestinationConfiguration": { "destinationResourceArn": "arn:aws:s3:::bucket-name" }, "name": "string", "outputFormat": "json", "tags": { "key" : "value" } }교차 계정 로그를 전송하려면
PutDeliveryDestinationPolicyAPI를 사용하여 대상 계정에 IAM 정책을 할당합니다. 이 정책은 한 계정에서 다른 계정으로의 전송을 허용합니다. -
-
CreateDelivery API를 호출하여 전송 소스를 대상에 연결합니다. 그러면 전송 소스가 최종 대상과 연결됩니다.
{ "deliveryDestinationArn": "string", "deliverySourceName": "string", "tags": { "string" : "string" } }
참고
를 사용하려는 경우 다음을 사용할 CloudFormation수 있습니다.
ResourceArn은 KnowledgeBaseARN이며 LogType은 지원되는 로그 유형의 APPLICATION_LOGS여야 합니다.
지식 기반 로그 예제
Amazon Bedrock 지식 기반에는 데이터 수집 수준 로그와 리소스 수준 로그가 있습니다.
다음은 데이터 수집 작업 로그의 예제입니다.
{ "event_timestamp": 1718683433639, "event": { "ingestion_job_id": "<IngestionJobId>", "data_source_id": "<IngestionJobId>", "ingestion_job_status": "INGESTION_JOB_STARTED" | "STOPPED" | "COMPLETE" | "FAILED" | "CRAWLING_COMPLETED" "knowledge_base_arn": "arn:aws:bedrock:<region>:<accountId>:knowledge-base/<KnowledgeBaseId>", "resource_statistics": { "number_of_resources_updated": int, "number_of_resources_ingested": int, "number_of_resources_scheduled_for_update": int, "number_of_resources_scheduled_for_ingestion": int, "number_of_resources_scheduled_for_metadata_update": int, "number_of_resources_deleted": int, "number_of_resources_with_metadata_updated": int, "number_of_resources_failed": int, "number_of_resources_scheduled_for_deletion": int } }, "event_version": "1.0", "event_type": "StartIngestionJob.StatusChanged", "level": "INFO" }
다음은 리소스 수준 로그의 예제입니다.
{ "event_timestamp": 1718677342332, "event": { "ingestion_job_id": "<IngestionJobId>", "data_source_id": "<IngestionJobId>", "knowledge_base_arn": "arn:aws:bedrock:<region>:<accountId>:knowledge-base/<KnowledgeBaseId>", "document_location": { "type": "S3", "s3_location": { "uri": "s3:/<BucketName>/<ObjectKey>" } }, "status": "<ResourceStatus>" "status_reasons": String[], "chunk_statistics": { "ignored": int, "created": int, "deleted": int, "metadata_updated": int, "failed_to_create": int, "failed_to_delete": int, "failed_to_update_metadata": int }, }, "event_version": "1.0", "event_type": "StartIngestionJob.ResourceStatusChanged", "level": "INFO" | "WARN" | "ERROR" }
리소스의 status는 다음 중 하나일 수 있습니다.
-
SCHEDULED_FOR_INGESTION,SCHEDULED_FOR_DELETION,SCHEDULED_FOR_UPDATE,SCHEDULED_FOR_METADATA_UPDATE: 이러한 상태 값은 지식 기반의 현재 상태와 데이터 소스의 변경 사항 간의 차이를 계산한 후 리소스 처리가 예약되었음을 나타냅니다. -
RESOURCE_IGNORED: 이 상태 값은 리소스가 처리에서 무시되었음을 나타내며, 그 이유는status_reasons속성 내에 자세히 설명되어 있습니다. -
EMBEDDING_STARTED및EMBEDDING_COMPLETED: 이러한 상태 값은 리소스에 대한 벡터 임베딩이 시작되고 완료된 시기를 나타냅니다. -
INDEXING_STARTED및INDEXING_COMPLETED: 이러한 상태 값은 리소스에 대한 인덱싱이 시작되고 완료된 시기를 나타냅니다. -
DELETION_STARTED및DELETION_COMPLETED: 이러한 상태 값은 리소스에 대한 삭제가 시작되고 완료된 시기를 나타냅니다. -
METADATA_UPDATE_STARTED및METADATA_UPDATE_COMPLETED: 이러한 상태 값은 리소스에 대한 메타데이터 업데이트가 시작되고 완료된 시기를 나타냅니다. -
EMBEDDING_FAILED,INDEXING_FAILED,DELETION_FAILED,METADATA_UPDATE_FAILED: 이러한 상태 값은 리소스 처리가 실패했음을 나타내며, 그 이유는status_reasons속성 내에 자세히 설명되어 있습니다. -
INDEXED,DELETED,PARTIALLY_INDEXED,METADATA_PARTIALLY_INDEXED,FAILED: 문서 처리가 완료되면 문서의 최종 상태와chunk_statistics속성 내 처리 요약이 포함된 로그가 게시됩니다. -
CRAWLED,RESOURCE_CRAWLED,RESOURCE_FETCHED,CRAWLING_COMPLETED,CONNECTOR_CRAWLING_COMPLETED: 이러한 상태 값은 리소스가 데이터 소스 커넥터에서 크롤링되거나 가져왔음을 나타냅니다. -
PENDING,STARTING,IN_PROGRESS: 이러한 상태 값은 리소스가 대기열에 있거나 현재 처리 중임을 나타냅니다. -
DELETE_IN_PROGRESS,DELETING: 이러한 상태 값은 리소스가 삭제되고 있음을 나타냅니다. -
INGESTION_JOB_STARTED,INGESTION_JOB_FAILED: 이러한 상태 값은 리소스에 대한 전체 수집 작업의 시작 또는 실패를 나타냅니다. -
GRAPH_ENTITY_EXTRACTION_STARTED,GRAPH_ENTITY_EXTRACTION_COMPLETED,GRAPH_ENTITY_EXTRACTION_FAILED: 이러한 상태 값은 그래프 데이터 스토어를 사용하는 지식 기반에 대한 그래프 개체 추출의 진행 상황을 나타냅니다.
지식 기반 로그를 디버깅하기 위한 일반적인 쿼리의 예
쿼리를 사용하여 로그와 상호 작용할 수 있습니다. 예를 들어, 문서 또는 데이터를 수집하는 동안 RESOURCE_IGNORED 이벤트 상태의 모든 문서를 쿼리할 수 있습니다.
다음은 CloudWatch Logs Insights를 사용하여 생성된 로그를 디버깅하는 데 사용할 수 있는 몇 가지 일반적인 쿼리입니다.
-
특정 S3 문서에 대해 생성된 모든 로그를 쿼리합니다.
filter event.document_location.s3_location.uri = "s3://<bucketName>/<objectKey>" -
데이터 수집 작업 중에 무시된 모든 문서를 쿼리합니다.
filter event.status = "RESOURCE_IGNORED" -
문서의 벡터 임베딩 중에 발생한 모든 예외를 쿼리합니다.
filter event.status = "EMBEDDING_FAILED" -
문서를 벡터 데이터베이스로 인덱싱하는 동안 발생한 모든 예외를 쿼리합니다.
filter event.status = "INDEXING_FAILED" -
벡터 데이터베이스에서 문서를 삭제하는 동안 발생한 모든 예외를 쿼리합니다.
filter event.status = "DELETION_FAILED" -
벡터 데이터베이스에서 문서의 메타데이터를 업데이트하는 동안 발생한 모든 예외를 쿼리합니다.
filter event.status = "DELETION_FAILED" -
데이터 수집 작업을 실행하는 동안 발생한 모든 예외를 쿼리합니다.
filter level = "ERROR" or level = "WARN"