如何使用Splunk查询创建按字段统计百分比的时间图表?
Splunk:将事件计数时间图表转换为百分比时间图表
问题背景
已有基础Splunk查询,可按小时统计similar_events和non_similar_events的事件计数并生成时间图表,现需将计数替换为占比百分比生成时间图表,基础查询如下:
index='xyz' sourcetype='abc' status='completed' | timechart span=1hr count(eval(_raw like "similar")) as similar_events count(eval(_raw like "non_similar")) as non_similar_events | eval total_events = 'similar_events' + 'non_similar_events' | eval similar_events_perc = ((similar_events/total_events)*100)."%"
解决方案
要生成正确的百分比时间图表,需注意避免除以0错误、保证百分比字段为数值类型(Splunk时间图表依赖数值数据渲染),完整查询如下:
index='xyz' sourcetype='abc' status='completed' | timechart span=1hr count(eval(_raw like "similar")) as similar_events count(eval(_raw like "non_similar")) as non_similar_events | eval total_events = similar_events + non_similar_events | eval similar_events_perc = if(total_events=0, 0, round((similar_events/total_events)*100, 2)) | eval non_similar_events_perc = if(total_events=0, 0, round((non_similar_events/total_events)*100, 2)) | fields - similar_events, non_similar_events, total_events
关键步骤说明
- 总事件数计算:将两个事件计数相加,得到每个1小时时间窗内的总事件量。
- 百分比计算:
- 用
if(total_events=0, 0, ...)处理总事件数为0的场景,避免触发除以0的错误。 - 用
round(..., 2)将百分比保留两位小数,提升数据可读性。 - 不直接拼接
%"符号:因为Splunk时间图表需要数值类型数据,百分比格式可在可视化层设置。
- 用
- 字段过滤:移除原始计数字段和总事件数字段,仅保留百分比字段用于图表渲染。
可视化设置
在Splunk可视化面板选择「时间图表」后,进入格式设置:
- 找到Y轴设置,勾选「显示单位」并选择「百分比」,即可让图表Y轴显示%符号,同时保证数据的数值属性。
内容的提问来源于stack exchange,提问作者dev333
相关产品推荐
相关产品推荐

