ELK日志分析工具
ELK是三个开源软件的缩写,Elasticsearch、Logstash、Kibana
环境介绍:
ELK服务:192.168.203.132 (Elasticsearch、Logstash、Kibana)
nginx服务:192.168.203.151 (nginx,Filebeat)
搭建ELK服务端:
1.安装搭建elasticsearch
2.安装搭建logstash
3.安装搭建kibana
准备工作:
1.安装jdk环境工具(需安装jdk1.8)
[root@localhost elk]# yum install -y java-1.8.0*
1.安装搭建elasticsearch
(1)下载安装
1.下载elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz
2.解压
[root@localhost elk]# tar -xf elasticsearch-6.4.2.tar.gz
3.将解压文件移动到/usr/local/elk目录下(最后elk需要加“/”,否则会将ela目录下的内容移动到elk中)
[root@localhost elk]# mv elasticsearch-6.4.2 /usr/local/elk/
(2)配置elasticsearch程序
1.新建elasticsearch用户
[root@localhost elasticsearch-6.4.2]# useradd elasticsearch
2.设置elasticsearch目录归属用户及组
[root@localhost elk]# chown -R elasticsearch:elasticsearch elasticsearch-6.4.2/
(3)启动服务
1.切换到elasticsearch用户下启动
[root@localhost elk]# su - elasticsearch
2.启动服务
[elasticsearch@localhost ~]$ cd /usr/local/elk/elasticsearch-6.4.2/
[elasticsearch@localhost elasticsearch-6.4.2]$ ./bin/elasticsearch -d
3.查看进程是否启动成功(耐心等两三分钟)查看是否有9200端口
[elasticsearch@localhost logs]$ netstat -antp
4.测试是否正常访问
[elasticsearch@localhost logs]$ curl localhost:9200
#该信息表明elasticsearch安装成功
{
"name" : "LLgwYXS",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "KWM0uHN2TH2kengIsdHrOQ",
"version" : {
"number" : "6.4.2",
"build_hash" : "c59ff00",
"build_date" : "2018-03-13T10:06:29.741383Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
2.安装搭建logstash
(1)下载安装
1.下载logstash
wget https://artifacts.elastic.co/cn/downloads/logstash/logstash-6.4.2.tar.gz
2.解压到指定目录/usr/local/elk
[root@localhost elk]# tar -xzvf logstash-6.4.2.tar.gz -C /usr/local/elk/
(2)配置logstash程序
1.logstash中的grok正则匹配
vim /usr/local/elk/logstash-6.4.2/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns
#Nginx log
WZ ([^ ]*)
NGINXACCESS %{IP:remote_ip} \- \- \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{WZ:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:status} %{NUMBER:bytes} %{QS:referer} %{QS:agent} %{QS:xforward}
2.创建logstash配置文件
vim /usr/local/elk/logstash-6.4.2/default.conf
input {
beats {
port => "5044"
}
}
#数据过滤
filter {
grok {
match => { "message" => "%{NGINXACCESS}" }
}
geoip {
#nginx客户端ip
source => "192.168.203.151"
}
}
#输出配置为本机的9200端口,这是ElasticSearch服务的监听端口
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
(3)启动服务
1.进入到/usr/local/elk/logstash-6.4.2目录下执行命令
#后台启动logstash
[root@localhost logstash-6.4.2]# nohup bin/logstash -f default.conf &
2.查看启动日志
[root@localhost logstash-6.4.2]# tailf nohup.out
3.查看端口是否启动
[root@localhost logstash-6.4.2]# netstat -napt | grep 5044
tcp6 0 0 :::5044 :::* LISTEN 54470/java
3.安装搭建kibana
(1)下载安装
1.下载kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.2-linux-x86_64.tar.gz
2.解压到指定目录/usr/local/elk
[root@localhost elk]# tar -xzvf kibana-6.4.2-linux-x86_64.tar.gz -C /usr/local/elk/
(2)配置kibana服务
1.配置kibana.yml
[root@localhost kibana-6.4.2-linux-x86_64]# vim /usr/local/elk/kibana-6.4.2-linux-x86_64/config/kibana.yml
#server.host: "localhost"
改为:server.host: "192.168.203.132"(本机IP)这样其他电脑也能浏览访问kibana的服务了
(3)启动服务
1.进入kibana目录
[root@localhost kibana-6.4.2-linux-x86_64]# cd /usr/local/elk/kibana-6.4.2-linux-x86_64/
执行启动命令:nohup bin/kibana &
查看启动日志:tail -f nohup.out
查看端口是否启动:netstat -napt | grep 5601
采集客户端
介绍
1.本次测试使用的是采集nginx日志和filter工具进行收集
1.nginx安装
yum install -y wget gzip tar make gcc
yum install -y pcre pcre-devel zlib zlib-devel
wget -c http://nginx.org/download/nginx-1.16.0.tar.gz
tar -xzf nginx-1.16.0.tar.gz
cd nginx-1.16.0
useradd -s /sbin/nologin www -M
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module
make
make install
/usr/local/nginx/sbin/nginx
ps -ef|grep nginx
netstat -tnl|grep -w 80
2.安装filebeat工具
(1)下载
1.下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.2-linux-x86_64.tar.gz
2.解压到指定目录
[root@localhost filebeat-6.4.2-linux-x86_64]# tar -xzvf filebeat-6.4.2-linux-x86_64.tar_2.gz -C /usr/local/
(2)修改配置
[root@localhost filebeat-6.4.2-linux-x86_64]# cd /usr/local/filebeat-6.4.2-linux-x86_64/
[root@localhost filebeat-6.4.2-linux-x86_64]# vim filebeat.yml
enabled: false #修改为true
paths:- /var/log/*.log #修改为nginx日志存放位置/usr/local/nginx/logs/*.log
#output.elasticsearch: #注释掉
#hosts: ["localhost:9200"] #注释掉
output.logstash: #取消该行注释
hosts: ["192.168.203.132:5044"] #取消该行注释并将IP地址修改为ELK服务器地址
(3)启动服务
[root@localhost filebeat-6.4.2-linux-x86_64]# cd /usr/local/filebeat-6.4.2-linux-x86_64/
[root@localhost filebeat-6.4.2-linux-x86_64]# nohup ./filebeat -e -c filebeat.yml &
(4)kibana测试
1.先通过浏览器多访问几次nginx服务,让其多生成一些访问文件
2.访问kibana:https://ip:5601,点击左上角的Discover,可以看到日志已经被ELK搜集,按照下述步骤设置集成
输入logstash-*,点击Next step
选择Time Filter,再点击Create index pattern
然后可自行创建日志内容查询规则
搭建中的错误:
1.在下载elasticsearch软件包时,将其版本下载错误,elasticsearch和logstash及kibana版本不一致,导致无法进入kibana主页
2.elasticsearch服务经常挂掉,主要原因是系统运行oracle服务,内存占满系统自动杀掉elasticsearch服务
3.logstash中将nginxIP设置错误,导致kibana无法获取数据
解决问题的思路:首先应该仔细想想出错是哪一环节导致,比如无法获取数据,有可能是filebeat或者logstash无法收集日志导致,则从这两个服务检查,由于是从filebeat服务将数据传给logstash,则从第一步的filebeat开始检查,没问题再从logstash排查,这次搭建时这两个服务的错误都犯了,第一是没有将filebeat中的nginx日志路径写对,第二是没有将logstash中的nginxip填写正确。