elk(filebeat)日志收集工具
elk:filebeat日志收集工具 和logstash相同
filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小得多
filebeat可以运行在非Java环境。他可以代理logstash在非java环境上收集日志
filebeat无法实现数据的过滤,一般是结合logstash的数据过滤功能一块使用
filebeat收集的数据可以发往多个主机,即远程收集
logstash收集日志的过程:
input(从哪里收集)
filter(过滤)
output(发送es实例)
logstash可以使用任意端口,只要没被占用都可以使用,推荐1024之后开始
本机获取收集nginx的日志实验:
四台服务器
192.168.233.11
192.168.233.12
192.168.233.13
192.168.233.21
先关闭四个主机的防火墙和安全机制
cd 到opt目录下,把这个软件包拖到elk1(就是有logstash的主机)
解压软件包
tar zxvf filebeat-6.7.2-linux-x86_64.tar.gz
改名文件以及改配置文件
在四台主机操作重启配置文件
四台主机一块安装时间同步软件
yum install ntpdate -y
四台主机同步操作时间同步
data查看一下
在elk1安装一台nginx
yum -y install nginx,如果报错改端口号
改完nginx的配置文件 记得重启服务
在elk1安装一台httpd
开启httpd的服务
一个设置this httpd 一个设置this nginx
做httpd的配置文件
做nginx的配置文件
在浏览器查看
直接输IP就是httpd 加上8080端口就是nginx,因为上面的步骤将nginx的端口号改掉了
找到nginx日志的位置
cd /var/log/nginx
看他是不是绿色 如果不是绿色就赋权
先cd到opt 再cd到这个目录
给文件做备份
打开这个配置文件
在148行左右注释elasticsearch outputs
在167行左右取消logstash output的注释
在24行左右把enabled后面改成true ,path后面插七行/var/log/nginx/access.log
/var/log/nginx/error.log
tags:[“nginx”]
fields:
service_name:192.168.233.11_nginx
log_type:nginx
from:192.168.233.11
(以上操作没标注的就都是在elk1操作)
配置logstash
创建目录log 写一个配置文件
写配置文件
cd到/opt/filebeat目录下
启动filebeat
出现这个没问题
nohup是指在后台记录执行命令的过程
.filebeat 运行文件
-e 使用标准输出的同时syslog文件输出
-c 指定配置文件
执行过程输出到filebeat.out这个文件当中 &后台运行
再开启一台elk1的终端
cd到opt里面的filebeat
然后查看日志
cd 到opt目录下的log
执行nginx.conf文件
出现问题先杀进程,以下是查看系统进程
然后杀进程
最后出现这个算成功
刷新
然后命中就会自动出现
远程收集多个日志实验
(Nginx+Apache+Mysql日志)
实验组件
logstash节点:20.0.0.10
Node1节点:node1/20.0.0.20 Elasticsearch
Node2节点:node2/20.0.0.30 Elasticsearch
日志来源服务器:20.0.0.81 MYsql Nginx Apache Filebeat
实验步骤
1.安装Filebeat并配置
#81
cd /opt/
--上传filebeat-6.7.2-linux-x86_64.tar.gz--
tar -xf filebeat-6.7.2-linux-x86_64.tar.gz
mv filebeat-6.7.2-linux-x86_64 filebeat
cd filebeat/
vim filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
tags: ["nginx_81"]
fields:
service_name: 20.0.0.81_nginx
log_type: nginx
from: 20.0.0.81
- type: log
enabled: true
paths:
- /etc/httpd/logs/access_log
- /etc/httpd/logs/error_log
tags: ["httpd_81"]
fields:
service_name: 20.0.0.81_httpd
log_type: httpd
from: 20.0.0.81
- type: log
enabled: true
paths:
- /usr/local/mysql/data/mysql_general.log
tags: ["mysql_81"]
fields:
service_name: 20.0.0.81_mysql
log_type: mysql
from: 20.0.0.81
--------------Elasticsearch output-------------------
(全部注释掉)
----------------Logstash output---------------------
output.logstash:
hosts: ["20.0.0.10:5045"] #指定logstash的IP和端口
2.配置logstash
10:
cd /opt/log/
vim nhm_81.conf
input {
beats { port => "5045"}
}
output {
if "nginx_81" in [tags] {
elasticsearch {
hosts => ["20.0.0.20:9200","20.0.0.30:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
if "httpd_81" in [tags] {
elasticsearch {
hosts => ["20.0.0.20:9200","20.0.0.30:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
if "mysql_81" in [tags] {
elasticsearch {
hosts => ["20.0.0.20:9200","20.0.0.30:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
}
stdout {
codec => rubydebug
}
}
3.启动filebeat
nohup ./filebeat -e -c filebeat.yml > filebeat.out &
logstash -f nhm_81.conf --path.data /opt/test2 &
4.结果