什么是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