SuperAPI AI 工具集

quickwit-log-search

数据与分析

查看项目

更新于 10-16 06:07

技能介绍

用途

本技能是一个日志分析专用能力,基于 Quickwit 搜索引擎并与 Terraphim AI 集成,帮助用户探索、分析和排查日志数据中的问题。适用于以下场景:

  • 调查生产环境事故
  • 分析跨服务的错误模式
  • 排查性能问题
  • 安全日志审计
  • 配置日志搜索

主要能力

  • 全文日志搜索:在数百万条日志条目中搜索
  • 字段级过滤:按级别(level)、服务(service)、时间戳(timestamp)等字段查询
  • 多种索引模式:快速显式索引、便捷自动发现、平衡的过滤发现
  • 优雅降级:网络故障时返回空结果,不会崩溃

配置模式

1. 显式索引(生产环境 - 快速)

适用于生产监控、已知索引。配置示例:

{
  "location": "http://localhost:7280",
  "service": "Quickwit",
  "extra_parameters": {
    "default_index": "workers-logs",
    "max_hits": "100",
    "sort_by": "-timestamp"
  }
}

指标:API 调用 1 次,延迟约 100ms,用于生产监控。

2. 自动发现(探索 - 便捷)

适用于日志探索、发现新索引。配置示例:

{
  "location": "http://localhost:7280",
  "service": "Quickwit",
  "extra_parameters": {
    "max_hits": "50",
    "sort_by": "-timestamp"
  }
}

指标:API 调用 N+1 次,延迟约 300-500ms,用于探索。

3. 过滤发现(平衡)

适用于多服务监控且需要控制范围。配置示例:

{
  "location": "http://localhost:7280",
  "service": "Quickwit",
  "extra_parameters": {
    "index_filter": "workers-*",
    "max_hits": "100",
    "sort_by": "-timestamp"
  }
}

指标:API 调用 N+1(已过滤),延迟约 200-400ms,用于多服务模式。

查询语法

基础查询

# 简单文本搜索
/search error

# 短语搜索
/search "connection refused"

# 通配符
/search err*

字段级查询

# 日志级别
/search "level:ERROR"
/search "level:WARN OR level:ERROR"

# 服务名
/search "service:api-gateway"

# 组合
/search "level:ERROR AND service:auth"

时间范围查询

# 某日期之后
/search "timestamp:[2024-01-01 TO *]"

# 日期之间
/search "timestamp:[2024-01-01 TO 2024-01-31]"

# 与级别组合
/search "level:ERROR AND timestamp:[now-1h TO now]"

布尔运算符

# AND(两者都需满足)
/search "error AND database"

# OR(任一匹配)
/search "error OR warning"

# NOT(排除)
/search "error NOT timeout"

# 分组
/search "(error OR warning) AND database"

认证

Bearer Token

{
  "extra_parameters": {
    "auth_token": "Bearer your-token-here",
    "default_index": "logs"
  }
}

使用 1Password 的 Basic Auth

# 从 1Password 设置密码
export QUICKWIT_PASSWORD=$(op read "op://Private/Quickwit/password")

# 配置
{
  "extra_parameters": {
    "auth_username": "cloudflare",
    "auth_password": "${QUICKWIT_PASSWORD}"
  }
}

常见工作流

事故调查

  1. 从宽泛搜索开始:/search "level:ERROR"
  2. 按时间窗口缩小:/search "level:ERROR AND timestamp:[2024-01-15T10:00:00Z TO 2024-01-15T11:00:00Z]"
  3. 聚焦特定服务:/search "level:ERROR AND service:payment-api"
  4. 查找模式:/search "timeout OR connection refused"

错误模式分析

  1. 查找所有错误类型:/search "level:ERROR"
  2. 按消息模式分组:
    • /search "level:ERROR AND message:*database*"
    • /search "level:ERROR AND message:*timeout*"
    • /search "level:ERROR AND message:*authentication*"

性能排查

  1. 查找慢请求:/search "duration:>1000"
  2. 检查特定端点:/search "path:/api/users AND duration:>500"

配置参数

参数 类型 默认值 说明
default_index string 无 显式指定要搜索的索引
index_filter string 无 自动发现的 glob 模式
max_hits string "100" 每个索引的最大结果数
sort_by string "-timestamp" 排序字段(- 表示降序)
timeout_seconds string "10" HTTP 请求超时
auth_token string 无 Bearer token
auth_username string 无 Basic auth 用户名
auth_password string 无 Basic auth 密码

故障排查

连接被拒绝

错误:"Failed to connect to Quickwit"

  • 验证 Quickwit 是否运行:curl http://localhost:7280/health
  • 检查 API 路径前缀(Quickwit 使用 /api/v1/):
    • 正确:curl http://localhost:7280/api/v1/indexes
    • 错误(返回 "Route not found"):curl http://localhost:7280/v1/indexes

自动发现无结果

错误:"No indexes discovered"

  • 验证索引是否存在:curl http://localhost:7280/api/v1/indexes | jq '.[].index_config.index_id'
  • 检查索引过滤模式是否匹配你的索引
  • 尝试回退到显式索引模式

搜索结果为空

  • 测试直接搜索:curl "http://localhost:7280/api/v1/workers-logs/search?query=*&max_hits=10"
  • 验证查询语法和字段名
  • 检查排序字段是否存在于索引 schema 中

性能建议

  • 生产监控使用显式索引模式
  • 将 max_hits 限制在实际需要的数量(通常 50-100)
  • 添加时间约束以缩小搜索范围
  • 索引较多时使用过滤发现而非完整自动发现

限制

  • 依赖 Quickwit 服务器与 Terraphim AI
  • 网络故障时返回空结果(优雅降级)
  • 自动发现模式会产生 N+1 次 API 调用,延迟较高
  • 具体收费、价格、平台支持等信息暂未提供