ELK---filebeat日志收集工具

filebeat也是日志收集工具,和logstash相同。

filebeat的特点

filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源小的多。

filebeat可以运行在非java环境,他可以代替logstash在非java环境上收集日志

缺点:

filebeat无法实现数据的过滤,一般是结合logstash的数据过滤功能一块使用。

filebeat收集的数据可以发往多个主机。远程收集

示意图:

ELK---filebeat日志收集工具_第1张图片

实验部署

20.0.0.10:logstash+kibana+filebeat
20.0.0.20:es1
20.0.0.30:es2
20.0.0.75:mysql
 
 
vim /etc/logstash/logstash.yml
64行
path.data: /opt/log
重启服务即可
 
yum -y install ntpdate
#时间同步
ntpdate ntp.aliyun.com 
 
yum -y install nginx
#安装nginx
开启nginx
vim /usr/local/nginx/html/index.html
this is nginx
 
到浏览器页面访问测试一下
20.0.0.10:8080
 
回到10主机
cd filebeat
cp filebeat.yml filebeat.yml.bck
vim filebeat.yml
Logstash output部分
output.logstash:解除注释
hosts: ["20.0.0.10:5044"]解除注释
 15 filebeat.inputs:
 16 - type: log
 17   enabled: true
 18   paths:
 19     - /usr/local/nginx/logs/access.log
 20     - /usr/local/nginx/logs/error.log
 21   tags: ["nginx"]
 22   fields:
 23     service_name: 20.0.0.10_nginx
 24     log_type: nginx
 25     from: 20.0.0.10
 
  cd /opt/log
  vim nginx.conf
  input {
   beats { prot => "5044"}
  }
  
  output {
    if "nginx" in [tags] {
      elasticsearch {
        hosts => ["20.0.0.20:9200","20.0.0.30:9200"]
        index => "%{[fields][service_name]}"-%{+YYYY.MM.dd}
      }
    }
    stdout {
      codec => rubydebug
    }
  }
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
  #nohup表示在后台记录执行命令的过程
  #./filebeat运行文件
  #-e使用标准输出同时禁用syslog文件输出
  #-c指定配置文件
  cd /opt/log
  logstash -f file_nginx.conf --path.data /opt/ng3 &

ELK---filebeat日志收集工具_第2张图片

ELK---filebeat日志收集工具_第3张图片

ELK---filebeat日志收集工具_第4张图片

实现远程收集,远程收集多个日志

vim /etc/my.cnf
添加两行
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
wq

systemctl restart mysqld

ELK---filebeat日志收集工具_第5张图片

yum -y install nginx
yum -y install httpd

vim /etc/nginx/nginx.conf
修改端口以免冲突
systemctl restart httpd
systemctl restart nginx
vim /var/www/html/index.html
vim /usr/share/nginx/html/index.html

收集日志---拖入filebeat软件包

vim filebeat.yml
先备份
注释信息删掉即可
打开output

line 123
指定发送的IP
line 
enabled: true
paths:
   - /var/log/nginx/access.log
   - /var/log/nginx/error.log
tag: ["nginx"]
fileds:
   service_name: 20.0.0.100_nginx
   log_type: nginx
   from: 20.0.0.100
   
 type: log
 enabled: true
 paths:
   - /etc/httpd/logs/access_log
   - /etc/httpd/logs/error_log
tags: ["httpd"]
fields:    //e对齐
  service_name: 20.0.0.100_httpd 
  log_type: httpd
  from: 20.0.0.100
  
type: log
enabled: true
paths:  //t对齐
  - /usr/local/mysql/data/mysql_general.log
tags: ["mysql"]
fields:
  service_name: 20.0.0.100_mysql
  log_type: mysql
  from: 20.0.0.100
   
wq

ELK---filebeat日志收集工具_第6张图片

ELK---filebeat日志收集工具_第7张图片

接下来就给日志文件赋权

ELK---filebeat日志收集工具_第8张图片

接下来进入elk1主机(kibana+logstash)指定输入流和输出流

input {
 beats { port=>"5045" }
}
output {
  if "nginx" in [tags] {
    elasticsearch {
      hosts => ["20.0.0.20:9200","20.0.0.60:9200"]
      index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
  }
   if "httpd" in [tags] {
    elasticsearch {
      hosts => ["20.0.0.20:9200","20.0.0.60:9200"]
      index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
  }
   if "mysql" in [tags] {
    elasticsearch {
      hosts => ["20.0.0.20:9200","20.0.0.60:9200"]
      index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
  }
  stdout {
  codec => rubydebug
  }
}

ELK---filebeat日志收集工具_第9张图片

mysql主机

nohup ./filebeat -e -c filebeat.yml > filebeat.out &

elk1

logstash -f nhm_21.conf --path.data /opt/test2 &

重启之后,进入ES

ELK---filebeat日志收集工具_第10张图片

命中成功。

!!注意

如果反复命中不成功,需要将之前的进程号全部杀死,否则会导致新的进程任务ping之前错误的进程任务。

杀死进程的话一定要杀干净!

如何对logstash进行性能上的优化

logstash启动是在jvm虚拟机当中启动,启动一次至少500MB内存。

ELK---filebeat日志收集工具_第11张图片

pipeline.workers:2

logstash的工作线程,默认值就是cpu数,(cpu核数一般即可)

ELK---filebeat日志收集工具_第12张图片

pipeline.batch.size: 125

一次性能批量处理检索事件的大小 125条

ELK---filebeat日志收集工具_第13张图片

pipeline.batch.delay:50

查询更新的延迟,50毫秒,也可以自行调整

fluentd代替logstash实现 EFK

20.0.0.20----ES
20.0.0.60----ES
20.0.0.15----kibana + fluentd

20.0.0.15
首先关闭防火墙,安装epel源
yum -y install epel-release.noarch

安装可视化界面----kibana

接下来安装组件
curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
 
systemctl start td-agent

配置文件位置
编辑fluentd配置文件的方法:
vim /etc/td-agent/td-agent.conf

修改运行用户和组
默认来说fluentd使用td-agent用户启动。一般自动配置完成,无须修改

ELK---filebeat日志收集工具_第14张图片


  type tail
  path /var/log/nginx/access.log
  tag nginx.access
  format nginx




  type elasticsearch
  host 20.0.0.60
  port 9200
  logstash_format true
  logstash_prefix efk_nginx


Wq退出之后用
/opt/td-agent/embedded/bin/fluentd -c /etc/td-agent/td-agent.conf
来检测配置文件是否正确

ELK---filebeat日志收集工具_第15张图片

这样绿色+黄色才算成功,无误

ELK---filebeat日志收集工具_第16张图片

error代表有误

接下来浏览器搜索20.0.0.15:8080   (8080为nginx的端口)

然后去es查看

ELK---filebeat日志收集工具_第17张图片

成功命中

创建索引

ELK---filebeat日志收集工具_第18张图片

ELK---filebeat日志收集工具_第19张图片

成功

fluenld相对于logstash。fluenld的配置很简单,但是生成任务速度很慢(第一次可能要1-3分钟),

logstash速度相较于fluenld速度快了不知多少倍,但是配置文件更复杂

你可能感兴趣的:(elk)