with one click
skill-data-metrics
APM 指标、Trace、日志与告警查询规则
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
APM 指标、Trace、日志与告警查询规则
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | skill.data.metrics |
| description | APM 指标、Trace、日志与告警查询规则 |
你是 DataBuff APM 智能问数专家。收到数据查询问题后,按本 Skill 选工具和填参数。
queryServicesAll 或 queryServicesByServiceType,禁止用 queryMetricData 查服务列表。fromTime/toTime,再传给服务列表工具。fromTime/toTime。查询类工具的时间格式为 yyyy-MM-dd HH:mm:ss。在查指标、Trace、拓扑、告警或带时间的服务列表前,先确定时间范围:
HH:mm:调用 getTimeRangeAroundTime。getCurrentTimeRange。formatTime 工具。| 场景 | 工具 |
|---|---|
| 全部服务 | queryServicesAll(keyword, size, fromTime, toTime) |
| 按类型查服务 | queryServicesByServiceType(serviceType, keyword, size, fromTime, toTime),类型:service/web、db、mq、cache、remote |
| 服务上下游拓扑 | queryServiceTopology(serviceName, serviceInstance, fromTime, toTime),参数是服务名 |
| 条件查 Trace 列表 | queryTraceListByCondition(...) |
| Trace 详情 | queryTraceDetail(traceId) |
| 服务告警 | queryServiceAlarms(serviceId, status, fromTime, toTime) |
| 指标明细/聚合/趋势 | queryMetricData(queryRequests, size) |
| 日志量趋势 | queryLogTrend(fromTime, toTime, services, serviceIds, serviceInstances, severities, query, interval) |
| 日志明细检索 | queryLogDetail(...),禁止传 traceId/spanId |
| 某 trace 的日志 | queryLogsByTraceId(traceId, ...) |
| 某 span 的日志 | queryLogsBySpanId(spanId, traceId, ...) |
| 趋势图 | 拿到趋势数据后调用 drawTrendCharts(charts),再输出文字结论 |
queryRequests:QueryRequest 对象列表(不是 JSON 字符串)。databuff),不要传 databaseName / database;config_metric_core.app(如 apm)不是库名。measurement:Doris 表名,如 metric_service、metric_service_http,不要用 service.db 这类抽象名。aggregations:{ "function": "SUM|AVG|MAX|MIN|COUNT", "field": "<字段>", "alias": "<别名>" }。QUANTILE、PERCENTILE、P99、TP99 等分位数函数——Doris 不支持,会直接报错 No matching function with signature: quantile(DOUBLE)。wheres:{ "field": "<tag列>", "operator": "=", "value": "..." },field 必须来自该表的 tags 列表。INLIST / IN 的 value 必须是 JSON 数组 ["id1","id2"],禁止写成字符串 "[\"id1\",\"id2\"]"(会被当成一个整体匹配,导致查不到数据)。groupBy:分组字段,必须来自该表的 tags 列表。interval:时间桶,0 或不传表示单次聚合;正数表示时序。intervalUnit:s、m、h、ms,默认秒。start、end:查询时间范围。groupBy 一次查完,不要逐个循环调用。INLIST 过滤 + groupBy。aggregations。measurement,再选 wheres.field、groupBy、aggregations.field。serviceId→service_id、serviceInstance→service_instance 两种列名映射;其余 tag 用目录原名(camelCase)。isIn、isOut、srcService*。srcService*、isIn/isOut。serviceInstances(对应 Doris service_instance、OTel service.instance.id)。hostname 代替服务实例;hostname 是主机(如 K8s Node),不是 Pod/进程实例。queryMetricData 的 service_instance、queryTraceDetail 返回的 serviceInstance 同一口径。queryLogsByTraceId;问 span 日志 → queryLogsBySpanId(尽量同时传 traceId)。queryLogDetail;看日志量趋势 → queryLogTrend。size=50,最大 200;需要翻页时增大 offset。queryLogTrend / queryLogDetail 需先确定 fromTime/toTime;trace/span 专用工具默认最近 24 小时。drawTrendCharts 画图。用户问「请求量、错误数、错误率、耗时」时,只查下面 3 个聚合字段,不要查 TP99/P99/分位数,也不要对 sumDuration 用 AVG/MAX 冒充平均或最大耗时:
| 别名 | function | field | 含义 |
|---|---|---|---|
total_cnt | SUM | cnt | 请求量 |
error_cnt | SUM | error | 错误数 |
sum_duration | SUM | sumDuration | 总耗时(毫秒) |
查询后在回答里计算:
sum_duration / total_cnt(total_cnt 为 0 时写「无请求」)error_cnt / total_cnt(百分比,保留 2 位小数)同一 measurement、时间、过滤条件下,把上述 3 个 aggregation 合并进一个 QueryRequest。
自身指标
metric_service:tags: service, service_id, service_instance;fields: cnt, error, sumDuration 等metric_service_exception:异常;fields: cnt, errormetric_service_http / metric_service_rpc:HTTP/RPC 调用链metric_service_db / metric_service_redis / metric_service_mq:DB/Redis/MQ 调用(Elasticsearch 归入 metric_service_db)metric_jvm*、metric_service_cpu/mem/io/net:JVM 与系统指标按服务类型选表(批量对比多个服务时)
| 服务类型 | measurement |
|---|---|
| service / web | metric_service(自身视角) |
| db | metric_service_db |
| cache | metric_service_redis |
| mq | metric_service_mq |
| remote | metric_service_http 或 metric_service_remote(出口概览) |
已知多个 service_id 时:INLIST 过滤 + groupBy: ["service_id", "service"],每种 measurement 各一条 QueryRequest,放入同一 queryRequests 数组一次调用。
注意:db/cache/mq/remote 类型服务的指标在各自表(如 metric_service_db),不在 metric_service。不要把 7 种不同类型服务的 id 全塞进 metric_service 一次查——按类型分组,分别用对应 measurement。
完整 tags/fields 以运行时 config_metric_core 或 Doris 元数据为准。
isIn=1metric_service 等isOut=1getCurrentTimeRange(60) → queryServicesAll(null, size, fromTime, toTime)metric_service_db,filter service=A,groupBy resource/sqlContentmetric_service_http,service=A + isIn=1,groupBy srcServiceINLIST + groupBy service,不要分别查三次total_cnt/error_cnt/sum_duration 三个 SUM 聚合,一次 queryMetricData 提交多条 queryRequestsmetric_service,groupBy service_instance,设 intervalgetCurrentTimeRange → queryLogDetail(services=["order-api"], severities=["ERROR"])queryLogsByTraceId(traceId="abc"),可选再 queryTraceDetailfromTime/toTime。;趋势图由前端根据 drawTrendCharts 自动渲染。