背景简述:业务的一系列的落地页产生了一批cdn日志,需要抓取落地页的地址,然后进行内容分析。

    之前做过elastic stack方案做过nginx日志实时采集系统,对elastic家的产品情有独钟。配置快捷,开发少,简单高效。于是决定继续采用elastic的部分产品作为工具。

一、解决方案:filebeat+logstash+mysql+脚本语言

二、准备工作(具体过程省略):

1.要采集的日志文件。

  1. 安装MySQL。
  2. 安装Filebeat。
  3. 安装Logstash。

三、详细过程:

1.配置Filebeat采集日志。
修改filebeat.yml

#配置filebeate的输入# ============================== Filebeat inputs =============================== #这里开启Filebeat的输入配置  filebeat.inputs: #这里指定输入类型  - type: log    enabled: true    paths:        # 这里指定日志文件的路径      - /Users/zhang****/Downloads/test_log/logs/*#配置Filebeat的输出,这里输出到Logstash。(注意:输出到其他的地方要先注释关闭)# ------------------------------ Logstash Output ------------------------------- output.logstash:   # The Logstash hosts   hosts: ["localhost:5044"]

2.安装logstash-output-jdbc插件,下载mysql-connector-java

#安装logstash-output-jdbc./bin/logstash-plugin install logstash-output-jdbc#下载mysql-connector-java可以在这里选择适合的版本:http://mvnrepository.com/artifact/mysql/mysql-connector-java

4.配置logstash的输入、过滤、输出
修改配置文件./config/logstash.conf

#这里配置输入源为beats(Filebeate属于Elastic的Beats系统产品的一种)   input {     beats {       port => 5044       #客户端响应超时时间       client_inactivity_timeout => 60000    }  }#配置日志过滤,这里采用grok组件进行日志格式匹配#grok规则见https://github.com/logstash-plugins/logstash-patterns-core filter {       grok {          match => {              "message" => "\[%{HTTPDATE:visited_time}\] %{IP:visited_ip} .* \"%{GREEDYDATA:referer_url}\" \"GET %{URI:target_url}\" .* \"%{GREEDYDATA:user_agent}\" \"%{GREEDYDATA    :content-type}\""          }      }         #剔除掉Content-Type为icon的日志      if([content-type] == 'image/x-icon')      {          drop{}      } } #配置结果的输出   output {    #elasticsearch {    #  hosts => ["http://localhost:9200"]    #  index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"    #  #user => "elastic"    #  #password => "changeme"    #}    #stdout{    #      codec=>rubydebug{}    #}#这里需要安装Logstash的logstash-jdbc-output插件,下载好mysql-connector-java    jdbc {        connection_string => "jdbc:mysql://localhost:3306/land_page?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true"        username => "root"        password => "***"        driver_jar_path => "/Users/zhang***/Downloads/logstash-7.11.2/mysql-connector-java/mysql-connector-java-8.0.16.jar"        driver_class => "com.mysql.cj.jdbc.Driver"        statement => [ "INSERT INTO land_page_log (visited_ip,visited_time,referer_url,target_url,content_type,user_agent) VALUES(?,?,?,?,?,?)", "[visited_ip]", "[visited_time]","    [referer_url]","[target_url]","[content-type]","[user_agent]" ]    }

四、开启服务

#开启Logstash服务cd logstash安装目录./bin/logstash -c ./config/logstash.config#开启Filebeat服务cd filebeat安装目录./filebeat -e -c ./filebeat.yml

五、日志分析
要分析的日志内容已经收集到了mysql数据库持久化存储,后续可以通过其他工具慢慢分析,这里不做阐述。

©著作权归作者所有:来自51CTO博客作者hgditren的原创作品,如需转载,请注明出处,否则将追究法律责任

我们一起来让这个世界有趣一点

赞赏

0人进行了赞赏支持

更多相关文章

  1. 基于CentOS7.x 使用Autofs_配置自动挂载NFS服务
  2. Ubuntu系统网络配置及shell脚本编程之函数数组等用法详解
  3. 借助NOR Flash实现UltraScale FPGA后配置解决方案
  4. spring-cloud-alibaba Nacos配置启动
  5. Hudi原理 | 在Apache Hudi中为快速更删配置合适的索引原创
  6. springcloud 配置集成 Sentinel 限流器
  7. mv移动文件后内存未释放
  8. tomcat启动后台日志乱码
  9. 五舟服务器出厂nvme阵列配置

随机推荐

  1. oralce 解除锁定的表
  2. 文件转换 - .mwb到.sql文件
  3. 返回没有匹配条目的所有日期
  4. SQL2000数据库脱机/只读/紧急模式 修复
  5. Oracle 00932. 00000 - “不一致的数据
  6. java中sql查询条件为中文时,rs.next为fals
  7. 没有必要去指定SqlSessionFactory或SqlSe
  8. sqlserver 存储过程 递归查询分组+hier
  9. 我的MSSQL2000数据库自从我的系统从XPHOM
  10. 如何从多表中不存在的表中获取不同的值