您现在的位置是:人工智能 >>正文
如何用 ELK 搭建 TB 级的日志监控系统?
人工智能43393人已围观
简介本文主要介绍怎么使用 ELK Stack 帮助我们打造一个支撑起日产 TB 级的日志监控系统。在企业级的微服务环境中,跑着成百上千个服务都算是比较小的规模了。在生产环境上,日志扮演着很重要的角色,排查 ...
本文主要介绍怎么使用 ELK Stack 帮助我们打造一个支撑起日产 TB 级的何用日志监控系统。在企业级的搭的日微服务环境中,跑着成百上千个服务都算是建TB级比较小的规模了 。在生产环境上 ,志监日志扮演着很重要的控系角色,排查异常需要日志,何用性能优化需要日志 ,搭的日业务排查需要业务等等 。建TB级
然而在生产上跑着成百上千个服务 ,志监每个服务都只会简单的高防服务器控系本地化存储,当需要日志协助排查问题时 ,何用很难找到日志所在的搭的日节点。也很难挖掘业务日志的建TB级数据价值 。
那么将日志统一输出到一个地方集中管理,志监然后将日志处理化 ,控系把结果输出成运维 、研发可用的数据是解决日志管理 、协助运维的可行方案,也是源码下载企业迫切解决日志的需求。
我们的解决方案
通过上面的需求我们推出了日志监控系统 ,如上图:
日志统一收集 、过滤清洗。生成可视化界面 、监控,告警,日志搜索。
功能流程概览如上图:
在每个服务节点上埋点,实时采集相关日志 。统一日志收集服务 、过滤、清洗日志后生成可视化界面 、香港云服务器告警功能 。我们的架构

①日志文件采集端我们使用 FileBeat,运维通过我们的后台管理界面化配置,每个机器对应一个 FileBeat,每个 FileBeat日志对应的 Topic 可以是一对一、多对一 ,根据日常的日志量配置不同的策略。
除了采集业务服务日志外 ,我们还收集了 MySQL 的慢查询日志和错误日志,建站模板还有别的第三方服务日志,如 :Nginx 等 。
最后结合我们的自动化发布平台,自动发布并启动每一个 FileBeat 进程 。
②调用栈 、链路、进程监控指标我们使用的代理方式:Elastic APM,这样对于业务侧的程序无需任何改动。
对于已经在运营中的业务系统来说 ,为了加入监控而需要改动代码,那是服务器租用不可取的,也是无法接受的。
Elastic APM 可以帮我们收集 HTTP 接口的调用链路、内部方法调用栈 、使用的SQL 、进程的 CPU、内存使用指标等。关注公号:码猿技术专栏 ,回复关键词 :1111 获取阿里内部的Java性能调优手册
可能有人会有疑问 ,云计算用了 Elastic APM ,其它日志基本都可以不用采集了 。还要用 FileBeat 干嘛 ?
是的 ,Elastic APM 采集的信息确实能帮我们定位 80% 以上的问题 ,但是它不是所有的语言都支持的比如 :C 。
其二 、它无法帮你采集你想要的非 Error 日志和所谓的关键日志 ,比如 :某个接口调用时出了错,你想看出错时间点的前后日志;还有打印业务相关方便做分析的日志。
其三、自定义的业务异常 ,该异常属于非系统异常,属于业务范畴,APM 会把这类异常当成系统异常上报。
如果你后面对系统异常做告警 ,那这些异常将会干扰告警的准确度,你也不能去过滤业务异常 ,因为自定义的业务异常种类也不少 。
③同时我们对 Agent 进行了二开 。采集更详细的 GC、堆栈、内存 、线程信息。
④服务器采集我们采用普罗米修斯。
⑤由于我们是 Saas 服务化,服务 N 多 ,很多的服务日志做不到统一规范化 ,这也跟历史遗留问题有关 ,一个与业务系统无关的系统去间接或直接地去对接已有的业务系统 ,为了适配自己而让其更改代码,那是推不动的。
牛逼的设计是让自己去兼容别人 ,把对方当成攻击自己的对象 。很多日志是没有意义的,比如 :开发过程中为了方便排查跟踪问题 ,在 if else 里打印只是有标志性的日志 ,代表是走了 if 代码块还是 else 代码块。
甚至有些服务还打印着 Debug 级别的日志 。在成本 、资源的有限条件下,所有所有的日志是不现实的,即使资源允许 ,一年下来将是一比很大的开销。
所以我们采用了过滤 、清洗 、动态调整日志优先级采集等方案 。首先把日志全量采集到 Kafka 集群中 ,设定一个很短的有效期。
我们目前设置的是一个小时 ,一个小时的数据量 ,我们的资源暂时还能接受 。
⑥Log Streams 是我们的日志过滤、清洗的流处理服务。为什么还要 ETL 过滤器呢?
因为我们的日志服务资源有限,但不对啊 ,原来的日志分散在各各服务的本地存储介质上也是需要资源的哈。
现在我们也只是汇集而已哈,收集上来后,原来在各服务上的资源就可以释放掉日志占用的部分资源了呀 。
没错,这样算确实是把原来在各服务上的资源化分到了日志服务资源上来而已 ,并没有增加资源 。
不过这只是理论上的,在线上的服务 ,资源扩大容易,收缩就没那么容易了,实施起来极其困难 。
所以短时间内是不可能在各服务上使用的日志资源化分到日志服务上来的 。这样的话 ,日志服务的资源就是当前所有服务日志使用资源的量。
随存储的时间越长,资源消耗越大。如果解决一个非业务或非解决不可的问题 ,在短时间内需要投入的成本大于解决当前问题所带来收益的话,我想,在资金有限的情况下 ,没有哪个领导、公司愿意采纳的方案。
所以从成本上考虑,我们在 Log Streams 服务引入了过滤器,过滤没有价值的日志数据,从而减少了日志服务使用的资源成本 。
技术我们采用 Kafka Streams 作为 ETL 流处理 。通过界面化配置实现动态过滤清洗的规则。
大概规则如下:
界面化配置日志采集。默认 Error 级别的日志全量采集。以错误时间点为中心,在流处理中开窗 ,辐射上下可配的 N 时间点采集非 Error 级别日志,默认只采 info 级别 。每个服务可配 100 个关键日志,默认关键日志全量采集。在慢 SQL 的基础上,按业务分类配置不同的耗时再次过滤。按业务需求实时统计业务 SQL ,比如:高峰期阶段,统计一小时内同类业务 SQL 的查询频率 。可为 DBA 提供优化数据库的依据 ,如按查询的 SQL 创建索引 。高峰时段按业务类型的权重指标、日志等级指标、每个服务在一个时段内日志最大限制量指标 、时间段指标等动态清洗过滤日志 。根据不同的时间段动态收缩时间窗口。关注公号:码猿技术专栏 ,回复关键词:1111 获取阿里内部的Java性能调优手册日志索引生成规则 :按服务生成的日志文件规则生成对应的 index,比如:某个服务日志分为:debug、info 、error、xx_keyword ,那么生成的索引也是 debug、info、error、xx_keyword 加日期作后缀 。这样做的目的是为研发以原习惯性地去使用日志 。⑦可视化界面我们主要使用 Grafana,它支持的众多数据源中,其中就有普罗米修斯和 Elasticsearch ,与普罗米修斯可谓是无缝对接。而 Kibana 我们主要用于 APM 的可视分析 。
日志可视化我们的日志可视化如下图 :






Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“信息技术视野”。http://www.bziz.cn/news/730e899261.html
相关文章
ChromeLoader 正在通过破解游戏进行传播
人工智能因为微软默认禁用了互联网下载文件的宏代码,攻击者在恶意软件分发中开始越来越多地使用磁盘镜像文件如 ISO 和 VHD)。近期,研究人员发现攻击者在利用 VHD 文件分发 ChromeLoader。从文 ...
【人工智能】
阅读更多以诺米3手机(探索未来科技,解读先锋创新)
人工智能作为一款旗舰级智能手机,以诺米3凭借其卓越的性能和创新的设计,成为了消费者心目中的热门选择。本文将围绕以诺米3手机展开,分析其各个方面的特点和优势,并展望其在智能手机市场的未来发展。标题和1.引领科技 ...
【人工智能】
阅读更多Android手机游戏跑分出炉
人工智能随着2014年接近尾声,各种年度榜单也纷纷揭晓。最近,多系统图形测试平台Futuremark就发布了Android设备游戏性能Top 100,让我们来看看究竟谁才是Android游戏性能之王吧!榜单中 ...
【人工智能】
阅读更多
热门文章
最新文章
友情链接
- Excel表格中将竖列数据求和的方法教程
- 昂达B75手机的功能和性能介绍(一款全面的智能手机,让你爱不释手)
- 文件管理删除的文件恢复技巧(如何恢复误删文件及保护个人数据安全)
- 小米5标配版(一款实惠且性能出众的智能手机)
- 手机回收站删除照片恢复妙招(一键找回已删除的手机照片,让珍贵回忆不再消失)
- 了解120gPro(性能出众、拍照优秀、续航强大,让你畅快体验智能科技的魅力)
- 比较820和X10处理器(探索两款处理器的性能和特点,为你的智能设备做出明智选择)
- Excel表格按月份排序的方法
- 使用ISOU盘启动盘的完整教程(简单实用的ISOU盘制作与使用方法) 云服务器b2b信息平台源码库企业服务器网站建设香港物理机亿华云