名称: honeycomb-analysis 描述: Honeycomb 观测性分析。用于查询 Honeycomb 数据集、跟踪或指标。提供脚本和查询语法参考,用于高基数探索。 允许的工具: Bash(python *)
Honeycomb 分析
认证
重要: 凭证由代理层自动注入。不要检查环境变量中的 HONEYCOMB_API_KEY — 它不会对您可见。直接运行脚本;认证是透明处理的。
您可以检查的配置环境变量(非机密):
HONEYCOMB_API_ENDPOINT— Honeycomb API 端点(默认:https://api.honeycomb.io)
强制:统计优先调查
永远不要转储原始事件。 始终遵循此模式:
统计 → 样本 → 模式 → 关联
- 统计优先 — 在采样前了解数量、错误率和顶部模式
- 战略采样 — 基于统计选择正确的策略
- 模式提取 — 聚类相似错误以找到根本原因
- 上下文关联 — 在异常时间戳周围进行调查
可用脚本
所有脚本位于 .claude/skills/observability-honeycomb/scripts/
主要调查脚本
get_statistics.py — 始终从此开始
综合性统计,附带模式提取。
python .claude/skills/observability-honeycomb/scripts/get_statistics.py 数据集 [--time-range 秒] [--filter 过滤器]
# 示例:
python .claude/skills/observability-honeycomb/scripts/get_statistics.py production --time-range 3600
python .claude/skills/observability-honeycomb/scripts/get_statistics.py api-requests --filter "http.status_code >= 500"
输出包括:
- 总事件数
- 按状态码的错误分布
- 顶部服务/端点
- 顶部错误模式(用于快速分类的关键)
- 可操作建议
run_query.py — 自定义查询
运行带有聚合的自定义分析查询。
python .claude/skills/observability-honeycomb/scripts/run_query.py 数据集 --calc 计算 [--breakdown 字段] [--filter 过滤器]
# 计算:COUNT, SUM, AVG, MAX, MIN, P50, P75, P90, P95, P99, HEATMAP, COUNT_DISTINCT
# 示例:
python .claude/skills/observability-honeycomb/scripts/run_query.py production --calc COUNT
python .claude/skills/observability-honeycomb/scripts/run_query.py production --calc P99 --column duration_ms --breakdown service.name
python .claude/skills/observability-honeycomb/scripts/run_query.py production --calc COUNT --filter "http.status_code >= 500" --breakdown error.message
list_datasets.py — 数据集发现
列出环境中的可用数据集。
python .claude/skills/observability-honeycomb/scripts/list_datasets.py
# 输出:数据集列表,带有名称和最后写入时间
Honeycomb 查询概念
计算(聚合)
| 计算 | 描述 | 示例 |
|---|---|---|
COUNT |
计数事件 | 总请求数 |
SUM |
对列求和 | 总传输字节数 |
AVG |
平均值 | 平均持续时间 |
MAX / MIN |
极值 | 峰值延迟 |
P50, P75, P90, P95, P99 |
百分位数 | P99 延迟 |
HEATMAP |
分布 | 延迟热图 |
COUNT_DISTINCT |
唯一值 | 唯一用户数 |
RATE_AVG, RATE_SUM, RATE_MAX |
每秒率 | 请求数/秒 |
过滤器
过滤器使用运算符来缩小结果范围:
列 = 值 # 精确匹配
列 != 值 # 不相等
列 > 值 # 大于
列 >= 值 # 大于或等于
列 < 值 # 小于
列 <= 值 # 小于或等于
列 存在 # 字段存在
列 不存在 # 字段缺失
列 包含 "字符串" # 包含子字符串
列 以 "前缀" 开头 # 以前缀开头
列 在 (a, b, c) 中 # 在集合中
分解(分组)
分解按字段值拆分结果:
# 按服务分组
--breakdown service.name
# 多个分解
--breakdown service.name --breakdown http.method
常见字段
Honeycomb 通常有以下字段(根据仪器不同而变化):
# 跟踪字段
跟踪.跟踪标识
跟踪.跨度标识
跟踪.父标识
持续时间_毫秒
名称
# HTTP 字段
http.方法
http.网址
http.状态码
http.主机
# 服务字段
服务.名称
服务.版本
# 错误字段
错误
错误.消息
异常.类型
异常.消息
调查工作流
标准事件调查
┌─────────────────────────────────────────────────────────────┐
│ 1. 统计优先(强制) │
│ python get_statistics.py <数据集> │
│ → 了解数量、错误率、顶部模式 │
└─────────────────────────────────────────────────────────────┘
│
▼
高错误率?
┌─────────────┴─────────────┐
│ │
是 (>5%) 否
│ │
▼ ▼
┌─────────────────────────────┐ ┌───────────────────────────────────────────┐
│ 2. 快速路径 │ │ 2. 定向调查 │
│ 直接查询错误 │ │ 按特定标准过滤 │
│ python run_query.py │ │ python run_query.py 数据集 │
│ --filter "error=true" │ │ --filter "duration_ms > 1000" │
│ --breakdown error.message│ │ → 查找异常 │
└─────────────────────────────┘ └───────────────────────────────────────────┘
快速命令参考
| 目标 | 命令 |
|---|---|
| 开始调查 | get_statistics.py <数据集> |
| 计数错误 | run_query.py <数据集> --calc COUNT --filter "error=true" |
| 按服务的 P99 延迟 | run_query.py <数据集> --calc P99 --column duration_ms --breakdown service.name |
| 错误分布 | run_query.py <数据集> --calc COUNT --filter "error=true" --breakdown error.message |
| 列出数据集 | list_datasets.py |
SLOs 和触发器
检查 SLOs
python .claude/skills/observability-honeycomb/scripts/run_query.py <数据集> --list-slos
检查触发器(警报)
python .claude/skills/observability-honeycomb/scripts/run_query.py <数据集> --list-triggers
避免的反模式
- 永远不要跳过统计 —
get_statistics.py是强制的第一步 - 无界查询 — 始终指定时间范围(默认:1 小时)
- 获取所有事件 — 使用聚合,而不是原始事件转储
- 忽略错误率 — 高错误率意味着立即调查
- 缺少服务过滤器 — 对于多服务数据集,始终按服务过滤
与其他平台的关键区别
- 原生高基数 — Honeycomb 擅长处理高基数字段(用户 ID、请求 ID)
- 无预聚合 — 查询运行在原始事件上,支持临时探索
- 跟踪优先 — 为分布式跟踪设计,而不仅仅是日志
- BubbleUp — 使用分解自动识别异常维度