이 페이지에서는 Service Infrastructure를 사용하여 관리형 서비스가 서비스 제작자 및 서비스 소비자 프로젝트 모두에 로그를 보낼 수 있도록 하는 방법을 설명합니다.
Service Control API는 구조화된 로그 데이터나 구조화되지 않은 로그 데이터를 받아들이고 일괄 처리하여 Cloud Logging에 전달합니다. 개발자 및 개발자의 관리형 서비스 사용자 모두 Google Cloud Console 및 Google API Console을 사용하여 로그 데이터를 보거나 Cloud Logging API를 사용하여 데이터에 프로그래매틱 방식으로 액세스할 수 있습니다.
Logging만으로도 관리형 서비스는 관리형 서비스의 개발자가 사용할 로그를 생성할 수 있지만, Service Control API에서는 사용자까지도 사용할 수 있는 로그를 생성할 수 있습니다. 그러면 사용자들이 자신이 관리형 서비스를 어떻게 사용하고 있는지를 이해하고 진단할 수 있습니다.
로그 구성
Service Control API에 로그를 보내기 전에 서비스 구성에서 세 가지 정보를 지정해야 합니다.
로그 이름: 하나 이상의 개별 로그가 있을 수 있습니다. 각 로그는 고유한 이름으로 식별됩니다. 개별 로그를 사용하여 데이터를 더 쉽게 시각화하거나 사용할 수 있도록 함으로써 개별 데이터 유형을 격리할 수 있습니다.
모니터링 리소스: 모니터링 리소스는 일부 로깅 데이터를 생성하는 클라우드 항목을 나타냅니다. 서비스 구성에서 모니터링 리소스를 정의하려면 기술 사양에서 monitored_resource.proto를 참조하세요. 모니터링과 로깅 모두에 동일한 모니터링 리소스를 사용하는 것이 좋습니다.
로그 구성: 로그 스트림과 연관된 모니터링되는 리소스 그리고 각 로그를 받아야 하는 서비스 프로듀서 또는 서비스 소비자 프로젝트를 지정할 수 있습니다. 로그 연결을 구성하려면 기술 사양에서 logging.proto를 참조하세요.
다음 서비스 구성 예시에서 activity_log
로그는 서비스 소비자에게 전송되도록 구성되어 있습니다.
# The definition of the monitored resource to be used.
monitored_resources:
- type: library.appspot.com/Branch
description: A library branch
display_name: Library Branch
launch_stage: ALPHA
labels:
- key: resource_container
description: The Google Cloud resource container (ie. project id) for
the branch.
- key: location
description: The Google Cloud region the branch is located.
- key: branch_id
description: The ID of the branch.
# The log name to be used.
logs:
- name: activity_log
# The logging configuration.
logging:
consumer_destinations:
- monitored_resource: library.appspot.com/Branch
logs:
- activity_log
이러한 구성을 작성한 후에는 서비스 구성 관리 및 서비스 출시 관리에 따라 서비스 구성을 Service Management API로 푸시하면 Cloud Logging에서 모니터링되는 리소스가 구성됩니다.
로그 보고
서비스 구성 푸시가 완료되면 Service Control API를 호출하여 로그 항목을 보고할 수 있습니다. 다음 예시에서는 gcurl
명령어를 사용하여 호출을 보여줍니다. 설정하는 방법을 알아보려면 Service Control API 시작하기를 참조하세요.
gcurl -d "{ 'operations': [ { 'operationId': 'e8bf36ef-f9b5-4274-b4f9-079a3731e6e5', 'operationName': 'New book arrived', 'consumerId': 'projects/library-consumer', 'startTime': '`date +%FT%T%:z`', 'endTime': '`date +%FT%T%:z`', 'labels': { 'location': 'us-east1', 'branch_id': 'my-test-library-branch' }, 'logEntries': [ { 'severity': 'INFO', 'textPayload': 'new book arrived', 'name': 'activity_log' } ] } ] }" https://servicecontrol.googleapis.com/v1/services/endpointsapis.appspot.com:report