ELK搭建实时日志分析平台
导言
ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成,ELK平台可以同时实现日志收集、日志搜索和日志分析的功能。对于生产环境中海量日志信息的分析处理无疑不是一个好的解决方案。
官方网站:https://www.elastic.co/
1).Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
2).Logstash是一个接收,处理,转发日志的工具。
3).Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引(index)里的数据,使用各种不同的图表、表格、地图等来进行数据的可视化。
先上一个原理图:
上图来自“摆渡者”
我相信,了解大数据的小伙伴们都对于上面这张图片应该不陌生,一看就会明白。类似我们的webserver=>flume=>kafka这么一条线。这里Logstash收集app、webServer产生的日志,并存放到ES集群中,而Kibana则从ES集群中定义的index生成图表,再返回给Browser。
ELK平台搭建
组件版本选择:
Centos6.4+
Jre1.7+[我原来就安装了jdk1.8,这个就没有管了]
ElasticSearch: 2.1.1
Logstash: 2.1.1[运行依赖于Java环境]
Kibana: 4.3.1
下载地址:
官网下载:https://www.elastic.co/downloads/,官网速度慢的话,你也可以从我们分享的百度云盘中下载,里面包含了所有软件
链接:http://pan.baidu.com/s/1eROKwDk 密码:w7uy
下载完成之后,就开始安装
说明:elk似乎是不能够使用root用户的,所以我们得新建一个用户
[root@hadoop000 ~]# useradd liuge
我一般是喜欢把下载的软件放在当前用户家目录下的softwares下,软件的下载存放位置看你习惯就好
[liuge@hadoop000 ~]$ cd software/
[liuge@hadoop000 software]$ ls
elasticsearch-2.1.1.zip logstash-2.1.1.zip
kibana-4.3.1-linux-x64.tar.gz
[liuge@hadoop000 software]$
接着就开始一个一个的解压安装
ElasticSearch
解压:
[liuge@hadoop000 software]$ tar -zxvf elasticsearch-2.1.1.zip -C ../app/
安装head插件:
[liuge@hadoop000 app]$ cd elasticsearch/
[liuge@hadoop000 elasticsearch]$ ./bin/plugin install mobz/elasticsearch-head
查看是否安装成功:
[liuge@hadoop000 elasticsearch]$ cd plugins/
[liuge@hadoop000 plugins]$ ls
head
[liuge@hadoop000 plugins]$
#看见head就说明没有什么问题了
接下来,就是开始简单的配置啦
[liuge@hadoop000 elasticsearch]$
[liuge@hadoop000 elasticsearch]$ vim config/elasticsearch.y
#只需要修改以下几条信息就好
#名称任意取
cluster.name=liuge_cluster
node.name=node0000
#这里的data/logs目录需要自己创建
path.data=/home/liuge/elasticsearch/data
path.logs=/home/liuge/elasticsearch/logs
#主机设置为自己的主机名就好
network.host=hadoop000
network.port=9200
上面的配置设置好了之后,就是可以开始启动啦:
[liuge@hadoop000 elasticsearch]$ ./bin/elasticsearch
查看是否正常启动,jps查看一下
[liuge@hadoop000 ~]$ jps
9954 Elasticsearch
10086 Jps
[liuge@hadoop000 ~]$
#可以看见,是有进程的
同时,也是可以通过web端访问的,主机+9200:
我这里是http://hadoop000:9200
上面显示了配置的name,cluster_name以及安装的版本等信息。
刚刚安装的head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。访问地址:http://hadoop000:9200/_plugin/head
Logstash
Logstash是一个接收,处理,转发日志的工具。
下面,开始安装,其实logstash解压出来就可以使用了,比较简单。
[liuge@hadoop000 software]$ unzip logstash-2.1.1.zip
解压出来,之后,就可以编写我们的配置文件了,这里我的配置文件是放在解压目录下的config目录下,没有这个目录可以自己创一个
[liuge@hadoop000 logstash]$ vim config/test1.conf
然后再里面,书写我们的代码,我这里就先直接把代码贴进去了,可以看着理解一下,
说明,我们的目的是从nginx服务器获取日志文件,然后,把文件output到es.就是这么简单:
input {
file {
#这个是你自己的nginx日志的文件位置
path => "/home/hadoop/data/project/logs/access.log"
start_position => beginning
}
}
filter {
}
output {
elasticsearch {
#我们的es的地址
hosts => "hadoop000:9200"
#设置一个es的索引,用于kibana使用
index => "python-logstash-elasticsearch-kibana"
}
stdout { codec => rubydebug }
}
说明一下,我这个是依据官网上的案例自己修改的,基本上就是最简单的例子了。ps:官网是一个好的学习资源,希望大家不要浪费
分析:从上面的例子中,可以看出,写配合文件,基本上就是写inout,filter,output这三部分
这一点也是很像我们flume里面的agent的三个组件
接下来,我们就来启动我们的配置文件,开始日志的收集
[root@hadoop000 logstash]# ./bin/logstash agent -f config/test1.conf
Settings: Default filter workers: 1
Logstash startup completed
#看见上面的startup就说明ok啦
Kibana
Kibana是一个开源的分析与可视化平台,是一个用来做日志可视化的工具
同样,kibana的安装也是直接解压就好
[liuge@hadoop000 software]$ unzip kibana-4.3.1-linux-x64.tar.gz
来到,解压后的目录,修改默认的配合文件
[liuge@hadoop000 kibana]$ cd config/
[liuge@hadoop000 config]$ ls
kibana.yml
[liuge@hadoop000 config]$ vim kibana.yml
#这里修改以下几条
server.port: 5601
server.host: "hadoop"
elasticsearch.url: http://hadoop000:9200
kibana.index:".kibana"
#:wq保存退出
启动,
[liuge@hadoop000 ~]$ cd app/kibana/
使用浏览器访问web界面,地址:
到这里,我们已经成功安装好了ELK这个平台在我们自己的机器上
接下来,就是开始实时日志的统计:
任务需求:统计日志中404记录的条数,并且在页面上实时更新
开始
1.在kibana中的setting页面中new一个index
2.来到我们的发现页面
3.这里写我们的筛选条件,然后保存
设置名称:
4.来到可视化选项
在可视化中,我们可以创建各类图表
这里我们选一个饼图
5.对我们的图形进行设计
6.保存为仪表盘的
7.来到仪表盘
8.设置图表数据的更新周期
设置更新周期之后,我们的就可以看见数据在动态变化了,还是很有意思的,如果,感兴趣,不妨一试哟
由于我也只是初学者,只能先做这么一个简单的东西,不过,这个示例,起码,是把整个流程走通了,后面还会不断学习的