logstash集成kafka日志分析


1.每一个任务运行完成后,通过比对源端数据量和目标端数据量,如果有差异脏数据,打印一条warn等级的数据一致性检测异常日志,同时logstash会通过kfaka解析入库。
2.比对源端表结构和目标端表结构
流程图.jpg

一、建表需求

日志建表需求.xlsx

二、日志示例(表结构一致性)

303 WARN [pool-13-thread-1][SysServerInfoServiceImpl.java:533] - 表结构一致性检测 [{"colCname":"全库唯一,程序自动添加\n","colEname":"","colLen":20,"colName":"OB_OBJECT_ID","colNo":1,"colPrec":0,"colType":"numeric","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_OBJECT_ID"},{"colCname":"对应债券基本信息表中的债券ID,可通过输入债券名称关键字列出相关选项方便选择,对于上市债券,也可通过输","colEname":"","colLen":10,"colName":"OB_BONDID_0075","colNo":2,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":1,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_BONDID_0075"},{"colCname":"选择时程序自动将名称同时填入,不可直接人工填写或修改","colEname":"","colLen":100,"colName":"OB_BONDNAME_0075","colNo":3,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_BONDNAME_0075"},{"colCname":"程序自动默认为录入当日,可修改","colEname":"","colLen":23,"colName":"OB_DECLAREDATE_0075","colNo":4,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_DECLAREDATE_0075"},{"colCname":"","colEname":"","colLen":23,"colName":"F001D_0075","colNo":5,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F001D_0075"},{"colCname":"单位:亿元","colEname":"","colLen":23,"colName":"F002D_0075","colNo":6,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F002D_0075"},{"colCname":"含税,年利率,单位:%\n","colEname":"","colLen":11,"colName":"F003N_0075","colNo":7,"colPrec":6,"colType":"numeric","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F003N_0075"},{"colCname":"单位:元,(每1000元付息数,未公布的,以年利率/1000计算填入)","colEname":"","colLen":12,"colName":"F004N_0075","colNo":8,"colPrec":6,"colType":"numeric","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F004N_0075"},{"colCname":"也称资金清算日","colEname":"","colLen":23,"colName":"F005D_0075","colNo":9,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":1,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F005D_0075"},{"colCname":"也称除息基准日","colEname":"","colLen":23,"colName":"F006D_0075","colNo":10,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F006D_0075"},{"colCname":"","colEname":"","colLen":23,"colName":"F007D_0075","colNo":11,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F007D_0075"},{"colCname":"程序自动填入付息起始日;采编人员可修改,将付息日为一段时间的改为付息终止日","colEname":"","colLen":23,"colName":"F008D_0075","colNo":12,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F008D_0075"},{"colCname":"","colEname":"","colLen":255,"colName":"OB_MEMO_0075","colNo":13,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_MEMO_0075"},{"colCname":"程序自动根据系统时间确定\n","colEname":"","colLen":23,"colName":"OB_RECTIME_0075","colNo":14,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_RECTIME_0075"},{"colCname":"程序自动根据系统时间确定\n","colEname":"","colLen":23,"colName":"OB_MODTIME_0075","colNo":15,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_MODTIME_0075"},{"colCname":"当前记录是否有效,1-是,0-否,由程序自动更新","colEname":"","colLen":1,"colName":"OB_ISVALID_0075","colNo":16,"colPrec":0,"colType":"char","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_ISVALID_0075"},{"colCname":"代扣所得税率","colEname":"","colLen":6,"colName":"F009N_0075","colNo":17,"colPrec":3,"colType":"numeric","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F009N_0075"},{"colCname":"","colEname":"","colLen":19,"colName":"OB_SEQ_ID","colNo":18,"colPrec":0,"colType":"bigint","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_SEQ_ID"},{"colCname":"分别对应证券信息表的证券简称;程序自动冗余;不可直接人工填写或修改","colEname":"","colLen":40,"colName":"OB_SECNAME_0075","colNo":19,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_SECNAME_0075"},{"colCname":"单位:%,年利率","colEname":"","colLen":11,"colName":"F010N_0075","colNo":20,"colPrec":6,"colType":"numeric","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F010N_0075"},{"colCname":"付息、兑付","colEname":"","colLen":20,"colName":"F014V_0075","colNo":21,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":1,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F014V_0075"},{"colCname":"企业债填“兑付首日”,国债同“本息支付日”","colEname":"","colLen":23,"colName":"F011D_0075","colNo":22,"colPrec":3,"colType":"datetime","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F011D_0075"},{"colCname":"","colEname":"","colLen":10,"colName":"F013N_0075","colNo":23,"colPrec":6,"colType":"numeric","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F013N_0075"},{"colCname":"","colEname":"","colLen":10,"colName":"OB_SECCODE_0075","colNo":24,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":1,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"OB_SECCODE_0075"},{"colCname":"扣税渠道编码","colEname":"","colLen":12,"colName":"F015V_0075","colNo":25,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F015V_0075"},{"colCname":"扣税渠道","colEname":"","colLen":60,"colName":"F016V_0075","colNo":26,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F016V_0075"},{"colCname":"","colEname":"","colLen":12,"colName":"F017V_0075","colNo":28,"colPrec":0,"colType":"varchar","defVal":"","isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"mappingName":"F017V_0075"}] [{"colCname":"","colEname":"OB_OBJECT_ID","colLen":20,"colName":"OB_OBJECT_ID","colNo":1,"colPrec":0,"colType":"numeric","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":640,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"关联tb_public_0001.ob_orgid_0001","colEname":"OB_ORGID_0017","colLen":10,"colName":"OB_ORGID_0017","colNo":2,"colPrec":2,"colType":"varcharTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":641,"isCloud":0,"isNotNull":1,"isPk":1,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"OB_ORGNAME_0017","colLen":10,"colName":"OB_ORGNAME_0017","colNo":3,"colPrec":2,"colType":"varcharTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":642,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"OB_VARYDATE_0017","colLen":23,"colName":"OB_VARYDATE_0017","colNo":4,"colPrec":3,"colType":"datetime","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":643,"isCloud":0,"isNotNull":1,"isPk":1,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"关联tb_public_0014.ob_sortcode_0014","colEname":"F001V_0017","colLen":10,"colName":"F001V_0017","colNo":5,"colPrec":2,"colType":"varcharTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":644,"isCloud":0,"isNotNull":1,"isPk":1,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"F003V_0017","colLen":10,"colName":"F003V_0017","colNo":6,"colPrec":2,"colType":"varcharTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":645,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"F004V_0017","colLen":10,"colName":"F004V_0017","colNo":7,"colPrec":2,"colType":"varcharTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":646,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"1-是;0-否","colEname":"F005C_0017","colLen":1,"colName":"F005C_0017","colNo":8,"colPrec":0,"colType":"charTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":647,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"OB_MEMO_0017","colLen":10,"colName":"OB_MEMO_0017","colNo":9,"colPrec":2,"colType":"varcharTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":648,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"系统时间","colEname":"OB_MODTIME_0017","colLen":23,"colName":"OB_MODTIME_0017","colNo":10,"colPrec":3,"colType":"datetime","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":649,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"系统时间","colEname":"OB_RECTIME_0017","colLen":23,"colName":"OB_RECTIME_0017","colNo":11,"colPrec":3,"colType":"datetime","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":650,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"0-否,1-是","colEname":"OB_ISVALID_0017","colLen":1,"colName":"OB_ISVALID_0017","colNo":12,"colPrec":0,"colType":"charTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":651,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"OB_SEQ_ID","colLen":19,"colName":"OB_SEQ_ID","colNo":13,"colPrec":0,"colType":"bigint","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":652,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"F006V_0017","colLen":10,"colName":"F006V_0017","colNo":14,"colPrec":2,"colType":"varcharTest","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":653,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"},{"colCname":"","colEname":"OB_FLAG_ID","colLen":5,"colName":"OB_FLAG_ID","colNo":16,"colPrec":0,"colType":"smallint","creator":"100235543","defVal":"","entryTime":"2021-06-23T15:46:07","id":654,"isCloud":0,"isNotNull":0,"isPk":0,"isSysCol":0,"isUk":0,"modifier":"100235543","status":1,"tableId":68,"updateTime":"2021-06-23T15:46:07"}]

三、logstash集成beat、grok、kafka

下面是自己尝试的解决方法

**1.**Filebeat

  • 隶属于 Beats,是一个轻量级的日志收集处理工具。

配置日志文件路径

多行日志拼接到一行

2.grok

grok是一种采用组合多个预定义的正则表达式,用来匹配分割文本并映射到关键字的工具。通常用来对日志数据进行预处理。logstash的filter模块中grok插件是其实现之一。grok默认内置120个预定义匹配字段,grok支持自定义匹配字段规则,可以灵活满足扩展的需求。

日志样例

2021-06-10 16:00:00 [com.zyd.blog.business.aspect.BussinessLogAspect:65] INFO  - 进入文章分类[7]列表页 | 116.228.89.10 - GET http://47.117.71.226:8443/type/7 - Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36

grok

%{TIMESTAMP_ISO8601:create_time} \[%{GREEDYDATA:method}\] %{LOGLEVEL:log_type}  - %{GREEDYDATA:description} \| %{GREEDYDATA:request_ip} - %{GREEDYDATA:request_method} %{GREEDYDATA:oper_url} - %{GREEDYDATA:http_agent}

在线配置grok测试地址
http://grokdebug.psvrplayer.org/
http://grokdebug.herokuapp.com/

3.logstash

配置文件

解析队列效果

input {
   stdin{}
    beats {
        type => "test-log"
        port => "5044" 
    }
    kafka {
       bootstrap_servers => "47.117.71.226:9092" #kafka服务器地址
       topics => "test1"           #kafka订阅的topic主题
       codec => "json" #写入的时候使用json编码,因为logstash收集后会转换成json格式
       consumer_threads => 1
       decorate_events => true
       add_field => {
             "logsource" => "kafkalog"
        }
     }
}

filter {
      if "Exception" in [message]{
        grok{
               	 match => {"message" => "%{TIMESTAMP_ISO8601:create_time} -%{GREEDYDATA} \[%{GREEDYDATA:method}\] %{GREEDYDATA:log_detail}"}   
        }
    }
      grok {
   	 match => {"message" => "%{TIMESTAMP_ISO8601:create_time} \[%{GREEDYDATA:method}\] %{LOGLEVEL:log_type}  - %{GREEDYDATA:description} \| %{GREEDYDATA:request_ip} - %{GREEDYDATA:request_method} %{GREEDYDATA:oper_url} - %{GREEDYDATA:http_agent}"}
   	 match => {"message" => "%{TIMESTAMP_ISO8601:create_time} -%{GREEDYDATA:description} \| %{GREEDYDATA:request_ip} - %{GREEDYDATA:request_method} %{GREEDYDATA:oper_url} - %{GREEDYDATA:http_agent}"}	 
    	 match => {"message" => "%{TIMESTAMP_ISO8601:create_time} \[%{GREEDYDATA:method}\] %{LOGLEVEL:log_type} - %{GREEDYDATA:log_detail}"}   
                 ### 去掉 TIMESTAMP_ISO8601, GREEDYDATA 解析出来的多余字段
                 remove_field => ["YEAR","MONTHNUM","MONTHDAY","HOUR","MINUTE","SECOND","SPACE","IPV4","IPV6","GREEDYDATA","cloud","input","log","agent","host","ecs"]
   }
}

output
{    
        if ([type]=="test-log" and "kafkalog" not in [logsource]) {
          kafka {
               codec => json
               topic_id => "test1"
               bootstrap_servers => "172.28.65.26:9092"
               batch_size => 1
           }
         }   
        if ([type] == "test-log" and "kafkalog" in [logsource]) {
           jdbc {
               driver_jar_path => "/root/logstash-7.3.0/logstash-core/lib/jars/mysql-connector-java-8.0.15.jar"
               driver_class => "com.mysql.jdbc.Driver"
               connection_string => "jdbc:mysql://47.117.71.226:3306/nls_crm_system?user=root&password=qqcf258.."
               statement => [ "INSERT INTO log(create_time,log_type,description,method,request_ip,request_method,oper_url,http_agent,log_detail) VALUES(?,?,?,?,?,?,?,?,?)", "create_time","log_type","description","method","request_ip","request_method","oper_url","http_agent","message"]
         }
     }      
   
    stdout {
       codec => rubydebug{}
    }
}

基本日志信息表实现效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值