什么是elk:
ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成: 1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 在elasticsearch中,所有节点的数据是均等的。 2)Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
一个完整的集中式日志系统,需要包含以下几个主要特点:
1)收集-能够采集多种来源的日志数据 2)传输-能够稳定的把日志数据传输到中央系统 3)存储-如何存储日志数据 4)分析-可以支持 UI 分析 5)警告-能够提供错误报告,监控机制 ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。
ELK工作原理:
Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。
环境
准备两台服务器 一台服务器:192.168.80.100 一台服务器:192.168.80.101
下载并解压
mkdir /usr/local/work //为elk创建目录 mkdir /usr/local/java ///为java创建目录 tar xf jdk-8u144-linux-x64.tar.gz -C /usr/local/java tar xf kibana-6.2.3-linux-x86_64.tar.gz -C /usr/local/work/ tar xf logstash-6.2.3.tar.gz -C /usr/local/work/ tar xf elasticsearch-6.2.3.tar.gz -C /
搭建java环境
cd /opt/ cp -r jdk1.8.0_144/ /usr/local/java vi /etc/profile //在文件末尾新增 export JAVA_HOME=/usr/local/java export JRE_HOME=/usr/local/java/jre export PATH=$PATH:/usr/local/java/bin export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
java环境生效
source /etc/profile 查看java版本 java -version
创建用户
ElasticSerach要求以非root身份启动,所以要创建一个用户: groupadd elasticsearch //创建用户组 useradd -g elasticsearch elasticsearch //创建用户
给elasticesearch-6.2.3修改用户组为elasticsearch
chown -R elasticsearch.elasticsearch /usr/local/work/elasticsearch-6.2.3
修改主机名
hostnamectl set-hostname elk-server vi /etc/security/limits.conf 新增
- soft nofile 65536
- hard nofile 131072
- soft nproc 2048
- hard nproc 4096
vi /etc/sysctl.conf 新增 vm.max_map_count=655360
sysctl -p //生效 重启电脑
启动ElasticSerach
su - elasticsearch //切换用户 cd /usr/local/work/elasticsearch-6.2.3 bin/elasticsearch -d //启动 tail -f /usr/local/work/elasticsearch-6.2.3/logs/elasticsearch.log //查看日志
切换到root
curl 127.0.0.1:9200
至此,ElasticSerach服务启动成功,接下来是Logstash
cd /usr/local/work/logstash-6.2.3 vi default.conf input { beats { port => "5044" } file{ path => ["/usr/local/work/logstash-6.2.3/logs/logstash-plain.log"] type => "logstash_log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } geoip { source => "clientip" } } output { elasticsearch { hosts => ["127.0.0.1:9200"] } }
启动logstash
bin/logstash -f default.conf //-f 指定配置文件启动 tail -f logs/logstash-plain.log //查看配置文件
配置和启动Kibana
cd /usr/local/work/kibana-6.2.3-linux-x86_64/ vi config/kibana.yml server.host: "192.168.80.100" server.port: "5601" 启动 nohup bin/kibana & tail -f nohup.out //查看
在浏览器访问http://192.168.80.100:5601
配置nginx-server
yum -y install epel-release //安装源 yum -y install nginx httpd-tools //安装软件包
启动nginx
systemctl start nginx
使用filebeat 收集日志的工具
mkdir /usr/local/work/ tar xf filebeat-6.2.3-linux-x86_64.tar.gz -C /usr/local/work/ cd /usr/local/work/filebeat-6.2.3-linux-x86_64/ vi filebeat.yml enabled: true
- var/log/.log => - /usr/local/nginx/logs/.log output.elasticsearch: 前面加一个“#”注释掉 hosts: ["localhost:9200"] 前面加一个“#” 注释掉 #output.logstash 去掉注释符号 #host: ["localhost:5400"] 去掉注释符号,并修改为[“192.168.80.100:5400”] 启动FileBeat:./filebeat -e -c filebeat.yml -d “publish”
通过浏览器多访问几次nginx服务,这样能多制造一些访问日志
访问Kibana:http://192.168.80.100:5601
点击左上角的Discover
可以看到访问日志已经被ELK搜集了
输入logstash-*,点击”Next step”
选择Time Filter,再点击“Create index pattern”
点击左上角的”Discover”按钮,即可看到最新的日志信息
至此,我们已经可以在ELK上查到Nginx的访问日志了
自此完成elk