一、背景
一般我们需要进行日志分析的时候,通常用grep
、awk
、sed
就能够做到。然而该方法在遇到日志量较大的时候就会遇到瓶颈:搜索太慢,多维度查询。。
ELK
监控机制,提供了一套完整的解决方案,它能够采集多种来源的日志,并且能够稳定的将日志传输到中央系统,可以支持UI分析系统,能够提供错误报告,并且各个软件都是开源的,在很多场景都适用。
二、简介
ELK
是三个开源软开源软件的缩写,分别是Elasticsearch
,Logstash
,Kibana
,FileBeat
是一个轻量级的日志收集处理工具,其占用资源少,可以将日志收集给Logstash
。
Elasticsearch
是一个开源分布式搜索引擎,提供搜索、分析、存储数据的三大功能,特点有零配置、自动发现、索引自动分片、索引副本机制、restful
风格接口。
Logstash
也是一个开源的工具,主要用来日志的收集,分析、过滤。它将收集过来的数据发送给Elasticsearch
。
Kibana
同样是一个开源的工具,可以为Logstash
和Elasticsearch
的日志分析提供友好的web
界面,帮助汇总,分析和搜索重要的数据日志。
三、实验部署
本次实验部署filebeats
(客户端),Logstash
+Elasticsearch
+Kibana
(服务端),业务请求达到nginx-server
机器上,并在access.log
上记录,FileBeats
搜索新增日志,通过Logstash
的5044
端口上传日志,Logstash
将日志通过9200
端口传入到Elasticsearch
,搜索日志通过浏览器访问Kibana
,端口是5601
,其中Kibana
通过9200
端口访问Elasticsearch
。
四、实验环境
这次部署的是单点ELK
,总共用了两台服务器(Centos7.6)
ELK
服务端:192.168.80.10
Nginx
客户端:192.168.80.20
1.准备工作:
提前关闭防火墙和SElinux
2.安装三个软件
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.2.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.0-linux-x86_64.tar.g
解压到/usr/local/
目录下
3.安装java环境
yum -y install java-1.8*
4.配置elasticsearch
1)新建elasticsearch
用户,用改用户启动elasticsearch
服务。
useradd elasticsearch
chown -R elasticsearch.elasticsearch /usr/local/elasticsearch-7.5.2/
su - elasticsearch
cd /usr/local/elasticsearch-7.5.2/
bin/elasticsearch -d
2)查看服务是否启动(等一会儿)
netstat -anpt
3)若出现错误日志可查看
cat logs/elasticsearch.log
4)测试是否成功
curl localhost:9200
5.配置logstash
1)进入logstash
目录,cd /usr/local/logstash/
,创建配置文件
vim conf.d/nginx_log.conf
input {
beats {
port => "5044" //数据来源于filebeats发送给logstash的5044端口的数据
}
}
output {
elasticsearch {
hosts => ["192.168.80.10:9200"] //elasticsearch的地址
}
}
3)后台启动logstash
nohup bin/logstash -f conf.d/nginx_log.conf &
查看:netstat -anput|grep 5044
如果启动不起来,查看日志:
tailf nohup.out
6.配置Kibana
1)进入Kibana
目录,cd /usr/local/kibana
修改其配置文件:
vim config/kibana.yml
2)后台启动
nohup bin/kibana --allow-root &
因为logstash
不推荐root
启动,因此要加上--allow-root
才能以root
身份启动
3)若启动失败,同样也可以查看日志
tailf nohup.out
4)查看端口
netstat -anput|grep 5601
5)测试
在浏览器访问http://192.168.80.10:5601
到此,ELK
部署完毕
7.Nginx客户端配置
1)下载Nginx
yum -y install nginx
2)下载filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.0-linux-x86_64.tar.gz
3)解压到/usr/local/
,并进入该目录
tar xf filebeat-7.6.0-linux-x86_64.tar.gz -C /usr/local/
4)修改配置文件,vi filebeat.yml
5)后台启动
nohup ./filebeat -e -c filebeat.yml &
6)查看日志
tailf nohup.out
7)通过浏览器多访问几次Nginx
:http://192.168.80.10
,然后访问Kibana
:http://192.168.80.10:5601
,点击Discovery
,可以看到日志已经被收集,然后可以自行创建查询规则。
`