智能家居科技|如何用ELK搭建TB级的日志监控系统?
本文主要介绍怎么使用ELKStack帮助我们打造一个支撑起日产TB级的日志监控系统 。

文章图片
图片来自Pexels
在企业级的微服务环境中 , 跑着成百上千个服务都算是比较小的规模了 。 在生产环境上 , 日志扮演着很重要的角色 , 排查异常需要日志 , 性能优化需要日志 , 业务排查需要业务等等 。
然而在生产上跑着成百上千个服务 , 每个服务都只会简单的本地化存储 , 当需要日志协助排查问题时 , 很难找到日志所在的节点 。 也很难挖掘业务日志的数据价值 。
那么将日志统一输出到一个地方集中管理 , 然后将日志处理化 , 把结果输出成运维、研发可用的数据是解决日志管理、协助运维的可行方案 , 也是企业迫切解决日志的需求 。
我们的解决方案

文章图片
通过上面的需求我们推出了日志监控系统 , 如上图:
日志统一收集、过滤清洗 。
生成可视化界面、监控 , 告警 , 日志搜索 。

文章图片
功能流程概览如上图:
在每个服务节点上埋点 , 实时采集相关日志 。
统一日志收集服务、过滤、清洗日志后生成可视化界面、告警功能 。
我们的架构

文章图片
①日志文件采集端我们使用FileBeat , 运维通过我们的后台管理界面化配置 , 每个机器对应一个FileBeat , 每个FileBeat日志对应的Topic可以是一对一、多对一 , 根据日常的日志量配置不同的策略 。
除了采集业务服务日志外 , 我们还收集了MySQL的慢查询日志和错误日志 , 还有别的第三方服务日志 , 如:Nginx等 。
最后结合我们的自动化发布平台 , 自动发布并启动每一个FileBeat进程 。
②调用栈、链路、进程监控指标我们使用的代理方式:ElasticAPM , 这样对于业务侧的程序无需任何改动 。
对于已经在运营中的业务系统来说 , 为了加入监控而需要改动代码 , 那是不可取的 , 也是无法接受的 。
ElasticAPM可以帮我们收集HTTP接口的调用链路、内部方法调用栈、使用的SQL、进程的CPU、内存使用指标等 。
可能有人会有疑问 , 用了ElasticAPM , 其它日志基本都可以不用采集了 。 还要用FileBeat干嘛?
是的 , ElasticAPM采集的信息确实能帮我们定位80%以上的问题 , 但是它不是所有的语言都支持的比如:C 。
其二、它无法帮你采集你想要的非Error日志和所谓的关键日志 , 比如:某个接口调用时出了错 , 你想看出错时间点的前后日志;还有打印业务相关方便做分析的日志 。
其三、自定义的业务异常 , 该异常属于非系统异常 , 属于业务范畴 , APM会把这类异常当成系统异常上报 。
如果你后面对系统异常做告警 , 那这些异常将会干扰告警的准确度 , 你也不能去过滤业务异常 , 因为自定义的业务异常种类也不少 。
③同时我们对Agent进行了二开 。 采集更详细的GC、堆栈、内存、线程信息 。
④服务器采集我们采用普罗米修斯 。
⑤由于我们是Saas服务化 , 服务N多 , 很多的服务日志做不到统一规范化 , 这也跟历史遗留问题有关 , 一个与业务系统无关的系统去间接或直接地去对接已有的业务系统 , 为了适配自己而让其更改代码 , 那是推不动的 。
牛逼的设计是让自己去兼容别人 , 把对方当成攻击自己的对象 。 很多日志是没有意义的 , 比如:开发过程中为了方便排查跟踪问题 , 在ifelse里打印只是有标志性的日志 , 代表是走了if代码块还是else代码块 。
推荐阅读
- 科技一哥|荣耀30青春版图集赏析:触觉与视觉的完美享受
- 科技犬君|vs 索尼A9G 谁强?,上半年用户喜爱手机盘点;小米电视大师65英寸OLED
- 精选泛科技|结果如何?,一加8续航遭质疑:上半年最全机型横评出炉
- HAO懂科技|小米“神机”要来了?,小米正式“反击”!上下对折+骁龙865
- 阿拉图图科技说|而给华为仅仅是800万枚!,台积电为苹果准备8000万枚芯片
- 网罗说科技|三星note10一夜成“中端机”,还是256GB+3500mAh,三星扛不住了
- 科技数码迷|华为+荣耀别不报!入门级机型你们真没有Redmi良心
- 「小米科技」小米11Pro宣布新技术!首发骁龙875+屏下镜头,米粉:价格有点小贵
- 小熊科技|你会考虑吗?,三星顶级旗舰清仓!5G网络+45W快充+2k屏幕
- 简简科技|联想:国内同步上市,支持5G,界读丨摩托罗拉折叠手机Razr2曝光
