tedwhy 发表于 2019-1-28 11:09:28

CentOS7.3下ELK日志分析系统集群搭建

  Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分析功能的搜索引擎,能够扩展至数以百计的节点实时处理PB级别的数据。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Elasticsearch集群采用主从模式,通过获取Logstash客户端收集来的日志信息同步到Elasticsearch集群节点中,再由Kibana的Web界面获取到日志信息进行搜索查询工作,当Elasticsearch主节点挂掉之后,Elasticsearch从节点的数据仍就正常,需要变更Kibana的elasticsearch.url参数去指定Elasticsearch节点IP,保证ELK日志系统的正常运行。
http://s1.运维网.com/images/20180714/1531550616384847.png
  Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的“存储库”中。而当下最常用的存储库就是Elasticsearch。需要在所有需要搜集日志的客户端中安装Logstash或者Filebeat等日志搜集工具,对Logstash配置文件进行修改,指定input上下文,即搜集的日志路径(最好为绝对路径)。output上下文,指定Logstash从input搜集到的日志内容输出到哪里保存,一般指向Elasticsearch的主节点IP地址。
  Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互存放在Elasticsearch索引里的数据,使用各种不同的图表、表格、地图等kibana能够很轻易地展示高级数据分析与可视化。
  ELK日志系统配置:
  三台CentOS7.3虚拟机
  node-2192.168.175.130Elasticsearch

  node-3192.168.175.131Logstash
  node-4192.168.175.132Kibana
  

  源代码包:
  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以上。
http://s1.运维网.com/images/20180714/1531552709140166.png
  

  ②关闭所有虚拟机的防火墙
  #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
http://s1.运维网.com/images/20180714/1531553541579764.png
  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 for elasticsearch process is too low, increase to at least (报错信息)
         需要修改/etc/security/limits.conf
         http://s1.运维网.com/images/20180714/1531554948589478.png

  ③ max virtual memory areas vm.max_map_count is too low, increase to at least (报错信息)
   需要修改内核参数vm.max_map_count=655360

  #sysctl -w vm.max_map_count=65536

  也可以直接写入到/etc/sysctl.conf(永久)
  ④运行elasticsearch的时候不能以root身份运行,需要以创建的elasticsearch用户的身份运行。
  运行elasticsearch
http://s1.运维网.com/images/20180714/1531555293890467.png

  ④安装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
http://s1.运维网.com/images/20180714/1531556044234449.png
  修改配置文件,使Logstash能够收集当前虚拟机的日志信息(需要指定),并输出到elasticsearch master主机。
http://s1.运维网.com/images/20180714/1531556307940610.png
  input上下文表示拉取本机/var/log/test.log中的日志
  output上下文表示将Logstash拉渠道的日志内容放到elasticsearch集群中,指定IP及端口,设置索引可以在Kibana上添加索引进行查询。
  

  启动Logstash
http://s1.运维网.com/images/20180714/1531557184332630.png
  ⑤安装Kibana
  #tar -xf kibana-4.5.3-linux-x64.tar.gz -C /usr/local
  #cd /usr/local/kibana
  配置如下:

http://s1.运维网.com/images/20180714/1531557383643236.png
  启动Kibana
http://s1.运维网.com/images/20180714/1531557492912225.png
  

  在本机访问http://192.168.175.132:5601

  可以在Kibana的虚拟机上安装nginx进行反代,将所有数据反代给192.168.175.132的5601端口
  实现结果:
  搜索在Logstash中指定的索引作为在Kibana的日志分类
http://s1.运维网.com/images/20180714/1531557886781907.png

  给/var/log/test.log传入数据

  #cat /var/log/boot.log >> /var/log/test.log
  这时候在Kibana中的Discover刷新一下即可查看到对应的日志信息。
http://s1.运维网.com/images/20180714/1531558236703606.png



页: [1]
查看完整版本: CentOS7.3下ELK日志分析系统集群搭建