用途:通过本地 gcloud CLI 追踪并分析指定服务、项目与用户邮箱的 Google Cloud 日志,适用于检查日志、追踪错误、调试服务等场景。用户只需提供服务名,项目与账号从缓存解析。
主要能力:
- 始终先读取 .claude/skills/gcloud-log/context.json 获取已知账号、项目与服务及其关联凭据,无需询问用户。
- 按名称(精确或子串)在 services[] 中解析服务→projectId + account;多条匹配(如生产与开发)时需询问用户是 prod 还是 dev;无匹配时回退到发现流程。
- 缓存未命中时用 gcloud run services list --project=PROJECT_ID --account=ACCOUNT --format="value(metadata.name,status.url)" 发现服务,并更新 context.json 的 services[] 和 _meta.last_updated。
- 需要时用 gcloud config set account ACCOUNT_EMAIL 切换账号。
- 按服务类型映射资源类型:Cloud Run→cloud_run_revision,Cloud Functions→cloud_function,App Engine→gae_app,GKE→k8s_container,Compute Engine→gce_instance,Cloud SQL→cloudsql_database。
- 支持最近日志、仅错误、用户活动(审计日志)、时间窗口、关键字/文本搜索、HTTP 4xx/5xx、慢请求、按请求 ID 追踪,以及按时间正序排列的查询。
使用方式:查询前必须将用户所述时间转换为 UTC,可参考 context.json 中 projects[].scheduler_timezone,缺失时询问用户。示例:Europe/Paris(夏令时 UTC+2)下“5月1日凌晨1点”应转为 2026-04-30T23:00:00Z。务必使用 --format="value(timestamp,severity,textPayload,jsonPayload.message)",禁止使用 --format=json,否则因载荷含原始控制字符会导致 JSONDecodeError。通过 value() 输出解析制表符分隔的列:时间戳、严重级别、textPayload、jsonPayload.message。输出摘要、按消息分组计数的主要问题、带时间戳的时间线,必要时给出原始样本。
限制与注意事项:value() 会按终端宽度截断长载荷,CLI 无法获取完整载荷,属已知限制;--freshness 支持 1h、6h、24h、7d、30d;--limit 实际最大约 1000;--order=asc 表示按时间正序,默认最新在前;日志过滤语法支持 AND、OR、NOT,: 为子串匹配,= 为精确匹配。令牌过期时提示用户运行 ! gcloud auth login --account=ACCOUNT_EMAIL,不要尝试交互式认证,也不要因认证阻塞,应直接报错并给出指示。缓存文件位于 .claude/skills/gcloud-log/context.json,可用 python3 .claude/skills/gcloud-log/refresh-context.py 刷新。