ELK---filebeat日志收集工具
elk---filebeat日志收集工具
filebeat是一个轻量级的日志收集工具,所使用的资源比logstash部署和启动时使用的资源小的多。
filebeat可以在非Java环境收集日志,它可以代替logstash在非Java环境上收集日志。
filebeat无法实现数据的过滤,一般是结合logstash的数据过滤功能一块使用。
filebeat收集的数据可以发往多个主机。远程收集
数据流程图:
实验
192.168.10.30 es1
192.168.10.40 es2
192.168.10.50 logstash、kibana
192.168.10.102 nginx、mysql、httpd
同步阿里云时间
yum install ntpdate -y
ntpdate ntp.aliyun .com
192.168.10.10
tar -xf /opt/filebeat-6.7.2-linux-x86_64.tar.gz
vim /opt/filebeat-6.7.2-linux-x86_64/filebeat.yml
*****************************************************************************************
21---行
- type: log
enabled: true
paths:
- 文件的绝对路径
tags: ["标签"]
fields:
service_name: 索引命名
log_type: 日志类型
from: 发送的IP
---------------注释掉
134行
#output.elasticsearch:
136行
# hosts: ["localhost:9200"]
---------------取消注释
----147行
output.logstash:
----149行
hosts: ["192.168.10.50:5055"]
发送给192.168.10.50的ip地址
*****************************************************************************************
192.168.10.50
vim nhm.conf
input {
beats { port => "端口"}
}
output {
elasticsearch {
hosts => ["IP地址:9200","IP地址:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
192.168.10.102
vim /opt/filebeat/filebeat.yml
****************************************httpd
- type: log
enabled: true
paths:
- /etc/httpd/logs/access_log
- /etc/httpd/logs/error_log
tags: ["httpd_102"]
fields:
service_name: 192.168.10.102_httpd
log_type: httpd
from: 192.168.10.102
****************************************nginx
- type: log
enabled: true
paths:
- /usr/local/nginx/logs/access.log
- /usr/local/nginx/logs/error.log
tags: ["nginx_102"]
fields:
service_name: 192.168.10.102_nginx
log_type: nginx
from: 192.168.10.102
****************************************mysql
- type: log
enabled: true
paths:
- /usr/local/mysql/data/mysql_general.log
tags: ["mysql_102"]
fields:
service_name: 192.168.10.102_mysql
log_type: mysql
from: 192.168.10.102
192.168.10.50
vim /opt/log/nhm.conf
*****************************************************************************************
input {
beats { port => "5055"}
}
output {
if "nginx_102" in [tags] {
elasticsearch {
hosts => ["192.168.10.30:9200","192.168.10.40:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
if "httpd_102" in [tags] {
elasticsearch {
hosts => ["192.168.10.30:9200","192.168.10.40:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
if "mysql_102" in [tags] {
elasticsearch {
hosts => ["192.168.10.30:9200","192.168.10.40:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
stdout {
codec => rubydebug
}
}
启动服务
按顺序启动
192.168.10.102
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
192.168.10.50
logstash -f nhm.conf --path.data /opt/test5 &
logstash的性能优化
vim /etc/logstash/logstash.yml
logstash启动是在jvm虚拟机当中其中,启动一次至少占500M
*******************************************************************************************
pipeline.workers: 2
#定义了logstash的工作线程,默认值就是cpu数,给一半即可如:8核4G 给 4核2G
pipeline.batch.size: 125
#一次性能够批量处理检索事件的大小 125条数。200
pipeline.batch.size: 125
#查询更新的延迟,50毫秒,也可以自行调整。具体要看机器性能
*******************************************************************************************