집계 싱크

Google Cloud 조직의 모든 프로젝트, 폴더, 결제 계정에서 로그 항목을 내보낼 수 있는 집계 싱크를 만들 수 있습니다. 예를 들어 조직의 프로젝트에서 감사 로그 항목을 집계하여 중앙 위치로 내보낼 수 있습니다.

개념

집계 싱크 기능이 없으면 싱크는 싱크가 생성된 정확한 리소스, 즉 Google Cloud 프로젝트, 조직, 폴더 또는 결제 계정의 로그 항목만 내보낼 수 있습니다.

집계 싱크 기능을 사용하려면 Google Cloud 조직 또는 폴더에서 싱크를 만들고 싱크의 includeChildren 매개변수를 True로 설정합니다. 그러면 싱크가 조직 또는 폴더에서 그리고 포함된 폴더, 결제 계정 또는 프로젝트에서 (재귀적으로) 로그 항목을 내보낼 수 있습니다. 싱크의 필터를 사용하면 프로젝트, 리소스 유형 또는 이름이 지정된 로그에서 로그 항목을 지정할 수 있습니다.

싱크와 싱크를 만드는 방법에 대한 자세한 내용은 API에서 로그 내보내기명령줄 도구로 싱크 만들기를 참조하세요.

내보내기 대상 만들기

gcloud 명령줄 도구, Cloud Console 또는 Google Cloud APIs를 사용하여 싱크 전에 로그 싱크 대상을 만들어야 합니다.

싱크에 지원되는 대상은 다음과 같습니다.

로그 싱크의 서비스 계정에 대상에 대한 쓰기 권한이 있으면 조직의 어떠한 Google Cloud 프로젝트에서도 대상을 만들 수 있습니다.

집계 싱크 만들기

Google Cloud 폴더, 결제 계정 또는 조직에서 집계 싱크를 만들려면 Cloud Logging API 또는 gcloud 명령줄 도구를 사용합니다.

Logging API

로깅 싱크를 만들려면 Logging API에서 organizations.sinks.create, folders.sinks.create 또는 billingAccounts.sinks.create를 사용합니다. 메서드 인수는 다음과 같이 준비합니다.

  1. parent 매개변수는 싱크를 만들 Google Cloud 조직, 폴더 또는 결제 계정으로 설정합니다. 이 상위 요소는 다음 중 하나여야 합니다.

    • organizations/[ORGANIZATION_ID]
    • folders/[FOLDER_ID]
    • billingAccounts/[BILLING_ACCOUNT_ID]
  2. 메서드 요청 본문의 LogSink 객체에서 다음을 진행합니다.

    • includeChildrenTrue로 설정합니다.

    • 모든 프로젝트의 로그 항목이 쿼리와 일치해야 한다는 점을 기억하면서 query 속성을 설정합니다.

      유용한 쿼리 예시는 집계 싱크에 쿼리 사용을 참조하세요.

    • 나머지 LogSink 필드는 일반 싱크와 동일하게 설정합니다. 자세한 내용은 싱크 만들기를 참조하세요.

  3. organizations.sinks.create 또는 folders.sinks.create를 호출하여 싱크를 만듭니다.

  4. API 응답에서 싱크를 만드는 데 사용된 서비스 계정 이름을 검색합니다.

  5. 서비스 계정에 싱크 대상에 대한 쓰기 권한을 부여합니다.

    싱크 대상에 이러한 변경을 적용할 권한이 없으면 이러한 변경을 할 수 있는 사람에게 서비스 계정 이름을 전송합니다.

    서비스 계정에 리소스 권한을 부여하는 방법에 대한 자세한 내용은 서비스 계정에 역할 부여를 참조하세요.

gcloud

로깅 싱크를 만들려면 logging sinks create 명령어를 사용합니다.

  1. 싱크 이름, 싱크 대상, 로그 쿼리, 폴더 ID, 결제 계정 또는 조직을 지정합니다.

    예를 들어 다음과 같이 폴더 수준의 집계 싱크를 설정합니다.

    gcloud logging sinks create [SINK_NAME] \
    storage.googleapis.com/[BUCKET_NAME] --include-children \
    --folder=[FOLDER_ID] --log-filter="logName:activity"

    참고:

    • 조직 수준에서 싱크를 만들려면 --folder=[FOLDER_ID]--organization=[ORGANIZATION_ID]로 바꿉니다. 결제 계정의 경우에는 --billing-account=[BILLING_ACCOUNT_ID]로 바꿉니다.

    • 싱크에 조직 내 모든 프로젝트를 포함하려면 --include-children 플래그를 설정해야 합니다. 이는 create--organization 플래그를 전달하는 경우에도 해당됩니다. false(기본값)로 설정하면 싱크가 호스트 리소스의 로그만 내보내게 됩니다.

    • 싱크를 만들려면 상위 요소에 대한 로그 구성 작성자 IAM 역할이 있어야 합니다. Logging IAM 역할에 대한 자세한 내용은 액세스 제어 가이드를 참조하세요.

    • 유용한 쿼리 예시는 집계 싱크에 쿼리 사용을 참조하세요.

  2. 명령어 결과에서 싱크를 만드는 데 사용된 서비스 계정 이름을 검색합니다.

  3. 서비스 계정에 싱크 대상에 대한 쓰기 권한을 부여합니다.

    싱크 대상에 이러한 변경을 적용할 권한이 없으면 이러한 변경을 할 수 있는 사람에게 서비스 계정 이름을 전송합니다.

    서비스 계정에 리소스 권한을 부여하는 방법에 대한 자세한 내용은 서비스 계정에 역할 부여를 참조하세요.

집계 싱크에 필터 사용

여타 싱크와 마찬가지로 집계 싱크도 개별 로그 항목을 선택하는 필터를 포함합니다. 필터에 대한 자세한 내용은 쿼리 언어 로깅을 참조하세요.

다음은 집계 싱크 기능을 사용할 때 유용한 필터 비교의 예입니다. 일부 예에서는 다음과 같은 표기법을 사용합니다.

  • :은 하위 문자열 연산자입니다. = 연산자를 대체하지 마세요.
  • ...은 추가 쿼리 비교를 나타냅니다.
  • 변수는 대괄호 []로 표시됩니다. 이를 유효한 값으로 바꿉니다.

내보내기 소스 선택

특정 프로젝트, 폴더 또는 조직에서 로그를 내보내려면 다음 샘플 비교 중 하나를 사용합니다.

logName:"projects/[PROJECT_ID]/logs/" AND ... 
logName:("projects/[PROJECT_A_ID]/logs/" OR "projects/[PROJECT_B_ID]/logs/") AND ... 
logName:"folders/[FOLDER_ID]/logs/" AND ... 
logName:"organizations/[ORGANIZATION_ID]/logs/" AND ... 

리소스 선택

프로젝트 내의 특정 리소스에서만 로그를 내보내려면 여러 가지 비교를 사용하여 리소스를 정확하게 지정합니다.

logName:"projects/[PROJECT_ID]/logs" AND
resource.type=[RESOURCE_TYPE] AND
resource.labels.instance_id=[INSTANCE_ID]

리소스 유형 목록은 모니터링 리소스 목록을 참조하세요.

로그 항목 샘플링

로그 항목 중 임의의 샘플을 내보내려면 기본 제공 함수 sample을 추가합니다. 예를 들어 현재 쿼리와 일치하는 로그 항목 중 10%만 내보내려면 다음과 같이 추가합니다.

sample(insertId, 0.10) AND ...

자세한 내용은 sample 함수를 참조하세요.

Cloud Logging 쿼리에 대한 자세한 내용은 Logging 쿼리 언어를 참조하세요.

가격 책정

내보낸 로그에는 Cloud Logging 요금이 청구되지 않지만 대상 요금이 청구될 수 있습니다. 자세한 내용은 해당 제품의 가격 책정 페이지를 참조하세요.