一、介绍
1、ELK是一个完整的集中的日志收集分析系统。包含以下特点:
a、能够收集多种源的日志数据
b、能够稳定的把日志数据传输到中间系统
c、多种存储日志数据的方式
d、可以支持可视化界面分析
e、能够提供错误报告、提前预警
2、ELK是三个软件首字母缩写,分别是
elasticsearch:分布式搜索引擎,提供收集、分析、存储三大功能
logstash:收集、分析、过滤日志的工具,支持大量的数据收集方式。工作方式为C/S模式。client安装在需收集日志的设备上,server端负责将各个client收集到的日志进行过滤、修改后发往elasticsearch。
kibana:可以为前面两者提供良好的UI界面,帮助提高对日志的汇总、分析和搜索等功能的友好度。
3、上面三者组成了ELK,但一般情况下还需要client,filebeat提供了这一功能。内涵四种功能:
packetbeat:收集网络流量数据
topbeat:收集系统的进程、CPU、内存等使用运行情况
filebeat:收集文件数据
winlogbeat:收集Windows中的事件日志数据
4、工作流程
测试部署过程(此处设计两台,一台为ELK_server,一台为Nginx_server)
二、ELK_server端:
环境准备:关闭防火墙、关闭SELinux(因为是测试环境,就关闭了)。
yum -y install java-1.8* (安装jdk,ELK需要java环境)
1、安装elasticsearch
上传elasticsearch安装包
tar -xzf elasticsearch-7.9.0-linux-x86_64.tar.gz
useradd elasticsearch (因为elasticsearch启动不能用root用户,所有新建一用户)
chown -R elasticsearch.elasticsearch elasticsearch-7.9.0 (将目录权限改为新建的用户)
cp -a elasticsearch-7.9.0 /usr/local
su elasticsearch
cd /usr/local/elasticsearch-7.9.0
./bin/elasticsearch -d
查看服务是否启动成功
netstat -antp | grep 9200
或者使用curl localhost:9200
表示启动成功。
2、安装logstash
上传logstash软件包
tar -xzf logstash-6.8.15.tar.gz
cp -a logstash-6.8.15 /usr/local
vi /usr/local/logstash-6.8.15/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns
最下面新起一行,填写以下代码。
# nginx
WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{QS:referer} %{QS:agent} %{QS:xforward}
完成后,保存退出
vi /usr/local/logstash-6.8.15/test.conf (新建配置文件,启动服务时需要)
input {
beats {
port => "5044"
}
}
#数据过滤
filter {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
geoip {
#nginx端IP地址
source => "192.168,171.140"
}
}
#输出配置为本机端口9200端口,这是elasticsearch端口
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
完成后,保存退出
启动服务(服务启动较慢)
nohup /usr/local/logstash-6.8.15/bin/logstash -f /usr/local/logstash-6.8.15/test.conf &
查看服务启动情况:netstat -anpt | grep 5044
3、安装Kibana
上传Kibana安装包
tar -xzf kibana-7.9.0-linux-x86_64.tar.gz
cp -a kibana-7.9.0-linux-x86_64 /usr/local
vi /usr/local/kibana-7.9.0-linux-x86_64/config/kibana.yml
将 #server.port: 5601 改为 server.port: 5601
将 #server.host: "localhost" 改为 server.host: "192.168.171.141" (这样其他电脑通过浏览器进行访问了)
启动服务(启动过程耗时较长)
nohup /usr/local/kibana-7.9.0-linux-x86_64/bin/kibana --allow-root &
查看服务:netstat -anpt | grep 5601
启动成功后,可以通过浏览器进行访问了(IP:5601)
至此,server端的安装完成。
三、Nginx_server端配置
1、安装nginx服务(因为是测试,所以选用yum安装方式)
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum -y install nginx
2、上传filebeat,解压。
tar -xzf filebeat-7.9.0-linux-x86_64.tar.gz
cp -a filebeat-7.9.0-linux-x86_64 /usr/local/
3、修改配置文件并启动服务
cd /usr/local/filebeat-7.9.0-linux-x86_64/
vi filebeat.yml
enable:false 修改为true
paths:/var/log/*.log 修改为/var/log/nginx/*.log
output.elasticsearch 修改为 output.logstash (也可以将此注释掉,下面注释中有)
hosts:["localhost:9200"] 修改为 hosts:[server端IP:5044]
nohup ./usr/local/filebeat-7.9.0-linux-x86_64/filebaet -e -c filebeat.yml &
4、设置并查看
点击 Discover
输入logstash-* 点击 next
选择时间,就可以查看了