本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告

ELK Stack (4)——Filebeat 6的安装与配置教程

发布:TangLu2019-10-7 10:09分类: ELK Stack 标签: filebeat ELK ElasticSearch logstash

一、Filebeat是什么

由于原始的ELK架构中Logstash依赖JAVA环境,偏重量级,占用系统资源较高,而且每台客户端都要配置JDK也比较麻烦。所以现在通常采用ELFK架构,这个F就是Filebeat。除了偏向日志采集的Filebeat外,还有许多beat成员,比如偏向指标的metricbeat、偏向数据包的packetbeat等。ELK常见架构对比:

1、Logstash-->Elasticsearch-->Kibana(适合分析,但偏重量级)

2、Filebeat-->Elasticsearch-->Kibana(只适合查看日志,不适合分析)

3、Filebeat-->Logstash(需要开启端口监听)--> Elasticsearch--> Kibana(适合分析)


二、Elasticsearch+Filebeat+Kibana架构部署

1、下载Filebeat二进制包并解压即可

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-linux-x86_64.tar.gz
tar zxf filebeat-6.3.0-linux-x86_64.tar.gz
mv filebeat-6.3.0-linux-x86_64 /usr/local/


2、Filebeat的目录结构与配置,主要关注的就是可执行文件filebeat和配置文件filebeat.yml

filebeat1.png


3、编辑配置文件filebeat.yml修改输入输出配置项。首先将输出直接给到ES处理,配置如下:

filebeat.inputs:
#采集系统日志
- type: log  #除了log,还有stdin、redis、docker等类型
  enabled: true  #启用开关
  paths:
    - /var/log/message.log
  # include_lines: ['^ERR','^WARN']  #只采集正则所包含的日志
  tags: ["system"]  #定义标签,采集多个日志的时候可以用标签来创建索引,也可以用logstash的type来区分  

#采集nginx日志
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  tags: ["nginx"]

#采集tomcat日志,使用了multiline插件
- type: log
  enabled: true
  paths:
    - /var/log/tomcat/tomcat_log.*.txt
  multiline.pattern: '^\d{2}'  #匹配以2个数字开头的日志
  multiline.negate: true
  multiline.match: after
  multiline.max_lines: 1000  #合并的最大行数,默认是500
  tags: ["tomcat"]

#ES部分
output.elasticsearch:  #直接输出给ES
  hosts: ["http://192.168.1.100:9200"]  #集群的话写多个地址,用逗号分隔
  indices:
    - index: "system-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        tags: "system"
    - index: "nginx-%{[agent.version]}-%{+yyyy.MM.dd}"
      when.contains:
        tags: "nginx"


4、启动Filebeat,启动速度相比Logstash会快许多,内存占用也更少

nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/filebeat.yml &

5、使用Kibana查看数据并出图


三、Elasticsearch+Logstash+Filebeat架构

如果Filebeat直接把日志传给ES的话,由于其不支持正则、无法移除字段等,没办法实现数据分析,所以更优的配置是将Filebeat收集到的日志输出给一台Logstash服务器,由Logstash处理后再给ES


1、修改Filebeat输出段的配置,将输出给到Logstash,其他配置不动

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  tages: ["access"]
- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log
  tages: ["error"]

output.logstash:
  hosts: ["192.168.94.10:5044"]

2、修改Logstash input相关配置,其他不动

input {
  beats {
    host => '192.168.1.100'  #如果配置了很多个beat,那这行可以不写,只保留port部分
    port => 5044
  }
}

filter {
  grok {
    match => {
      "message" => '(?<source_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) - [a-zA-Z0-9-]+ \[(?<nginx_time>[^ ]+) \+\d+\] "(?<method>[A-Z]+) (?<request_url>[^ ]+) HTTP/\d.\d" (?<status>\d+) \d+ "(?<referer>[^"]+)" "(?<agent>[^"]+)" ".*"'
    } 
  }
  geoip {
    source => "clientip"
  }
  date {
    match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"
    target => "@timestamp"
    timezone => "Asia/Shanghai"
  }
  mutate {
    convert => ["bytes","integer"]
    convert => ["response_time","float"]
    remove_field => ["message","agent","tags"]
  }
}

output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
  }
}

四、使用Filebeat的module快速配置

Filebeat已经为使用者提供了大量的module,比如Nginx module、MySQL module等。开启module后可以省去很多配置,包括Kibana上的出图(可以通过官方module学习出图)。下面以MySQL为例进行配置:

1、启动module

filebeat modules enable mysql

2、配置module,只需要修改日志路径

vi /etc/filebeat/modules.d/mysql.yml
- module: mysql
  error:
    enabled: true
    var.paths: ["/var/log/mysql/error.log"]

3、初始化环境,如果有安装多个module的话只用初始化一次

filebeat setup -e

4、重启filebeat,需要注意的是索引名是自动创建好了的,不要自定义,然后到Kibana中看图即可


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《ELK Stack (4)——Filebeat 6的安装与配置教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-422.html  [生成短网址]

已有 0/4058 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~