作者简介
董涵 百度资深研发工程师
负责百度智能运维(Noah)服务管理和分布式监控架构研发工作,在分布式系统和大规模数据处理、可用性工程方向有广泛的实践经验。
干货概览
对于互联网行业来说,最有价值的数据往往蕴含在服务的日志之中。从日志中,我们不仅仅可以获取到服务的使用量、服务效果、问题定位信息等,还可以通过监控系统及时地识别出服务的”健康”状态,规避风险,推动服务优化升级。
在监控系统中,日志处理就是采集服务运行时生成的原始日志,根据用户配置的解析规则,从中提取可用数据,形成监控指标的过程,这个过程一般由监控系统的日志采集Agent完成。
通用的日志采集Agent一般会提供多种日志解析方法,常用的有分隔符、K:V、正则表达式等。为了适配某些常用的系统或组件(例如:Nginx、Syslog等),有些日志采集Agent还会提供一些预制的日志解析配置,以期达到开箱即用的效果。
百度的业务场景十分复杂,涉及搜索服务、社区服务、金融服务、AI服务等,这些业务的程序所生产的日志格式存在较大差异,如何统一处理这些不同格式的日志成为一个重要的问题。今天,我们会从百度Noah监控平台的角度,讨论如何解决这一问题。
典型日志处理示例
1K:V日志
如上图所示,这是一个典型的K:V形式组成的日志。