Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分析功能的搜索引擎,能够扩展至数以百计的节点实时处理PB级别的数据。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Elasticsearch集群采用主从模式,通过获取Logstash客户端收集来的日志信息同步到Elasticsearch集群节点中,再由Kibana的Web界面获取到日志信息进行搜索查询工作,当Elasticsearch主节点挂掉之后,Elasticsearch从节点的数据仍就正常,需要变更Kibana的elasticsearch.url参数去指定Elasticsearch节点IP,保证ELK日志系统的正常运行。
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的“存储库”中。而当下最常用的存储库就是Elasticsearch。需要在所有需要搜集日志的客户端中安装Logstash或者Filebeat等日志搜集工具,对Logstash配置文件进行修改,指定input上下文,即搜集的日志路径(最好为绝对路径)。output上下文,指定Logstash从input搜集到的日志内容输出到哪里保存,一般指向Elasticsearch的主节点IP地址。
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。
ELK日志系统配置:
三台CentOS7.3虚拟机
node-2 192.168.175.130 Elasticsearch
node-3 192.168.175.131 Logstash
node-4 192.168.175.132 Kibana
源代码包:
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.4/elasticsearch-2.3.4.tar.gz
wget https://download.elastic.co/logstash/logstash/logstash-2.3.4.tar.gz
wget https://download.elasticsearch.org/kibana/kibana/kibana-4.5.3-linux-x64.tar.gz
分别在对应的虚拟机中下载。
①ELK需要在Java环境中部署,最好是在Java8以上。
②关闭所有虚拟机的防火墙
#iptables -F
#setenforce 0
③安装Elasticsearch
#tar -xf elasticsearch-2.3.4.tar.gz -C /usr/local
#mv /usr/local/elasticsearch-2.3.4 /usr/local/elasticsearch
#cd /usr/local/elasticsearch/config
#vim elasticsearch.yml
elasticsearch配置如上
cluster.name:集群名称,若有多个elasticsearch节点,则每个节点都需要相同集群节点名称。
node.name:节点名称,集群节点名称。
node.master:指定该节点是否为主节点。
node.data:指定该节点是否为均衡器节点,true为数据节点,存储日志数据,false为均衡器节点。
path.data:存储日志数据的路径。
path.logs:elasticsearch节点的日志路径。
network.host:该主机IP。
http.port:集群中Kibana以及Logstash的访问端口,9300位Elasticsearch节点中交流的端口。
bootstrap.memory_lock:锁定堆内存。
http.cors.enabled:如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。
http.cors.allow-orign:如果 http.cors.enabled 的值为true,那么该属性会指定允许 REST 请求来自何处。
discovery.zen.ping.unicast.hosts:elasticsearch集群节点的IP地址。
注意事项:
① 需要创建一个elasticsearch用户,并授权给Elasticsearch集群中的path.data,path.logs数据与日志路径
② max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536](报错信息)
需要修改/etc/security/limits.conf
③ max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144](报错信息)
需要修改内核参数vm.max_map_count=655360
#sysctl -w vm.max_map_count=65536
也可以直接写入到/etc/sysctl.conf(永久)
④运行elasticsearch的时候不能以root身份运行,需要以创建的elasticsearch用户的身份运行。
运行elasticsearch
④安装Logstash
#tar -xf logstash-2.3.4.tar.gz -C /usr/local
#mv /usr/local/logstash-2.3.4 /usr/local/logstash
#cd /usr/local/logstash
修改配置文件,使Logstash能够收集当前虚拟机的日志信息(需要指定),并输出到elasticsearch master主机。
input上下文表示拉取本机/var/log/test.log中的日志
output上下文表示将Logstash拉渠道的日志内容放到elasticsearch集群中,指定IP及端口,设置索引可以在Kibana上添加索引进行查询。
启动Logstash
⑤安装Kibana
#tar -xf kibana-4.5.3-linux-x64.tar.gz -C /usr/local
#cd /usr/local/kibana
配置如下:
启动Kibana
在本机访问http://192.168.175.132:5601
可以在Kibana的虚拟机上安装nginx进行反代,将所有数据反代给192.168.175.132的5601端口
实现结果:
搜索在Logstash中指定的索引作为在Kibana的日志分类
给/var/log/test.log传入数据
#cat /var/log/boot.log >> /var/log/test.log
这时候在Kibana中的Discover刷新一下即可查看到对应的日志信息。