分析一下 这块是怎么找到对应日志,并且监控这个值的,它是日志监控,什么里的日志有具体的值呢?
Creado el: 24 de diciembre de 2025
Creado el: 24 de diciembre de 2025
分析一下 这块是怎么找到对应日志,并且监控这个值的,它是日志监控,什么里的日志有具体的值呢?
我先按“这条报警是怎么从日志里拿到值 → 怎么做成监控”的链路,一步一步给你拆清楚,你这张图里其实信息已经给得比较全了。
你这个报警监控的 mgr_scan_hdfs_waitingBatches_max:
统计周期 5分钟
mgr_scan_hdfs_waitingBatches_max
平均值 大于 50 / 100
持续 10 个周期
这里有几个重要点:
| 线索 | 含义 |
|---|---|
*_max | 这是日志里上报的一个数值字段 |
| 5 分钟统计 | 平台对日志抽取成指标后再做聚合 |
| avg / max | 说明先有指标,再算聚合 |
| jobName = XXX | 通过日志里的 tag 维度区分任务 |
👉 只有“日志型指标”才会长这样
根据命名 mgr_scan_hdfs_waitingBatches,99% 是:
典型日志形式会类似下面其中一种(示例):
textINFO ScanManager - scan hdfs status: waitingBatches=37, processingBatches=12
或者 JSON 日志:
json{ "level": "INFO", "module": "mgr_scan_hdfs", "waitingBatches": 42, "processingBatches": 10 }
也有可能是 埋点式日志:
textMETRIC mgr_scan_hdfs_waitingBatches=58 jobName=CDNCLD-Datawriter-liveEsNew
📌 重点:日志里一定存在一个数值字段,对应 waitingBatches
textDatawriter 应用 ↓ 业务日志(stdout / 文件) ↓ 日志采集(Filebeat / Agent) ↓ 日志解析规则(正则 / JSON Path) ↓ 生成指标: name = mgr_scan_hdfs_waitingBatches tag = jobName value = 数值 ↓ 监控平台聚合(5分钟 max / avg) ↓ 告警规则判断
你们内部平台可能不同,但逻辑是一样的。
regexwaitingBatches=(\d+)
提取出来后:
textmetric_name = mgr_scan_hdfs_waitingBatches metric_value = $1 tags: jobName = CDNCLD-Datawriter-liveEsNew
json{ "waitingBatches": 65 }
用 JSON Path:
text$.waitingBatches
_max?因为平台通常会自动生成多种聚合指标:
| 指标名 | 含义 |
|---|---|
| mgr_scan_hdfs_waitingBatches | 原始值 |
| mgr_scan_hdfs_waitingBatches_max | 周期内最大值 |
| mgr_scan_hdfs_waitingBatches_avg | 周期内平均 |
| mgr_scan_hdfs_waitingBatches_p99 | 高分位 |
你这条规则选的是:
5 分钟内的 max,再对 10 个周期取 avg
目的很明确:
按这个顺序查 👇
建议关键词:
textwaitingBatches mgr_scan_hdfs scan hdfs
并限定:
CDNCLD-Datawriter-liveEsNew)你会看到:
一般在类似:
javaScanManager HdfsScanTask MgrScanService
附近,会有:
javalog.info("mgr_scan_hdfs waitingBatches={}", waitingBatches);
这条告警是通过解析 Datawriter 任务日志中上报的 waitingBatches 字段生成的日志型指标,平台按 jobName 维度聚合后,对 5 分钟周期内的最大值进行统计,当 backlog 长时间堆积时触发报警。
如果你愿意,下一步我可以帮你:
你可以直接告诉我:
👉 这是哪套监控平台(自研 / CAT / SLS / Loki / ES)?
是这个理吗的 mgr_hdfs的 监控逻辑吗?
简短结论先给你:
是的,你这张图里的配置,正是 mgr_scan_hdfs / mgr_hdfs 这类日志指标的“源头监控逻辑”,但它本身不是最终的“数值阈值告警”,而是【日志 → 指标】这一步。
下面我帮你把整条链路一次性对齐,你就能完全确认“是不是同一套逻辑”。
是这个里的 mgr_hdfs 的监控逻辑吗?
👉 答案:是同一条链路上的前半段逻辑
👉 但你前一张图里的 mgr_scan_hdfs_waitingBatches_max 告警,是在它“后面一层”
可以理解为:
text这张图(日志规则) ↓ 生成日志型指标 mgr_scan_hdfs_waitingBatches ↓ 指标聚合(_max / _avg) ↓ 你第一张图里的告警规则
deeplog-offlogmanager
这是典型的 日志分析 / 日志转指标 应用
不是业务应用本身,而是日志处理层
✔️ 说明:这里不是报警终点,是“指标来源”
mgr_scan_hdfstext关键词(非正则):mgr_scan_hdfs
这一步做的事情只有一个:
从日志中筛选出所有包含
mgr_scan_hdfs的日志行
✔️ 这正好和你前面指标名里的 mgr_scan_hdfs_* 完全一致
text日志级别:WARN
含义是:
这也非常符合 backlog / 堆积类监控:
👉 waitingBatches 超过阈值才打 WARN
你这张图里 没有任何:
说明什么?
👉 它不负责“判断是否报警”
👉 它只负责:把日志变成可用的监控事件 / 指标
mgr_scan_hdfs_waitingBatches_max 是在哪儿算出来的?日志规则层
作用:
mgr_scan_hdfswaitingBatches=xx)textmgr_scan_hdfs_waitingBatches tag: jobName value: 日志里的数值
指标告警层
作用:
mgr_scan_hdfs_waitingBatches 做聚合textmgr_scan_hdfs_waitingBatches_max mgr_scan_hdfs_waitingBatches_avg
并且定义:
text5分钟 max 连续10个周期 超过50 / 100
mgr_scan_hdfs 的监控逻辑分两步:
先通过 deeplog-offlogmanager 从 WARN 日志中匹配 mgr_scan_hdfs,解析 waitingBatches 数值生成日志型指标;
再由指标告警规则对该指标做周期聚合和阈值判断,最终触发 mgr_scan_hdfs_waitingBatches_max 告警。
如果你想 100% 实锤,可以按这个顺序:
关键词:
textmgr_scan_hdfs waitingBatches
你一定能看到类似:
textWARN mgr_scan_hdfs ... waitingBatches=67
mgr_scan_hdfs_waitingBatches_max 抬升一般在:
会看到:
textwaitingBatches → mgr_scan_hdfs_waitingBatches
下一步我可以帮你判断 这个告警本身是不是“设计合理”,比如:
你可以直接说一句:
👉 “我想确认这个告警是不是误报多 / 有没有更好的指标”