filebeat也是日志收集工具,和logstash相同。
filebeat的特点
filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源小的多。
filebeat可以运行在非java环境,他可以代替logstash在非java环境上收集日志
缺点:
filebeat无法实现数据的过滤,一般是结合logstash的数据过滤功能一块使用。
filebeat收集的数据可以发往多个主机。远程收集
示意图:
实验部署
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 &
实现远程收集,远程收集多个日志
vim /etc/my.cnf
添加两行
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
wq
systemctl restart mysqld
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
接下来就给日志文件赋权
接下来进入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
}
}
mysql主机
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
elk1
logstash -f nhm_21.conf --path.data /opt/test2 &
重启之后,进入ES
命中成功。
!!注意
如果反复命中不成功,需要将之前的进程号全部杀死,否则会导致新的进程任务ping之前错误的进程任务。
杀死进程的话一定要杀干净!
如何对logstash进行性能上的优化
logstash启动是在jvm虚拟机当中启动,启动一次至少500MB内存。
pipeline.workers:2
logstash的工作线程,默认值就是cpu数,(cpu核数一般即可)
pipeline.batch.size: 125
一次性能批量处理检索事件的大小 125条
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用户启动。一般自动配置完成,无须修改
<source>
type tail
path /var/log/nginx/access.log
tag nginx.access
format nginx
</source>
<match nginx.access>
type elasticsearch
host 20.0.0.60
port 9200
logstash_format true
logstash_prefix efk_nginx
</match>
Wq退出之后用
/opt/td-agent/embedded/bin/fluentd -c /etc/td-agent/td-agent.conf
来检测配置文件是否正确
这样绿色+黄色才算成功,无误
error代表有误
接下来浏览器搜索20.0.0.15:8080 (8080为nginx的端口)
然后去es查看
成功命中
创建索引
成功
fluenld相对于logstash。fluenld的配置很简单,但是生成任务速度很慢(第一次可能要1-3分钟),
logstash速度相较于fluenld速度快了不知多少倍,但是配置文件更复杂