elasticsearch + logstash + kibana 搭建实时日志收集系统【原创】

实时日志统一收集的好处:php

    一、快速定位集群中问题机器git

    二、无需下载整个日志文件(每每比较大,下载耗时多)github

    三、能够对日志进行统计负载均衡

      a、发现出现次数最多的异常,进行调优处理elasticsearch

      b、统计爬虫ip性能

      c、统计用户行为,作聚类分析等    spa


    基于上面的需求,我采用了 ELK(elasticsearch + logstash + kibana)的方案,安装方法能够参考个人项目 ELK_Tutorial,这里我主要讲讲我遇到的问题。日志


    一、LVS 分发UDP请求不成功的问题
code

         为了避免影响线上集群的性能,咱们采起了UDP的方式传输日志消息,以下图:orm

         

         而负载均衡我采用了LVS,在配置LVS时,我发现须要在keepalived.conf里面使用MISC_CHECK方法才能在        protocol=UDP的状况下成功检测到real_server,而且分发成功,在keepalived.conf中关键配置的地方是:

real_server 机器A 12201 {  
        weight 1   
        MISC_CHECK {  
        misc_path "/etc/keepalived/udp_check.sh 机器A 12201"         
	misc_timeout 10
        }  
    }


    而udp_check.sh 这个文件是我本身写的,里面的内容很简单:

/usr/bin/nc -uz -w1 $1 $2 | grep succeeded >/dev/null
exit $?

   这里须要注意的是udp_check.sh 这个文件的权限,我这里设置的是 755


   二、logstash集群发送的日志乱序

   这个问题解决方法很简单,统一每台logstash机器的系统时间便可。


   三、elasticsearch 集群脑裂

   出现脑裂,即没法选举出master的状况,解决方式是加大心跳检测时间,高负载的状况下,可能出现master响应较慢,这时不能极端的认为master down掉了。


附下面是应用后场景(点击查看大图)


另外咱们还基于ES API作了分析

相关文章
相关标签/搜索