Claude-skill-registry gcp-logs

GCP Cloud Logging 로그 조회/필터링

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gcp-logs" ~/.claude/skills/majiayu000-claude-skill-registry-gcp-logs-8f1242 && rm -rf "$T"
manifest: skills/data/gcp-logs/SKILL.md
source content

GCP Cloud Logging

Cloud Logging에서 로그를 조회하고 필터링합니다.

사용법

/gcp-logs                          # 최근 로그 조회
/gcp-logs errors                   # 에러 로그만 조회
/gcp-logs my-vm                    # 특정 VM 로그
/gcp-logs --service cloudrun       # Cloud Run 로그

Workflow

1. 기본 로그 조회

PROJECT_ID=$(gcloud config get-value project)

# 최근 로그 (기본 100개)
gcloud logging read --project=$PROJECT_ID --limit=100 \
  --format="table(timestamp,severity,resource.type,textPayload)"

# 최근 1시간
gcloud logging read --project=$PROJECT_ID \
  --freshness=1h \
  --limit=100

2. 에러 로그 필터링

# ERROR 이상
gcloud logging read 'severity>=ERROR' \
  --project=$PROJECT_ID \
  --limit=50 \
  --format="table(timestamp,severity,resource.type,textPayload)"

# 특정 시간 범위
gcloud logging read 'severity>=ERROR AND timestamp>="2024-01-15T00:00:00Z"' \
  --project=$PROJECT_ID \
  --limit=100

3. 리소스별 로그

# VM 인스턴스
gcloud logging read 'resource.type="gce_instance" AND resource.labels.instance_id="INSTANCE_ID"' \
  --project=$PROJECT_ID \
  --limit=100

# Cloud Run
gcloud logging read 'resource.type="cloud_run_revision" AND resource.labels.service_name="SERVICE_NAME"' \
  --project=$PROJECT_ID \
  --limit=100

# Cloud Functions
gcloud logging read 'resource.type="cloud_function" AND resource.labels.function_name="FUNCTION_NAME"' \
  --project=$PROJECT_ID \
  --limit=100

# Kubernetes (GKE)
gcloud logging read 'resource.type="k8s_container" AND resource.labels.cluster_name="CLUSTER_NAME"' \
  --project=$PROJECT_ID \
  --limit=100

4. 텍스트 검색

# 특정 텍스트 포함
gcloud logging read 'textPayload:"error" OR jsonPayload.message:"error"' \
  --project=$PROJECT_ID \
  --limit=50

# 정규식 (RE2)
gcloud logging read 'textPayload=~"Exception.*failed"' \
  --project=$PROJECT_ID \
  --limit=50

5. JSON 로그 필터

# JSON 필드 필터
gcloud logging read 'jsonPayload.level="error"' \
  --project=$PROJECT_ID \
  --limit=50

# 중첩 필드
gcloud logging read 'jsonPayload.request.status>=500' \
  --project=$PROJECT_ID \
  --limit=50

6. 실시간 로그 스트리밍

# tail -f 스타일
gcloud logging tail --project=$PROJECT_ID

# 필터와 함께
gcloud logging tail 'severity>=WARNING' --project=$PROJECT_ID

자주 쓰는 필터

용도필터
에러만
severity>=ERROR
경고 이상
severity>=WARNING
특정 시간 이후
timestamp>="2024-01-15T00:00:00Z"
최근 1시간
timestamp>="$(date -u -v-1H +%Y-%m-%dT%H:%M:%SZ)"
HTTP 500 에러
httpRequest.status>=500
특정 사용자
protoPayload.authenticationInfo.principalEmail="user@example.com"

출력 형식

## 로그 조회 결과

### 에러 로그 (최근 1시간)

| 시간 | 심각도 | 리소스 | 메시지 |
|------|--------|--------|--------|
| 14:32:15 | ERROR | cloud_run_revision | Connection refused |
| 14:28:03 | ERROR | gce_instance | Out of memory |
| 14:15:22 | WARNING | cloud_function | Timeout approaching |

---
총 3개 이벤트

### 필터 조건
\`\`\`
severity>=WARNING AND timestamp>="2024-01-15T13:00:00Z"
\`\`\`

로그 내보내기

# BigQuery로 내보내기 (싱크 생성)
gcloud logging sinks create my-sink \
  bigquery.googleapis.com/projects/$PROJECT_ID/datasets/logs \
  --log-filter='severity>=ERROR'

# Cloud Storage로 내보내기
gcloud logging sinks create my-sink \
  storage.googleapis.com/my-log-bucket \
  --log-filter='resource.type="gce_instance"'

로그 기반 메트릭 생성

# 에러 카운트 메트릭
gcloud logging metrics create error-count \
  --description="Count of error logs" \
  --log-filter='severity>=ERROR'

비용

항목무료 티어초과 시
수집50GB/월$0.50/GB
보관 (30일)무료-
보관 (30일+)-$0.01/GB/월

주의사항

  • 기본 보관 기간: 30일
  • 대용량 쿼리는 BigQuery 익스포트 권장
  • 민감 정보 로깅 주의 (PII, 비밀번호 등)