Container-Optimized OS로 Cloud Logging 사용

Container-Optimized OS에는 일부 시스템 및 컨테이너 로그를 Cloud Logging으로 내보내는 로깅 에이전트가 포함됩니다. Container-Optimized OS 101까지는 x86 기반 Container-Optimized OS 이미지가 fluentd 기반으로 컨테이너화된 Logging 에이전트를 사용했습니다. Container-Optimized OS 105부터는 대체 Logging 에이전트 구현인 fluent-bit가 제공되었습니다. Container-Optimized OS 109부터는 fluent-bit Logging 에이전트가 기본값입니다. 기존 Logging 에이전트인 fluentd는 Container-Optimized OS 113에서 삭제될 예정입니다.

모든 버전의 Arm 기반 Container-Optimized OS 이미지는 fluent-bit Logging 에이전트를 제공합니다.

Logging 에이전트 사용 설정

Logging 에이전트는 기본적으로 사용 중지되어 있습니다. 새 인스턴스를 만들거나 기존 인스턴스를 업데이트하여 이 기능을 사용 설정할 수 있습니다.

액세스 요구사항

Cloud Logging은 적절한 액세스 권한을 부여하는 데 사용할 수 있는 IAM 역할을 제공합니다. 프로젝트에서 로그를 보려면 roles/logging.viewer 역할이 있어야 하며 애플리케이션에 로그 작성 권한이 있어야 합니다. 이 권한을 부여하려면 애플리케이션의 서비스 계정에 IAM 역할 roles/logging.logWriter를 할당하면 됩니다.

권한 및 역할에 대한 자세한 내용은 사전 정의된 역할을 참조하세요.

Logging 에이전트가 사용 설정된 인스턴스 만들기

콘솔

fluent-bit Logging 에이전트가 사용 설정된 Container-Optimized OS에서 Compute Engine 인스턴스를 실행하려면 다음을 수행하세요.

  1. Google Cloud 콘솔에서 Compute Engine 인스턴스 생성 페이지를 엽니다.

    새 Compute Engine 인스턴스 만들기

  2. 인스턴스 이름을 지정합니다.

  3. 부팅 디스크 섹션에서 Container-Optimized OS 이미지를 선택합니다.

  4. 관리, 보안, 디스크, 네트워킹, 단독 테넌시를 클릭하여 추가 옵션을 펼칩니다.

  5. 관리 탭에서 메타데이터 섹션으로 스크롤합니다. google-logging-enabled이고 true인 새 메타데이터 항목을 추가합니다.

  6. 필요에 따라 사용 사례에 대한 다른 옵션을 지정합니다. 자세한 내용은 인스턴스 만들기 및 구성을 참조하세요.

  7. 만들기를 클릭하여 인스턴스를 만들고 부팅합니다.

gcloud

Logging 에이전트가 사용 설정된 Container-Optimized OS에서 Compute Engine 인스턴스를 실행하려면 gcloud compute instances create 명령어를 사용하고 메타데이터에 google-logging-enabled=true를 포함합니다. 예를 들면 다음과 같습니다.

gcloud compute instances create instance-name \
    --image-family cos-stable \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

다음을 바꿉니다.

  • instance-name: VM 인스턴스의 이름입니다.
  • compute-zone: 인스턴스의 컴퓨팅 영역

gcloud 명령어에 대한 자세한 내용은 gcloud compute instances create 참조 문서를 확인하세요. Container-Optimized OS 인스턴스 만들기에 대한 자세한 내용은 인스턴스 만들기 및 구성을 참조하세요.

Logging 에이전트 선택

x86 기반 Container-Optimized OS 105 및 109 이미지는 fluentd(기존) 및 fluent-bit라는 두 가지 Logging 에이전트 구현을 제공합니다. Container-Optimized OS 105는 기본적으로 fluentd를 사용하고 Container-Optimized OS 109는 기본적으로 fluent-bit를 사용합니다. google-logging-use-fluentbit 메타데이터 항목을 사용하여 기본 동작을 변경할 수 있습니다.

Container-Optimized OS 105에서 fluent-bit Logging 에이전트를 사용하려면 google-logging-use-fluentbit 값을 true로 설정합니다.

Container-Optimized OS 109에서 fluentd Logging 에이전트를 사용하려면 google-logging-use-fluentbit 값을 false로 설정합니다.

프로젝트 메타데이터에서 Logging 에이전트 사용 설정

마일스톤 97부터는 프로젝트 메타데이터에서 로깅을 사용 설정할 수 있습니다.

  gcloud compute project-info add-metadata \
    --metadata google-logging-enabled=true

액세스 로그

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 로그에 액세스할 Container-Optimized OS 인스턴스의 이름을 클릭합니다.

  3. 로그 섹션에서 Cloud Logging을 클릭합니다.

  4. 이렇게 하면 지정된 인스턴스의 로그 탐색기가 열립니다. 자세한 내용은 로그 탐색기 사용을 참조하세요.

gcloud

로그에 액세스하려면 gcloud logging read 명령어를 사용합니다. 예를 들면 다음과 같습니다.

gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
    --limit 10 \
    --format json \
    --freshness 30d

다음을 바꿉니다.

  • instance-id: VM 인스턴스의 ID입니다.

이 명령어는 instance-id를 사용하여 지난 30일 동안 JSON 형식의 로그 10개로 제한되는 VM 인스턴스의 로그를 읽으려고 시도합니다.

gcloud 명령어에 대한 자세한 내용은 gcloud logging read 참조 문서를 확인하세요.

기본 원리

Logging 에이전트는 기본적으로 특정 시스템 중요 서비스 및 사용자 애플리케이션 컨테이너에서 Cloud Logging 백엔드로 로그를 전송하도록 구성됩니다. 예를 들어 docker 컨테이너, 선택한 systemd 서비스, 감사 로그, 저널 로그 오류 등의 로그입니다. 전체 기본 로깅 구성에 대한 Container-Optimized OS 특정 구성 소스(x86 이미지Arm 이미지)를 참조하세요.

Container-Optimized OS 105 이하의 x86 이미지에서 Logging 에이전트는 Google Cloud Observability의 컨테이너화된 기존 Logging 에이전트입니다. Logging 에이전트를 시작하는 docker 명령어는 Container-Optimized OS stackdriver-logging systemd 서비스에 대한 소스에 정의되어 있습니다. 실행 중인 컨테이너화된 에이전트 버전은 Container-Optimized OS 소스 app-admin/stackdriver 디렉터리에 정의되어 있습니다.

모든 버전의 ARM 이미지 및 Container-Optimized OS 109 이상의 x86 이미지에서 Logging 에이전트는 fluent-bit라는 기본 제공 OS 패키지입니다. 에이전트는 OS에 기본 제공되며 OS 이미지와 함께 업데이트됩니다.

알려진 제한사항

gcplogs 드라이버와의 호환성

마일스톤 89부터 Container-Optimized OS에 포함된 Logging 에이전트가 사용 설정되고 Docker gcplogs 로깅 드라이버가 하나 이상의 컨테이너에 사용 설정된 경우, 과도한 경우 경고 로그는 포함된 Logging 에이전트에서 출력될 수 있습니다. 이로 인해 로그 노이즈가 발생하거나 Cloud Logging 관련 요금이 증가할 수 있습니다.

해결 방법은 gcplogs를 Docker 로깅 드라이버로 사용하지 않고 Container-Optimized OS에서 구성된 기본 드라이버를 대신 사용하는 것입니다. Container-Optimized OS에 포함된 Logging 에이전트는 컨테이너 로그를 Cloud Logging으로 내보내므로 두 솔루션을 동시에 사용할 필요가 없습니다.

Logging 에이전트 구성 호환성

Logging 에이전트는 x86 기반 Container-Optimized OS 이미지의 fluentd 기반 컨테이너이자 Arm 기반 Container-Optimized OS 이미지의 fluent-bit 바이너리입니다. 두 에이전트의 구성은 호환되지 않습니다. OS 이미지에 내장된 기본 로깅 구성만 사용하는 경우에는 문제가 되지 않습니다. 하지만 커스텀 로깅 구성이 있는 경우 워크로드를 다른 아키텍처 기반의 이미지 또는 Container-Optimized OS의 새 버전으로 마이그레이션할 때 중단이 발생할 수 있습니다.

참조

  • Google Cloud Observability의 기존 Logging 에이전트 문서 Container-Optimized OS에 포함된 컨테이너화된 Logging 에이전트는 레거시 Logging 에이전트의 일부입니다. 따라서 이 문서에서는 Container-Optimized OS 범위를 벗어나서 보다 일반적으로 에이전트에 대한 컨텍스트를 제공할 수 있습니다.
  • Google Cloud Observability 문서 Google Cloud Observability 문서 홈페이지이며, 유용한 컨텍스트를 제공할 수 있습니다.