🔌Actuator端点说明
版本支持:v2.16.1+
# LiteFlow 自有开关(仅一个)
# 可选。默认开启(matchIfMissing=true)。
# 仅在需要临时关闭指标采集时显式设为 false。
liteflow.metrics.enabled=true
装配守护条件是三者同时满足:
- 类路径存在
io.micrometer.core.instrument.MeterRegistry - 容器中存在
MeterRegistryBean liteflow.metrics.enabled非 false
三者同时满足时,ChainMetricsLifeCycle、NodeMetricsLifeCycle、LiteflowMeterBinder 才会被装配。换句话说,没有引入任何 registry 就不会有任何指标行为。
# 暴露 Actuator 端点
端点暴露属于标准的 Spring Boot Actuator 配置,LiteFlow 不另立配置项:
# 暴露 liteflow 结构端点 + Prometheus 抓取端点 + 通用 metrics 端点
management.endpoints.web.exposure.include=liteflow,prometheus,metrics
加上 exposure.include 后,/actuator/liteflow、/actuator/prometheus、/actuator/metrics 即可访问。
# 为什么必须配 exposure.include
Actuator 把端点分成两个相互独立的维度:
- enabled(启用):端点是否存在、bean 是否装配。除
shutdown外默认都启用。 - exposed(暴露):是否对 HTTP 开放。出于安全考虑,web 端默认只暴露
health。
所以 exposure.include 是显式 opt-in。不配的话:指标照常采集(采集只由 liteflow.metrics.enabled + 是否有 MeterRegistry 决定,与暴露无关),但这三个端点 HTTP 访问会返回 404 —— 数据在内存里有,却没有出口,Prometheus 也抓不到。
一句话:采集 ≠ 暴露。
注意
图省事可用 management.endpoints.web.exposure.include=* 暴露全部,但生产不建议 —— 会顺带把 env / configprops / heapdump 等敏感端点也开出去。按需列出更安全。
# 端点在哪个端口
端点走哪个端口同样是 Actuator 的标准行为,与 liteflow.metrics.enabled 无关(该开关只管采集,不监听任何端口):
| 情况 | 访问端口 |
|---|---|
默认(未配 management.server.port) | 跟应用主端口 server.port(默认 8080)同一个,前缀 /actuator/* |
配了 management.server.port=9090 | Actuator 端点走独立管理端口 9090,业务接口仍在 server.port |
默认情况下访问地址即:http://localhost:8080/actuator/liteflow。
# 三个端点分别返回什么
| 端点 | 谁提供 | 数据形态 | 典型用途 |
|---|---|---|---|
/actuator/liteflow | LiteFlow 自有 | 结构定义 + 指标快照(JSON) | 人看 / 排查链路 |
/actuator/prometheus | Actuator + Prometheus registry | 全量指标,Prometheus 文本格式 | 给 Prometheus 定时抓取 |
/actuator/metrics | Actuator(Micrometer) | 单指标浏览 / 下钻(JSON) | 人看 / 临时调试 |
关键差异:
/actuator/liteflow读FlowBus结构,能看到 Micrometer 没有的定义信息(EL 原文、组件 class/type/language、节点属于哪些 chain),且包含从未执行过的 chain/node。/actuator/prometheus返回# HELP/# TYPE+ 样本行的纯文本,包含 JVM/HTTP 等所有 Micrometer 指标。它是机器读的,QPS / 平均 / P95 由 Prometheus 抓走后用 PromQL 算出。/actuator/metrics用点号命名(非下划线),适合手动调试:
GET /actuator/metrics → 所有指标名清单(names 数组)
GET /actuator/metrics/liteflow.chain.executions → 某指标明细
{
"name": "liteflow.chain.executions",
"measurements": [
{ "statistic": "COUNT", "value": 1280 },
{ "statistic": "TOTAL_TIME", "value": 7.2 },
{ "statistic": "MAX", "value": 0.142 }
],
"availableTags": [
{ "tag": "chain", "values": ["mChain", "subChain"] },
{ "tag": "status", "values": ["success", "failed"] }
]
}
TOTAL_TIME / MAX 单位是秒(Timer 基础单位)。可按 tag 下钻:
GET /actuator/metrics/liteflow.chain.executions?tag=chain:mChain&tag=status:failed
注意
/actuator/prometheus 与 /actuator/metrics 只能查到执行过、产生了 meter 的 chain/node;想看从没跑过的,用下面的 /actuator/liteflow。
# 结构端点 /actuator/liteflow
只读端点,全部为 @ReadOperation,数据由 LiteflowMetaView 提供(结构读 FlowBus,指标快照读 MeterRegistry)。
| 路由 | 返回 |
|---|---|
GET /actuator/liteflow | 概览 |
GET /actuator/liteflow/chains | 全部 chain 列表 |
GET /actuator/liteflow/nodes | 全部 node 列表 |
GET /actuator/liteflow/chains/{chainId} | 单 chain 详情 + 指标快照 |
GET /actuator/liteflow/nodes/{nodeId} | 单 node 详情 + 指标快照 + 包含它的 chain 列表 |
GET /actuator/liteflow/ruledb | Rule-DB 运行时快照(见 Rule-DB 可观测性) |
提示
指标快照是"尽力而为":当 liteflow.metrics.enabled=false 或容器中没有 MeterRegistry 时,端点仍返回结构信息,只是 metrics 字段省略。
# 示例:概览
GET /actuator/liteflow
{
"chainsRegistered": 3,
"nodesRegistered": 12,
"slotOccupied": 1,
"chainIds": ["mChain", "subChain", "ifChain"],
"nodeIds": ["a", "b", "c", "ifNode"]
}
# 示例:chain 列表项
GET /actuator/liteflow/chains
[
{
"chainId": "mChain",
"namespace": "default",
"el": "THEN(a, b);",
"elMd5": "f1e2d3c4b5a6..."
}
]
# 示例:单 chain 详情(含指标快照)
GET /actuator/liteflow/chains/mChain
{
"chainId": "mChain",
"namespace": "default",
"el": "THEN(a, b);",
"elMd5": "f1e2d3c4b5a6...",
"metrics": {
"count": 1280,
"failed": 3,
"errorRate": 0.00234375,
"meanMs": 5.6,
"maxMs": 142.0
}
}
# 示例:单 node 详情(含指标快照与所在 chain)
GET /actuator/liteflow/nodes/a
{
"nodeId": "a",
"name": "A组件",
"type": "COMMON",
"script": false,
"clazz": "com.example.flow.AComponent",
"language": null,
"metrics": {
"count": 1280,
"failed": 0,
"errorRate": 0.0,
"meanMs": 2.1,
"maxMs": 38.0
},
"inChains": ["mChain", "subChain"]
}
指标快照字段含义:count = 总执行次数;failed = 失败次数;errorRate = failed / count;meanMs = 平均耗时(毫秒);maxMs = 最大耗时(毫秒)。



