用途:指导在 Honeycomb 中正确查询 OpenTelemetry 指标数据集。指标数据集规则与追踪/事件数据集不同,许多在追踪上可用的操作在指标上会失败或产生误导结果。
识别指标数据集:不要凭名称含 metrics 判断,kafka-metrics、refinery-metrics 等通常是事件数据集。调用 get_environment 查找 dataset_type = metrics 的行;或对候选数据集调用 get_dataset_columns,指标数据集会返回 MetricInfo 列(如 gauge、sum(cumulative,monotonic)、histogram(delta))。构造查询前务必验证。
发现指标与属性:对指标数据集调用 get_dataset_columns(不带 metric_name)获取指标名与类型;用 find_columns 按关键词搜索;带 metric_name 调用 get_dataset_columns 获取该指标共现的资源属性与数据点属性及样例值,用于 WHERE 和 GROUP BY。不同指标属性不同,需先确认。
禁止操作:COUNT(不带列)、RATE_SUM、RATE_AVG、RATE_MAX、CONCURRENCY。替代:gauge 用 AVG/MAX/HEATMAP;counter/sum 用 SUM/AVG/MAX;分布用 HEATMAP/P50/P99;非空计数用 COUNT(metric)。
时间聚合:Honeycomb 按指标类型自动应用默认时间聚合,如 gauge 用 LAST()、单调累计和用 INCREASE()、delta 和用 SUMMARIZE()。可用查询级计算字段覆盖,如 RATE($http.server.requests, 300),但仍需在 calculations 中应用空间聚合。
直方图:以子字段存储,如 http.server.duration.count/.sum/.avg/.p50/.p99。推荐直接用父列配合 P99 或 HEATMAP;需要跨主机最坏情况时用 MAX(parent.p99);吞吐用 SUM(parent.count)。
查询数学:支持命名计算与公式,可用于利用率百分比、直方图尾部比率、计数器错误率等。
粒度:指标按固定间隔上报,粒度应对齐上报间隔,否则结果有噪声。
常见陷阱:对指标用 COUNT;用 RATE_AVG/RATE_SUM/RATE_MAX;假设所有指标共享属性;混淆事件数据集;在父列可用时查询直方图子字段;未指定聚合函数(默认 COUNT)。