SuperAPI AI 工具集

gcp-logs

部署与运维

查看项目

更新于 10-16 02:03

技能介绍

GCP Logs Query Skill 是一个基于 gcloud CLI 的日志查询技能,用于读取和查询 Hyperlane 代理在 GCP 上的日志。

用途 适用于以下场景:排查 relayer、validator 或 scraper 的行为;调试消息处理问题;分析运维事件;在代理日志中查找特定错误或模式。

前置条件 需要已安装并完成认证的 gcloud CLI,以及对 abacus-labs-dev GCP 项目的访问权限。

基础查询模板 技能提供三类组件的基础查询模板,均使用 gcloud logging read 命令,并包含针对 k8s_container 资源、abacus-labs-dev 项目、us-east1-c 位置、hyperlane-mainnet 集群、mainnet3 命名空间的过滤条件:

  • Relayer(Omniscient):过滤 component="relayer" 与 instance="omniscient-relayer"。
  • Validator:过滤 component="validator"。
  • Scraper:过滤 component="scraper3" 与 instance="omniscient-scraper"。

这些模板均使用 --project=abacus-labs-dev、--limit=50、--format=json、--freshness=1d 参数。

噪音过滤 为减少占用上下文且无价值的噪音日志行,技能列出了一组可附加的过滤条件,例如排除 message 为 "Found log(s) in index range"、"Dispatching get_public_key"、"Ingesting leaf"、"Message already marked as processed in DB"、"Message destined for self, skipping"、"Popped OpQueue operations"、"Validator returned latest index"、"Found signed checkpoint"、"Fast forwarded current sequence"、"Cursor can't make progress, sleeping"、"fallback_request"、"No message found in DB for leaf index"、"Processor working on message"、"Message destined for unknown domain, skipping" 等,以及排除 NOT "Instantiated AWS signer" 和 -jsonPayload.fields.return="Ok(None)"。

渐进式查询策略(节省 token)

  1. 先只获取 message 字段,使用 --format='json(jsonPayload.fields.message,timestamp)',快速概览而不拉取完整日志负载。
  2. 对感兴趣的条目再获取完整上下文,使用 --format=json。
  3. 需要特定细节时,使用 jq 或 grep 提取指定字段,例如 jq '.[].jsonPayload.fields.error'。

常见查询模式 技能给出多种查询模式,均在基础查询上追加条件:按消息 ID 搜索("0x[MESSAGE_ID]");搜索错误/警告(severity>="WARNING");按链/域搜索(jsonPayload.spans.domain:"[chain_name]");搜索卡住的消息(jsonPayload.fields.num_retries>=5);搜索 Gas 估算错误("eth_estimateGas");按应用上下文搜索(jsonPayload.fields.app_context:"[APP_CONTEXT]")。

时间范围选项 可使用 --freshness=1h(最近一小时)、--freshness=1d(最近一天)、--freshness=7d(最近一周),或在过滤条件中使用显式时间戳如 timestamp>="2026-01-27T00:00:00Z"。

输出格式选项 --format=json 为完整 JSON(详细、占用上下文多);--format='json(jsonPayload.fields.message,timestamp)' 仅含特定字段(高效);--format='value(jsonPayload.fields.message)' 仅输出值、无结构。

关键日志字段 技能列出需重点关注的字段:jsonPayload.fields.message(主日志消息)、jsonPayload.fields.error(错误详情)、jsonPayload.spans[].domain(涉及的链)、jsonPayload.fields.num_retries(重试次数)、jsonPayload.fields.operations(待处理消息详情)、jsonPayload.span.id(span 上下文中的消息 ID)。

环境差异 mainnet3 环境使用命名空间 mainnet3、集群 hyperlane-mainnet;testnet4 环境使用命名空间 testnet4、集群 hyperlane-mainnet。

提示 建议始终先做精确查询(先搜索确切的消息 ID 或错误模式);使用噪音过滤(基础日志噪音很大,务必过滤);用 --limit 限制结果以避免上下文过载;渐进式展开细节(先只取 message 字段,再按需扩展);为查询设定时间范围(用 --freshness 或 timestamp 过滤);对大量结果使用 grep/jq 在本地后处理。