ELFK集群部署与Logstash的过滤模块

目录

ELFK集群部署(Filebeat+ELK)

Filebeat

实验环境

操作过程

部署ELK集群

安装 Filebeat(在apache节点操作)

设置 filebeat 的主配置文件

在 Logstash 组件所在节点上新建一个 Logstash 配置文件

浏览器访问

Logstash的过滤模块

Filter(过滤模块)中的插件

grok插件(通过grok插件实现对字段的分割,使用通配符)


ELFK集群部署(Filebeat+ELK)

ELFK= ES + logstash + filebeat + kibana

Filebeat

  • 轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。
  • 常应用于 EFLK 架构当中。(如果要使用过滤功能的话,Filebeat不能完全替代logstash,Filebeat没有过滤功能,收集数据后需要发送给 logstash 进行处理)

filebeat 结合 logstash 带来好处:

  1. 通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力。
  2. 从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取。
  3. 将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件。
  4. 使用条件数据流逻辑组成更复杂的处理管道。

实验环境

  • node01节点:192.168.44.20(ES,2核4G)
  • node02节点:192.168.44.30(ES,2核4G)
  • Apache节点:192.168.44.40(Logstash、Kibana、Apache、filebeat,2核4G)

注意:ELFK各安装包的版本要一致,或相近。

操作过程

部署ELK集群

ELK集群的部署在前一篇文章中ELK 企业级日志分析系统 - 掘金 (juejin.cn)有详细介绍,可参考前一篇文章。

ELFK集群环境下,Logstash 组件所在节点的/etc/logstash/conf.d目录下,不需要创建system.conf配置文件,即Logstash不需要收集系统日志,因为系统日志将由filebeat收集后发送给Logstash。
(安装filebeat后,Logstash会创建filebeat.conf配置文件获取filebeat传来的数据)

安装 Filebeat(在apache节点操作)

  • 上传软件包 filebeat-6.2.4-linux-x86_64.tar.gz 到/usr/local/目录

     

  • 更换目录名称为filebeat

设置 filebeat 的主配置文件

  • 备份配置文件

     

  • 修改配置文件filebeat.yml

  • 启动 filebeat

在 Logstash 组件所在节点上新建一个 Logstash 配置文件

因为logstash和filebeat在同一台主机上,所以再开一个终端进行操作

  • 修改文件filebeat.conf

  • 启动 logstash

    • 接受日志数据

浏览器访问

  • 浏览器访问http://192.168.44.20:9100/

  •  

  • 浏览器访问 http://192.168.44.40:5601 。登录 Kibana,单击“Create Index Pattern”按钮添加索引“httpd-*”,单击 “create” 按钮创建,单击 “Discover” 按钮可查看图表信息及日志信息。

Logstash的过滤模块

  • input {} 表示从数据源采集数据,常见的数据源如Kafka、日志文件等
    • 指定输入流,通过file、beats、kafka、redis中获取数据
  • filter {} 表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
    • 常用插件:
      • grok:对若干个大文本字段进行再分割,分割成一些小字段 (?<字段名>正则表达式) 字段名:正则表示匹配到的内容
      • date:对数据中的时间进行统一格式化
      • mutate:对一些无用的字段进行剔除,或增加字段
      • mutiline:对多行数据进行统一编排,多行合并和拆分
  • ourput {} 表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch
    • elasticsearch stdout

Filter(过滤模块)中的插件

而对于 Logstash 的 Filter,这个才是 Logstash 最强大的地方。Filter 插件也非常多,我们常用到的 grok、date、mutate、mutiline 四个插件。

对于 filter 的各个插件执行流程,可以看图:

grok插件(通过grok插件实现对字段的分割,使用通配符)

这里就要用到 logstash 的 filter 中的 grok 插件。filebeat 发送给 logstash 的日志内容会放到message 字段里面,logstash 匹配这个 message 字段就可以了。

格式:

匹配格式:(?<字段名>正则表达式)
字段名:正则表达式匹配到的内容
复制代码

实例1:

 (?<remote_addr>%{IPV6}|%{IPV4} )(?<other_info>.+)
 #对数据进行分割ip字段名为remote_addr, 其他字段名为other_info
复制代码

实例2:

 (?<remote_addr>%{IPV6}|%{IPV4} )[\s-]+[(?<log_time>.+)](?<other_info>.+)
 #添加匹配时间字段
复制代码

实例3:

 #分割多个字段
 (?<remote_addr>%{IPV6}|%{IPV4})[\s-]+[(?<log_time>.+)]\s+"(?<http_method>\S+)\s+(?<url-path>.+)"\s+(?<rev_code>\d+)(?<other_info>.+)
复制代码

实例4:

 cd /etc/logstash/conf.d/
 cp filebeat.conf filter.conf
 ​
 vim filter.conf
 input {
     beats {
         port => "5044"
     }
 }
 filter {
   grok {
      match =>["message","(?<remote_addr>%{IPV6}|%{IPV4} )[\s-]+[(?<log_time>.+)]\s+"(?<http_method>\S+)\s+(?<url-path>.+)"\s+(?<rev_code>\d+)(?<other_info>.+)"]
   }
 }
 output {
     elasticsearch {
         hosts => ["192.168.44.20:9200","192.168.44.30:9200"]
         index => "{[filter][service_name]}-%{+YYYY.MM.dd}"
     }
     stdout {
         codec => rubydebug
     }
 }
  logstash -f filter.conf   #启动
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值