ELK日志系统架构杂谈

1引言

最近时间还算充裕,整理一下18年下半年的一些资料,也是在工作中遇到,并构建的。博主也是凑合着写写,网上的教程也比较多,希望这篇对你有帮助。

因从事的算是带有金融属性的,对于各种统计和错误即为敏感,每天产生的各类日志都要好几十种,每天需要处理约三千万条日志,需要对其进行统计实时化,热数据存储30天左右。

2日志系统的必要性?

18下半年那会刚入职那会,定位生产问题,就是连上机器看日志,金融属性小项目不怕大家笑话,有没有经历过我这种操作的童鞋?

如果是一两台机器还好,要是十几台甚至上千台机器的集群?怕不是问题没解决,人先GG了。

为了解决上述的问题,临危受命,主张改进了当时的日志集中化管理。提高了查错和相关统计的效率。

我认为,日志数据在以下方面非常重要

1、数据查找

2、服务诊断,了解服务当前的运行状态

3、数据分析,需要在日志做实施统计,计算出各种符合要求的数据并进行实时可视化

啰嗦了这么一大堆,下面开始正式说吧。

3组件介绍:ELK Stack

Logstash : 数据收集处理引擎。支持动态的从各种数据源收集数据,并对数据进行过滤、分析、丰富、统一格式等待操作,然后存储以供后续使用

Kibana:可视化平台。能够进行搜索、展示存储在Elasticsearch中的数据,并能很轻松的进行可视化分析展示。

Elasticsearch:分布式搜索引擎。具有高可伸缩、高可用、易管理等特点。可用于全文检索、结构化检索和分析,性能将这三者结合起来。

Filebeat:轻量级的数据收集引擎,基于原先的Logstash-fowarder的源码改造的。

当然其中的APM探针集成,也是我选择ELK的一个点亮点,对于小架构的项目还是十分友好。

4玩玩版

这一版本各位开发大佬在自己的服务器上搭建练练手就可以,当时我就是使用的Vultr的机器来进行搭建考察是否满足需求。

这种架构下面我们把Logstash实例与Elasticsearch实例相连接,主要是为了自己学习快速搭建。

我们将服务产生的日志还是照常的写入LOG文件,然后Logstash将Log读出,进行格式化过滤等操作传递给ES,最后用户访问Kibana。

但是有几个比较明显的缺点

Logstash在生产机器上面部署的话,Logstash采用JVM,这样会占用相当大的内存和CPU消耗,这样在生产机器上面是非常致命。并且如果是做一个日志切分格式化等操作的时候,占用资源会变得相当高。

其次在大并发情况下面,日志传输峰值比较大,如果是直接写入ES,api处理能力有限,在日志写入频繁的情况下可能会造成超时甚至丢失,所以需要一个缓冲中间件。

5初级版本

在这版本中,加入一个缓冲中间件,并且对Logstash进行拆分,使用filebeat。

fileabeat进行日志收集,Lostash进行格式化过滤缓冲日志,输出到Elasticsearch。

至于这个地方缓冲中间件的选择,推荐Kafka。至于为什么。网上各路大神也有相关的讲解。

缺点在于部署成集群的话,一个业务系统出现问题,将会拖垮整个日志系统。

6集群版本

这版本,采用filebeat来进行收集,上一版本中没有怎么介绍filebeat。filebeat 是采用golang写的,相比Logstash,来说更加轻量,所需要的资源占用也是相当少的。当然也是作者根据logstash重写的轻量级软件。

缺点在于没有进行数据的冷热分离,对一些敏感数据没有屏蔽等等等~其他问题。还有其他的一些解决方案这个就不进行讨论了。

7总结

基于ELK Stack 的日志解决问题的优势主要体现于:

可扩展性:采用高可扩展的分布式系统架构设计,可以支持每日TB级别的新增数据

使用简单:通过用户图形界面实现各种统计分析功能,简单

快速响应:从日志产生到查询可见,能做到秒级完成采集处理

界面炫酷:这种优势必须的说一下,傻瓜式操作。仪表盘6666666

最后加一些较早之前学习关于Spark的相关图。

作图软件: https://www.processon.com

后面有时间的话,给大家详解写一下ELK简单版本的搭建流程。

欢迎指正文中错误。跪谢。

  大连妇科医院 http://mobile.84211111.cn/

  大连人流医院哪家好 http://mobile.84239650.cn/

  大连专科男科医院 http://mobile.bohaink.com/

猜你喜欢

转载自blog.csdn.net/qq_42894764/article/details/88994023
今日推荐