ElasticSearch,LogStash,Kibana搭建实
ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成
ELK官网地址:https://www.elastic.co/products
最新版本5.3.1
ELK包括
-
Elasticsearch
是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 -
Logstash
是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
Logstash在其过程中担任搬运工的角色,它为数据存储,报表查询和日志解析创建了一个功能强大的管道链。Logstash提供了多种多样的input,filters,codecs和output组件,让使用者轻松实现强大的功能。 -
kibana
也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
Kibana作为ELK的最后一个步骤,可以在ES的存取数据中通过一定的设置规则,对需要的数据进行展示,支持布尔查询,正则表达式和过滤查询等功能。Kibana本身不支持集群,若是期望达到集群的效果,可以使用Apache或者Nginx做负载均衡。同样,若是想做身份验证,Kibana本身也不支持,同样需要Apache或者Nginx来实现。
![](https://img.haomeiwen.com/i4067824/17973bc499557e64.png)
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到logstash indexer,logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
使用ELKstack的好处
1、开发人员不能登录线上服务器查看详细日志。使用ELKstack,他们查看日志非常方便和高效。
2、各个系统都有日志,日志数据分散难以查找。使用ELKstack集中展示日志,展现和搜索更加友好和方便。
3、日志数据量大,查询速度慢,或者数据不够实时。使用ELKstack,日志可由高性能服务器集中处理和展示。
4、一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据。使用ELKstack,集中管理展示日志。
![](https://img.haomeiwen.com/i4067824/77414159d5a50dc2.png)
Logstash进程先收集日志,把收集到的东西放转存到 Redis 里面存储,然后又一个 Logstash 进程从 Redis 里面读取数据,写入 ElasticSearch 中存储,最后 Kibana 从 ElasticSearch 里面获取日志。
安装
ElasticSearch,LogStash需要java环境。java环境安装具体过程略。
在官网下载最新应用包:
![](https://img.haomeiwen.com/i4067824/eeaf0253a7295bad.png)
安装Logstash
安装logstash只需将它解压的对应目录即可,例如:/usr/local下:
tar –zxf logstash-1.5.2.tar.gz -C /usr/local/
![](https://img.haomeiwen.com/i4067824/b417b8bbc6d59073.png)
使用CTRL-C命令可以退出之前运行的Logstash。
![](https://img.haomeiwen.com/i4067824/3d7d97250eeecd64.png)
这时候,在/usr/local/logstash-5.3.2/logs目录会有日志文件
![](https://img.haomeiwen.com/i4067824/c69d576c75143d14.png)
查看日志内容
vi logstash-plain.log
![](https://img.haomeiwen.com/i4067824/47a37bacf25c9366.png)
logstash文档地址:
http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html
安装Elasticsearch
解压到对应的目录就完成Elasticsearch的安装
unzip elasticsearch-5.3.2.zip -d /usr/local/
logstash Hello World
- 运行
在终端中,像下面这样运行命令来启动 Logstash 进程:
bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
然后你会发现终端在等待你的输入。没问题,敲入 Hello World,回车,然后看看会返回什么结果!
- 结果
{
"message" => "Hello World",
"@version" => "1",
"@timestamp" => "2014-08-07T10:30:59.937Z",
"host" => "raochenlindeMacBook-Air.local",
}
![](https://img.haomeiwen.com/i4067824/2d1f235eee974b40.png)
通过配置文件启动logstash
/usr/local/logstash/bin/logstash -f /usr/local/logstash/etc/central.conf
![](https://img.haomeiwen.com/i4067824/65c72713bc7ae597.png)
启动Elasticsearch
/usr/local/elasticsearch-5.3.2/bin/elasticsearch
确认elasticsearch的9200端口已监听,说明elasticsearch已成功运行
netstat -na |grep :9200
为了操作方便,/usl/local目录软连接下
cd /usr/local/
ln -s elasticsearch-5.3.2 elasticsearch
ln -s logstash-5.3.2 logstash
ln -s kibana-5.3.2-darwin-x86_64 kibana
以上操作完成后,在/usr/local 目录下执行 ls -trl 命令
![](https://img.haomeiwen.com/i4067824/d38f96202aca6fd0.png)
接下来我们在logstash安装目录下创建一个用于测试logstash使用elasticsearch作为logstash的后端的测试文件logstash-es-simple.conf,该文件中定义了stdout和elasticsearch作为output,这样的“多重输出”即保证输出结果显示到屏幕上,同时也输出到elastisearch中。
创建测试文件logstash-es-simple.conf
vi logstash-es-simple.conf
其内容:
input { stdin { } }
output {
elasticsearch {host => "localhost" }
stdout { codec=> rubydebug }
}
启动kibana
/usr/local/kibana/bin/kibana
![](https://img.haomeiwen.com/i4067824/1ac409cf5226c721.png)
![](https://img.haomeiwen.com/i4067824/cebdc2017ccf915e.png)