zoukankan      html  css  js  c++  java
  • 【splunk】按时间统计并找到异常值

    场景:

    有长时间对多个端口访问的日志数据,每天对端口的访问量是稳定的。如果某一天对某个端口的访问量突然增加表示可能出现了问题。现在要通过splunk找到异常值。

    思路:

    统计每个端口每天的访问量。统计其最大值,平均值,中位数。最大值和平均值比值大的,以及最大值和中位数比值大的就是可能异常的地方。通过一个交互折线图来展示选定端口每天的访问量。

    1.统计每个端口每天的访问量。

    source="port.csv" |fillnull value=NULL|search port!=NULL port != 0 | convert timeformat="%Y-%m-%d" ctime(_time) AS date | stats count as date_count by date,port

    关键点:

    convert timeformat="%Y-%m-%d" ctime(_time) AS date:数据中时间戳字段为_time,举例:2017-06-26T00:00:00.000+08:00   用convert将时间转换为2017-06-26的日期格式。这样同一天的数据都会有相同的date。

    2.统计每个端口每天访问量的最大值,平均值,中位数,以及比值。

    source="port.csv" |fillnull value=NULL|search port!=NULL| convert timeformat="%Y-%m-%d" ctime(_time) AS date | stats count as date_count by date,port|stats median(date_count) as median_count max(date_count) as max_count avg(date_count) as avg_count by dport|eval avg_deviation=max_count/avg_count|eval median_deviation=max_count/median_count|sort -avg_deviation

    3.获取指定端口的每天访问量

    步骤2做表后,点击编辑来源,打开仪表盘xml,在对应的<search></search>标签下添加

    <drilldown>
         <set token="select_port">$click.value$</set>
    </drilldown>

    这样,在点击port后,就可以通过$select_port$来获取到对应的port值了。

    做折线图:

    source="port.csv" port="$select_port$"|convert timeformat="%Y-%m-%d" ctime(_time) AS date|stats count by date

    标题设为:$select_port$端口每日访问量

    这样当通过表格选择端口后,就可以在折线图上直观看到访问量变化。

    效果:

  • 相关阅读:
    @override报错
    idea快捷键
    java中getAttribute与getParameter的区别
    localStorage基于浏览器的本地存储
    js画布组件(<canvas></canvas>)
    easyui
    关于Bootstrap
    使用layUI美化的登录功能
    EXT JS
    ★一些文章链接
  • 原文地址:https://www.cnblogs.com/dplearning/p/7083620.html
Copyright © 2011-2022 走看看