You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sumo Logic多查询合并:JVM内存告警阈值设置问题

合并Sumo Logic查询计算JVM内存异常节点占比并触发告警

高效合并查询方案(单日志扫描)

直接通过一次日志扫描完成总节点数、异常节点数的统计及占比计算,性能更优:

_sourceName="/var/log/jvm_metrics.log"
| parse regex "used=(?<used>\d*)" nodrop
| parse regex "total=(?<total>\d*)" nodrop
| num(used)/1000/1000 as used
| num(total)/1000/1000 as total 
| used/total as ratio
| eval is_issue = if(ratio > 0.9, 1, 0)
| stats 
    count_distinct(_sourceHost) as total_workers,
    count_distinct(if(is_issue=1, _sourceHost, null())) as issue_workers
| eval issue_ratio = issue_workers / total_workers
| where issue_ratio > 0.2

逻辑说明

  1. 统一解析日志中的used和total字段,转换为MB单位并计算内存使用率ratio
  2. 用eval标记出内存使用率超过90%的节点(is_issue=1)
  3. 通过stats一次性完成两个统计:
    • count_distinct(_sourceHost):统计15分钟窗口内的总工作节点数
    • count_distinct(if(is_issue=1, _sourceHost, null())):仅统计内存超标的异常节点数
  4. 计算异常节点占总节点的比例issue_ratio,最后过滤出占比超过20%的结果(满足告警触发条件)

子查询合并方案(兼容原有查询逻辑)

如果想保留原有两个查询的结构,可通过join合并子查询结果:

[
    _sourceName="/var/log/jvm_metrics.log"
    | parse regex "used=(?<used>\d*)" nodrop
    | parse regex "total=(?<total>\d*)" nodrop
    | count_distinct(_sourceHost) as total_workers
]
| join
[
    _sourceName="/var/log/jvm_metrics.log"
    | parse regex "used=(?<used>\d*)" nodrop
    | parse regex "total=(?<total>\d*)" nodrop
    | num(used)/1000/1000 as used
    | num(total)/1000/1000 as total 
    | used/total as ratio
    | where ratio > 0.9
    | count_distinct(_sourceHost) as issue_workers
]
| eval issue_ratio = issue_workers / total_workers
| where issue_ratio > 0.2

告警设置步骤

  1. 将上述合并后的查询保存为定时搜索,设置时间窗口为15分钟(与统计逻辑匹配)
  2. 进入告警配置页面,选择该定时搜索作为触发源
  3. 设置告警条件为「当查询返回结果时触发」(因为where issue_ratio > 0.2仅在满足占比要求时返回数据)
  4. 配置通知方式(邮件、即时通讯工具等),完成告警设置

内容的提问来源于stack exchange,提问作者x3nr0s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:34:59