如何用timechart查询每日触发指定事件超3次的主机去重数量
问题原因分析
- 第一种直接用
timechart的写法缺失了「单主机单日上报次数≥3」的过滤逻辑,统计的是所有当日有上报的主机去重数,不符合业务要求。 - 第二种自行调整的写法存在两个核心错误:
stats count by host仅按主机维度统计了整个查询时间范围的上报总次数,没有按天拆分统计维度stats命令执行后会丢弃原始事件的_time时间字段,后续timechart缺少必要的时间维度输入,因此输出结果为空- 额外冗余:
stats count by host输出的结果本身就是主机去重后的结果,不需要额外加dedup host步骤
正确查询语句
index=desktopevents "target" | bin span=1d _time | stats count by _time, host | where count > 3 | timechart span=1d dc(host) as daily_qualified_hosts
语句逻辑说明
bin span=1d _time:将所有事件的时间戳对齐到所属自然日的零点,为后续按天分组做准备stats count by _time, host:按「日期+主机」双维度分组,统计每台主机每天的目标事件上报次数where count > 3:过滤出当日上报次数超过3次的主机记录timechart span=1d dc(host):按天维度统计符合条件的去重主机数量,as别名可以按需修改,方便图表展示时识别字段含义
内容的提问来源于stack exchange,提问作者McGuireV10
相关产品推荐
相关产品推荐

