elasticsearch + logstash + kibana 搭建实时日志收集系统【原创】
2015-09-11 10:56
671 查看
实时日志统一收集的好处:
1、快速定位集群中问题机器
2、无需下载整个日志文件(往往比较大,下载耗时多)
3、可以对日志进行统计
a、发现出现次数最多的异常,进行调优处理
b、统计爬虫ip
c、统计用户行为,做聚类分析等
基于上面的需求,我采用了 ELK(elasticsearch + logstash + kibana)的方案,安装方法可以参考我的项目 ELK_Tutorial,这里我主要讲讲我遇到的问题。
1、LVS 分发UDP请求不成功的问题
为了不影响线上集群的性能,我们采取了UDP的方式传输日志消息,如下图:
而负载均衡我采用了LVS,在配置LVS时,我发现需要在keepalived.conf里面使用MISC_CHECK方法才能在 protocol=UDP的情况下成功检测到real_server,并且分发成功,在keepalived.conf中关键配置的地方是:
而udp_check.sh 这个文件是我自己写的,里面的内容很简单:
这里需要注意的是udp_check.sh 这个文件的权限,我这里设置的是 755
2、logstash集群发送的日志乱序
这个问题解决方法很简单,统一每台logstash机器的系统时间即可。
3、elasticsearch 集群脑裂
出现脑裂,即无法选举出master的情况,解决方式是加大心跳检测时间,高负载的情况下,可能出现master响应较慢,这时不能极端的认为master down掉了。
附下面是应用后场景(点击查看大图)
另外我们还基于ES API做了分析
1、快速定位集群中问题机器
2、无需下载整个日志文件(往往比较大,下载耗时多)
3、可以对日志进行统计
a、发现出现次数最多的异常,进行调优处理
b、统计爬虫ip
c、统计用户行为,做聚类分析等
基于上面的需求,我采用了 ELK(elasticsearch + logstash + kibana)的方案,安装方法可以参考我的项目 ELK_Tutorial,这里我主要讲讲我遇到的问题。
1、LVS 分发UDP请求不成功的问题
为了不影响线上集群的性能,我们采取了UDP的方式传输日志消息,如下图:
而负载均衡我采用了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
2、logstash集群发送的日志乱序
这个问题解决方法很简单,统一每台logstash机器的系统时间即可。
3、elasticsearch 集群脑裂
出现脑裂,即无法选举出master的情况,解决方式是加大心跳检测时间,高负载的情况下,可能出现master响应较慢,这时不能极端的认为master down掉了。
附下面是应用后场景(点击查看大图)
另外我们还基于ES API做了分析
相关文章推荐
- 连接网络
- Python六大开源框架对比:Web2py略胜一筹
- HDU1584 蜘蛛牌(DFS)
- 请求调用链
- android系统通过图片绝对路径获取URI的三种方法
- 线性表的数组表示
- log4j.xml
- openwrt 包makefile
- SQLserver备份数据库示例
- 用python加载3ds max场景设置相关参数,渲染,保存输出图,最后退出3dsmax软件
- Scala中的测试
- [转载]Asp.net默认配置下,Session莫名丢失的原因及解决
- JavaScript中table对象集合整理
- JavaScript strict模式定义变量
- 交通灯管理系统
- mongoDB 数据导入
- HDU1728 逃离迷宫(BFS)
- 22个值得收藏的android开源代码-UI篇
- 使QT内建的对话框文字显示为中文 window7+vs2010+qt
- 常用压力测试工具