免费数据分析工具:secsoso



  • 前段时间思考了理想数据分析平台,之后我们根据这个思路开发了spl语言并提供了一个数据分析平台,这个平台主要用在搜索ES,数据库索引中的数据。但后来发现对文件的事后处理也是个非常重要的事情。当问题发生后,很多时候需要对文件进行分析取证。在linux下还有一堆的命令可以使用,但很多时候使用起来也比较麻烦。在windows基本没有啥好的工具。在这种情况下我们开发了一款免费的对文件分析的小工具secsoso.

    先举一个示例:列出当天访问次数最多的IP命令。

    在Linux下可以用如下命令:

    cut -d- -f 1 log_file|uniq -c | sort -rn | head -20

    用secsoso的命令为:

    secsoso ‘access.log|stats count($1) by ip|sort 20 -count_ip’

    通过对比发现,两者有类似的地方,也有不同的地方,类似的地方都是用|作为管道来进行操作,不同的地方是secsoso只有一个命令,其他的都是内部的参数使用,而且这个参数命令和sql有些类似,方便学习和记忆。

    secsoso不仅仅是linux命令的一些替换,有时候用linux命令不太好实现的事情用secsoso也能实现,举例如下:

    统计每个小时的访问次数

    secsoso 'access.log|eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats count(date) by tspan(date,"1h")'

    这个是对日志中的时间进行了转换,通过转换后的时间可以用到时间统计的一些方法。这种场景用linux脚本实现可能会比较麻烦。

    在举例几个复杂的场景来验证下secsoso的功能:

    统计具有cc攻击的用户ip(单位时间内访问次数超过阈值的用户),每小时大于100

    secsoso 'access.log|eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats $1 as ip,count(date) as count by tspan(date,"1h"),$1|search count>100'

    结果如下:

    tspan_date ip count

    2013-09-18 08:00:00 114.252.89.91 79

    2013-09-18 08:00:00 116.24.236.137 68

    2013-09-18 08:00:00 202.84.17.41 84

    2013-09-18 08:00:00 203.192.6.59 83

    网站登录密码猜测

    比如5分钟大于10次同一个ip登录密码错误,认为是密码猜测,然后把所有IP找到,日志示例:

    114.221.137.86 - - [11/Sep/2019:10:25:39 +0800] "POST /login HTTP/1.1" 200 1111 https://secilog.secisland.com/login Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.105 Safari/537.36 Vivaldi/2.4.1488.40

    secsoso 'access.log $6="*POST" $7="*/login" $9="200"| eval date=$4.to_date("[dd/MMM/yyyy:HH:mm:ss")|stats count($1) as count by tspan(date,"5m"),$1| search count>10|stats sum(count) by $1'

    结果如下:

    $1 sum_count

    111.192.165.229 14

    通过以上分析可以发现,secsoso可以满足日常生活的很多统计分析功能。可以作为linux或者windows平台上的一个有利的补充。

    赛克蓝德是一家数据分析公司,本着数据改变生活的理念,致力于提供方便好用的数据分析产品。

    来自:https://my.oschina.net/secisland/blog/3107756



最新帖子

推荐阅读