
原始日志往往杂乱无章,只有经过加工处理才能发挥最大价值。本文系统介绍腾讯云 CLS 数据加工的六大核心能力——过滤、清洗、脱敏、富化、分发、结构化,并结合实际场景说明如何在 CLS 控制台中构建高效的日志处理流水线。
在企业日常运营中,日志数据的来源极其多样。Web 服务器产生访问日志,应用代码输出运行日志,操作系统记录系统事件,安全设备生成审计日志。这些日志在格式、结构、内容密度上差异巨大——有的采用标准的 JSON 格式,字段清晰;有的是非结构化的纯文本,需要人工解读;还有的混杂了调试信息、重复记录和无关噪声。
如果直接将这类原始日志存入 CLS 存储系统,会带来几个现实问题。首先是检索效率低下——没有结构化的字段,每次查询都只能做全文扫描,速度慢且成本高。其次是敏感信息泄露风险——日志中可能包含用户手机号、身份证号、IP 地址等隐私数据,如果不加处理直接存储和展示,存在合规隐患。此外,大量无价值的日志占用了宝贵的存储空间,增加了不必要的成本。
腾讯云 CLS(Cloud Log Service)作为一体化可观测 SaaS 服务,提供了完整的数据加工能力,涵盖过滤、清洗、脱敏、富化、分发、结构化六大操作类型。CLS 的数据加工功能支持流式实时处理,日志数据在写入过程中即可完成全部加工步骤,加工结果实时可用。用户可以在 CLS 控制台通过可视化界面配置加工规则,无需编写代码或部署额外的处理程序。
并非所有产生的日志都具有同等的分析价值。开发阶段的大量调试日志在生产环境中通常没有意义,频繁的健康检查日志对核心业务分析帮助有限,某些异常重试日志可能只是瞬时网络波动的产物。将这些低价值日志保留在 CLS 系统中,不仅浪费了存储和索引资源,还会干扰关键信息的快速定位。
过滤的本质是根据预设规则筛选出有价值的日志,丢弃不需要的部分。在 CLS 中,这个操作可以在数据采集阶段就完成——LogListener 采集客户端支持配置过滤规则,只将符合条件的日志发送到 CLS 后端,避免无效数据占用传输带宽和存储空间。
基于日志级别的过滤是最常用的方式。在 CLS 采集配置中,可以通过正则表达式匹配日志级别字段,只保留 WARNING 及以上级别的日志,过滤掉 DEBUG 和部分 INFO 级别的日志。对于按时间段的差异化需求,也可以配合 CLS 的数据加工规则设置不同时间段采用不同的过滤策略。
基于内容的过滤则更加灵活。CLS 支持通过关键词匹配、正则表达式等方式识别并丢弃特定类型的日志。例如,可以配置加工规则过滤掉所有包含 "health check" 的健康检查日志,或者丢弃状态码为 200 的成功请求日志(如果这些日志对分析没有帮助的话)。
减少进入 CLS 存储系统的日志量可以直接降低多个计费项的费用。写入流量减少意味着写入费用下降,需要建立索引的数据量减少降低了索引流量和索引存储费用,原始日志存储量也随之降低。对于日志量较大的企业来说,合理的过滤策略可以带来显著的成本节约。CLS 数据加工功能本身按处理数据量计费,单价透明,通常过滤节省的费用远高于加工本身的成本。
清洗和过滤虽然都是 CLS 数据加工的手段,但目标不同。过滤是"取舍"——决定哪些日志保留、哪些丢弃。清洗则是"修正"——对保留下来的日志进行标准化处理,修复格式问题、统一字段命名、纠正编码异常等。
字段标准化是清洗的基础工作。不同的服务可能使用不同的字段名来表示相同的含义——比如有的服务用 client_ip,有的用 remote_addr,实际上都指客户端 IP 地址。通过 CLS 数据加工规则中的字段重命名功能,可以将这些字段统一映射到标准名称,后续的关联分析和聚合统计才能正确执行。
编码纠正是另一个常见需求。在多语言、多地域的环境中,日志可能采用不同的字符编码。CLS 数据加工支持将不同编码的日志统一转换为 UTF-8 等标准编码,避免出现乱码影响检索和分析。
空值处理也很重要。某些字段在特定条件下可能缺失或为空,CLS 数据加工可以通过条件判断函数填充默认值或标记特殊标识,避免在后续 SQL 分析中出现意外情况。
日志中常常包含各种敏感信息。用户的手机号码、身份证号码、银行卡号、邮箱地址等个人身份信息,如果未经处理就存储在 CLS 日志系统中,一旦日志被未授权的人员访问,就会造成隐私泄露。《个人信息保护法》《网络安全法》等法律法规都对个人信息的保护提出了明确要求,企业有义务采取技术措施防止敏感信息泄露。
CLS 数据加工支持在日志写入存储之前就完成脱敏处理。常见的脱敏方式包括掩码替换、哈希加密、截断保留等。例如,手机号可以保留前三位和后四位,中间用星号替代;身份证号可以进行哈希处理后存储;信用卡号可以只保留最后四位。这些脱敏操作通过 CLS 控制台可视化配置,无需编写代码。
脱敏操作在日志进入 CLS 存储之前完成,这样即使日志系统本身被访问,敏感信息也已经不可还原。这比在展示层做脱敏要安全得多,因为后者只是"眼不见为净",数据本身仍然是明文存储的。
不同企业对敏感信息的定义和处理要求可能不同。建议建立统一的脱敏策略规范,明确哪些字段需要脱敏、采用什么脱敏方式、谁有权查看原始数据等问题。在 CLS 中,可以通过数据加工规则来固化这些策略,确保所有进入系统的日志都经过一致的脱敏处理。加工规则的修改需要相应权限,可以通过 CAM 权限管理限制操作人员范围。
富化是指在原始日志的基础上添加额外的上下文信息,使其包含更多可用于分析的维度。这些信息可能来自外部数据源、环境元数据、地理位置数据库等多种渠道。CLS 数据加工支持在日志流中自动附加富化信息,无需修改应用代码。
地理信息富化是最典型的应用之一。原始日志中的 IP 地址只是一个数字串,通过 CLS 数据加工集成的 GeoIP 能力,可以将其转换为国家、省份、城市等可读的地理位置信息。这对于分析用户分布、识别异常地域访问等场景非常有用。
环境元数据富化在容器化环境中尤为重要。当日志来自 Kubernetes 集群时,CLS 的 LogListener 采集器可以自动附加 Pod 名称、Namespace、Deployment、节点信息等容器元数据。这些信息让运维人员可以快速定位日志所属的具体服务和实例,大幅提升排查效率。
业务上下文富化则是将日志与企业的业务数据关联起来。通过 CLS 数据加工的字段拼接和计算功能,可以从日志中提取用户 ID、订单 ID 等关键字段,并与外部业务系统进行关联。这种富化可以让日志分析直接服务于业务决策,而不仅仅是技术排障。
在实际生产中,同一份日志数据可能需要同时满足多个下游系统的需求。运维团队需要将错误日志发送到告警平台,数据分析团队需要将全量日志导入数据仓库,安全团队需要将审计日志归档到长期存储。CLS 的分发功能允许根据规则将日志路由到不同的目的地,无需为每个下游系统单独搭建采集管道。
CLS 支持根据日志中某个字段的值动态创建日志主题并将相关日志分发到对应主题中。这种动态分发能力特别适合多租户或多业务的场景——不同业务线的日志自动进入各自的日志主题,实现天然的数据隔离和管理便利。例如,可以根据日志中的 tenant_id 字段将多租户 SaaS 平台的日志自动分发到不同的日志主题中。
除了内部的分发路由,CLS 还支持将日志投递到外部系统。投递到 COS 对象存储适合长期归档场景,成本低廉且持久可靠;投递到 Ckafka 适合实时消费场景,下游的流计算引擎可以直接消费日志数据进行实时分析;投递到 DLC 数据湖可以进行大数据分析;支持投递到 Splunk(HEC 协议)等第三方平台。消费到流计算平台则可以实现更复杂的事件处理和模式识别。
原始日志大多是非结构化的文本,计算机难以直接理解其语义。结构化就是将文本日志解析为具有明确字段和类型的结构化数据,类似于将一篇散文整理成一张表格。一旦日志被 CLS 结构化,就可以利用键值索引加速查询,使用 SQL 进行复杂的聚合分析,生成可视化的统计图表。
CLS 的采集客户端 LogListener 支持多种结构化解析方式。分隔符解析适用于以固定分隔符(如空格、逗号、制表符)分隔字段的日志;JSON 解析可以直接提取 JSON 格式日志中的各个字段;正则解析则提供了最大的灵活性,可以应对各种自定义格式的日志。
对于已经上线的系统,如果日志格式不规范,可以在 CLS 数据加工阶段使用 ext_grok 等函数进行结构化提取。Grok 是一种强大的模式匹配工具,可以通过组合预定义的模式来解析复杂的日志格式。
结构化是将日志从"能看"提升到"能用"的关键一步。结构化之后,用户可以按照任意字段进行精确过滤和分组统计,可以轻松计算错误率、响应时间百分位数等业务指标,可以将分析结果保存为 CLS 仪表盘实现持续监控。没有结构化,这些高级分析能力都无从谈起。CLS 兼容 SQL 92 标准,内置 200+ SQL 函数,结构化后的日志可以充分发挥这些分析能力。
在实际应用中,上述六种加工能力通常是组合使用的。一条典型的 CLS 日志加工流水线可能是这样的:首先过滤掉无价值的调试日志,然后清洗格式并标准化字段,接着对敏感信息进行脱敏处理,再富化上地理位置和业务上下文信息,最后根据业务类型分发到不同的日志主题并进行结构化。
CLS 的数据加工功能支持流式实时处理,日志数据在写入过程中即可完成全部加工步骤,加工结果实时可用于检索和分析。用户可以在 CLS 控制台通过可视化界面配置加工规则,支持预览加工效果后再正式应用。加工规则的修改会立即生效,无需重启采集器或重新部署。
对于用量较大的场景,CLS 数据加工按实际处理的数据量计费,单价透明可预期。通过购买预付费资源包可以获得更优惠的价格,新老用户常规档位最低可享 6.3 折优惠,新用户首单特惠更低至 0.8 折起。如需了解更多详情或领取优惠,可访问 腾讯云 CLS 产品页 及 特惠活动页。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。