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.mdsource 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
자주 쓰는 필터
| 용도 | 필터 |
|---|---|
| 에러만 | |
| 경고 이상 | |
| 특정 시간 이후 | |
| 최근 1시간 | |
| HTTP 500 에러 | |
| 특정 사용자 | |
출력 형식
## 로그 조회 결과 ### 에러 로그 (최근 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, 비밀번호 등)