三方日志接收文档

5 阅读1分钟

背景

项目中经常有需要接收三方日志的需求。日志格式各异,以往都需要定制化开发。先考虑使用配置化的策略实现

场景1

syslog 日志接收

非键值对日志:

  1. 需要三方将日志发送到dsc 指定端口 ,支持tcp / udp 协议

  2. 配置解析正则,如 (.?)(通过账号(.?)登录)[,,]在(.?)通过(.?)做登录(.?)操作[,,]操作失败。日志级别

  3. 配置字段值映射关系,例如登录映射成db_logon

  4. 配置正则解析的分组内容填充到epc对应的属性。第一个括号代表第一个分组。 e_type : #{g1}

键值对日志(JSON形式):

  1. 需要三方将日志发送到dsc 指定端口 ,支持tcp / udp 协议
  2. 配置字段值映射关系,例如“登录”映射成“db_logon”
  3. 配置正则解析的key对应value填充到epc对应属性。 e_type : #{abc}。支持springel
public static void test1() throws Exception {
    String template = "I have a pig, Its name is '#{name.length()}', It's #{age} #{a1} years old";
    Expression expression = new SpelExpressionParser().parseExpression(template, ParserContext.TEMPLATE_EXPRESSION);
    HashMap<String, String> model = new HashMap<String, String>() {{
        put("name", "poi");
        put("age", "4");
        put("a1", "4");
    }};
    StandardEvaluationContext context = new StandardEvaluationContext(model);
    context.addPropertyAccessor(new MapAccessor());
    System.out.println(expression.getValue(context));
}

场景2

kafka 日志接收

  1. 日志接收 一个topic 对应一套

场景3

API 日志拉取 (暂不支持),需求来源阿里云RDS审计日志的获取。