如何编写Splunk查询以按URL展示HTTP状态码计数表?
解决Splunk按URL分类展示HTTP状态码计数的问题
你需要把分散的URL-状态码组合行转成URL为行、状态码为列的表格,用Splunk的chart命令就能直接实现,比stats更适配这种行列转换的需求。
推荐查询语句
index=myindex method="GET" | chart count over url by httpstatus
如果只需要展示特定状态码(比如示例里的200、401、500),可以先过滤再统计:
index=myindex method="GET" httpstatus IN (200,401,500) | chart count over url by httpstatus
逻辑说明
chart count over url:指定将url作为表格的行维度,以每个URL为单独一行by httpstatus:将httpstatus作为列维度,自动把不同状态码拆分成独立列,单元格内显示对应URL下该状态码的出现次数
替代方案(基于stats实现)
如果更习惯用stats命令,也可以通过条件计数生成目标列:
index=myindex method="GET" | stats count(eval(httpstatus=200)) AS 200 count(eval(httpstatus=401)) AS 401 count(eval(httpstatus=500)) AS 500 BY url
这种方式适合需要自定义列名或仅统计指定状态码的场景,但灵活性不如chart命令。
执行后就能得到你期望的表格格式:
200 401 500url1 6 1 1
url2 19 2 3
内容的提问来源于stack exchange,提问作者anno_springer
相关产品推荐
相关产品推荐

