美文网首页
基于日志的异常行为分析系统设计

基于日志的异常行为分析系统设计

作者: CallMe兵哥 | 来源:发表于2018-12-26 09:47 被阅读10次

1、架构设计

废话不多说,先上一张图。


异常行为分析系统设计

如上异常行为的设计图所示,这种设计方案有几个好处:

  1. 侵入性较低,各模块功能比较独立。
  2. 没有因为需要判断异常行为,导致系统的性能有明显降低。
  3. 实现比较容易,日志记录可以借用log4j的API,分析需要自己写线程。
  4. 集成容易,在代码编写时,可以直接调用日志方法。如果不需要分析了,修改一下日志方法即可。

2、实现方式

2.1日志记录的实现方式

参考博客:http://www.cnblogs.com/ITtangtang/p/3926665.html
简单的说就是使用log4j的日志功能,写一个自己想要的日志,例如我想取得一个用户登录的日志,需要记录异常时间、应用系统ID、用户登录ID、用户登录IP,记录使用“[”开头,“]”结尾,分割符为“|||”,日志文件中,一行为一个日志,需要日志配置如下:

# extProfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss,SSS}|||%m]%n
#日志级别是INFO,标签是extProfile
log4j.logger.extProfile=INFO,extProfile
#输出到指定文件extProfile.log中
log4j.additivity.extProfile=false
log4j.appender.extProfile=org.apache.log4j.RollingFileAppender
#输出到resin根目录的logs文件夹,log4j会自动生成目录和文件
log4j.appender.extProfile.File=logs/event/extProfile.log
#超过20M就重新创建一个文件
log4j.appender.extProfile.MaxFileSize=20480KB
log4j.appender.extProfile.MaxBackupIndex=10
log4j.appender.extProfile.layout=org.apache.log4j.PatternLayout
log4j.appender.extProfile.layout.ConversionPattern={eventTime:%d{yyyy-MM-dd HH\:mm\:ss,SSS},%m}%n

具体的日志配置参数说明,查看传送门:

JAVA代码中使用原则如下:

public class Serious {
    private static Logger logger = LoggerFactory.getLogger("extProfile");

    public static void main(String[] agrs) {
        int i = 0;
        while (true) {
            logger.info("10000231|||测试日志|||asdfjkj");
            i++;
            if (i> 1_000_000) break;
        }

    }
}

最后的结果如下图所示:


日志结果

2.2异常分析组件的实现

2.3异常分析汇聚

此功能请各位自行研发,后期我再贴出代码说明。

3、结束语

这是一个简单的日志异常行为分析系统,有很多特殊情况没有考虑到,例如日志过大,或者分布式系统。但是有古话很对,这句就是“没有最优秀的,只有最合适的”。

相关文章

网友评论

      本文标题:基于日志的异常行为分析系统设计

      本文链接:https://www.haomeiwen.com/subject/qhuskqtx.html