前言
Elk:filebeat搜集日志工具和logstash相同
Filebeat是一个轻量级的日志收集工具,所使用的资源比logstash部署和启动时使用的资源更小
Filebeat可以运行在非Java环境,他可以代理logstash在非Java环境上收集日志
Filebeat无法实现数据的过滤,一般是结合logstash的数据过滤功能一块使用
Filebeat收集的数据可以发往多个主机,远程收集
核心图:

本地采集:
实验环境:
在elk的基础上新加一台虚拟机,安装filebeat
安装filebeat

修改默认路径


做时间同步
yum install ntpdate -y
ntpdate ntp.aliyun.com
![]()
安装Nginx和httpd


验证

如何直接收集nginx日志



配置filebeat:


路径

注释(elasticsearch outputs)

取消注释(打开logsttash output)

创建目录

写一个脚本

为了实验效果,添加一个标准输出

开始收集,发送

Nohup表示在后台记录执行命令的过程
./filebeat运行文件
-e使用标准输出的同时进行syslog文件输出
-c指定配置文件
执行过程输出到filebeat.out这个文件当中。&表示后台运行
查看是否报错:successful表示成功
开启logstash收集,接收

访问测试(多刷几遍,以防收集不到,404也多刷几遍)访问呢错误日志,以便观察

Logstash收集日志的过程:
Input(从哪里收集)
Filebeat(过滤)
Output(发送ES实例)
远程收集,远程收集多个日志
打开数据库的日志功能


表中插入一些数据(便于实验效果查看)

安装一个nginx和一个http

添加一些访问内容,访问测试
![]()
开始收集日志准备

![]()
多余的注释信息全部删掉
Nginx模块

filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
tags: ["nginx_54"]
fields:
service_name: 20.0.0.54_nginx
log_type: nginx
from: 20.0.0.54
http模块

- type: log
enabled: true
paths:
- /etc/httpd/logs/access_log
- /etc/httpd/logs/error_log
tags: ["httpd_54"]
fields:
service_name: 20.0.0.54_httpd
log_type: httpd
from: 20.0.0.54
Mysql模块

- type: log
enabled: true
paths:
- /usr/local/mysql/data/mysql_general.log
tags: ["mysql_54"]
fields:
service_name: 20.0.0.54_mysqld
log_type: mysql
from: 20.0.0.54
注意:把这个三个的tags改一下(tags做一下区分)
总览图:
格式要对齐,要一模一样,一个符号都不能差

取消注释

回到elk收日志,便于查看是否命中,可以加上方框那一行,可以不加
![]()

input {
beats { port => "5045" }
}
output {
if "nginx_54" in [tags] {
elasticsearch {
hosts => ["20.0.0.52:9200","20.0.0.53:9200"]
index =>"%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
if "httpd_54" in [tags] {
elasticsearch {
hosts => ["20.0.0.52:9200","20.0.0.53:9200"]
index =>"%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
if "mysql_54" in [tags] {
elasticsearch {
hosts => ["20.0.0.52:9200","20.0.0.53:9200"]
index =>"%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
stdout {
codec => rubydebug
}
}
启动,后台运行,开始传送
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
![]()
打开filebeat日志,便于观察

Logstash启动运行,收集日志
logstash -f nginx_54.conf --path.data /opt/test12&
![]()
涉及改端口问题
Logstash可以使用任意端口,只要没被在占用,都可以使用,推荐从1024之后开始使用
5044
5045
5046
改端口

ES查看

如何对logstash性能上的优化(小优化):
Logstash启动是在Jam虚拟机当中启动,启动一次至少要占500M内存

![]()
Pipeline.workers:2
Logstash的工作线程,默认就是CPU数,4 2 8 4给一半即可,2核,2个

一次性可以处理检索事件的大小125条数,200
![]()
查询更新的延时,50毫秒,也可以自行调整,生产中一般都是15 10毫秒