工作中经常会遇到业务数据统计的需求,通常的做法是通过定时任务,每天汇总一次数据到数据库,简单直观,缺点是做不到实时(频繁调用定时任务,数据量大的话,会很耗性能),而实时展示业务数据的需求还是很有必要的。最近了解到了ELK,被它的强大且易用所折服,Logstash负责数据的采集,ElasticSearch负责数据的存储及搜索(官方说可支持PB级别的数据存储),Kibana主要负责数据报表的展示,简直就是一条龙服务啊。不多说,下面记录下搭建的全过程 ###一、环境准备: 操作系统:阿里云Ubuntu 14.04.5
首先,去Elastic官网 https://www.elastic.co/downloads 下载安装包,拷贝到服务器上,我用的是5.0版本
tips1:安装ELK5.0以上版本,唯一要求是先安装JDK1.8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ###二、启动ElasticSearch
>cd elasticsearch-5.0.0/bin
> ./elasticsearch
此时会报错,原因是官方处于安全考虑,不允许用root用户启动elasticsearch
需要新建一个账户el来启动。为了能写入数据,需要将elasticsearch文件夹的操作权限付给新建的账户el
# 创建elgroup用户组及el用户
>groupadd elgroup
>useradd el -g elgroup -p 123456
-g是添加到组,-p是密码
更改elasticsearch-5.0.0文件夹及内部文件的所属用户及组为el:elgroup
# 切到elasticsearch-5.0.0外层目录
>chown -R el:elgroup elasticsearch-5.0.0
切换到el用户,再启动
>su el
>cd elasticsearch-5.0.0
>./bin/elasticsearch
# 后台启动的命令为:./bin/elasticsearch -d
此时还会遇到两个问题
问题一:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
这是由于 vm.max_map_count 太小引起的 可以在sysctl.conf增加 vm.max_map_count=262144
>vim /etc/sysctl.conf
# 增加一句 vm.max_map_count=262144
# 然后查看是否生效
> sysctl -p /etc/sysctl.conf
问题二:max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
Linux对新用户的进程(Process)会有一些限制
> vim /etc/security/limits.conf
# 增加两句
el hard nofile 65536
el soft nofile 65536
切换回el用户,终于可以启动,curl下吧,curl http://localhost:9200?pretty
启动成功,本地可以访问,但还无法用浏览器远程访问,因为相应的端口没开,还需两步
1、开启3个端口,9200、9300(es使用)、5601(kibana)使用
> iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT
> iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 9300 -j ACCEPT
> iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5601 -j ACCEPT
> iptables -L ## 查看是否生效
2、更改es配置,允许接受外部请求
> cd config/elasticsearch.yml
# 更改 network.host: 0.0.0.0
好了,重启es,外网访问OK
至此,elasticsearch 5.0 搭建启动完毕 ###三、启动Kibana 很简单
> cd kibana-5.0.0-linux-x86_64/
> vim /config/kibana.yml
# 更改 server.host: "0.0.0.0",允许外网访问
# 启动
> ./bin/kibana
# 后台启动的命令为: nohup bin/kibana &
OK,访问下吧
Kibana也搭建完了,简单吧
大家可以看到上面Kibana的图,已经有了数据,因为已经使用了Logstash来采集日志,下一遍将围绕一个小案例,ELK采集分析nginx日志,来具体解释下Logstash的搭建与使用