2.8 日志服务 CLS 介绍¶
课程简介¶
日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式云原生观测、日志和指标数据解决方案。它解决了传统日志运维中扩缩容复杂、检索慢、成本高等痛点。本课程将系统讲解 CLS 的核心概念、架构原理、数据加工流程以及采集客户端 LogListener 的工作机制,帮助您快速构建高效的日志监控与分析平台。
学习目标¶
通过本课程的学习,您将能够:
- ✓ 理解 CLS 核心概念:掌握日志集、日志主题、分区(Shard)、机器组等关键术语。
- ✓ 掌握 LogListener 原理:理解日志采集客户端的工作机制及断点续传能力。
- ✓ 熟悉数据处理流程:了解从采集、存储、加工(ETL)到投递的完整链路。
- ✓ 应用最佳实践:学会利用 CLS 进行故障定位、业务分析及合规审计。
第一部分:日志服务 CLS 概述¶
本部分导读
为什么需要专门的日志服务?本节将介绍 CLS 的定义及其相对于自建日志系统(如 ELK)的优势。
一、CLS 产品定义¶
日志服务(Cloud Log Service,CLS)提供一站式的日志数据解决方案。用户无需关注底层资源的扩缩容,仅需 5 分钟即可快速接入。
核心功能全景: - 采集:支持日志(Log)和指标(Metric)的统一采集。 - 存储:高可靠的分布式存储。 - 加工:提供日志 ETL(清洗、脱敏、富化)能力。 - 检索分析:支持 SQL 语法进行实时查询与分析。 - 消费投递:支持投递到 COS、CKafka 等下游系统。 - 监控告警:基于日志数据生成仪表盘并触发告警。
核心价值: 全面提升问题定位和指标监控的效率,大幅降低企业上云的运维门槛。
二、CLS 核心概念 (Key Concepts)¶
在使用 CLS 之前,必须理清以下层级关系和概念:
2.1 基础数据对象¶
- 日志 (Log):
- 应用运行过程中产生的记录(如用户操作、接口访问、系统错误)。
- 形式:文本数据。分为单行文本(一条记录一行)和多行文本(如 Java 异常堆栈)。
- 上传方式:LogListener 客户端、API、SDK。
- 指标 (Metric):
- 衡量系统性能的度量值(如 CPU 利用率、吞吐量、响应耗时)。
- 特点:时间序列 (Time Series) 数据,随时间变化形成序列值。
2.2 资源管理对象¶
- 日志集 (Logset):
- 项目管理单元。
- 作用:本身不存储数据,仅用于对日志主题进行分类管理(逻辑分组)。
- 日志主题 (Log Topic):
- 基本管理单元。
- 作用:配置采集规则、索引规则、保存时间、投递配置等均以此为单位。
- 指标主题 (Metric Topic):
- 专门用于管理指标数据的主题单元。
- 主题分区 (Shard):
- 最小读写单元。
- 作用:决定了单个日志主题的并发吞吐能力。一个主题可以包含多个分区,支持动态分裂和合并。
- 机器组 (Machine Group):
- 需要采集日志的服务器集合。
- 作用:CLS 通过机器组将采集配置下发给组内的 LogListener。
第二部分:CLS 架构与工作原理¶
本部分导读
了解 CLS 是如何处理海量日志数据的,以及核心组件 LogListener 是如何保证数据不丢失的。
一、CLS 整体架构¶
CLS 采用高可扩展的分布式存储架构和多副本机制,确保数据的高可用与高可靠。
graph LR
Source[数据源<br>CVM/容器/函数] -->|LogListener/API| Collection[采集接入层]
Collection --> Queue[缓冲队列]
Queue --> ETL[数据加工 ETL]
ETL --> Storage[分布式存储层<br>(多副本)]
Storage --> Search[检索分析<br>(SQL/仪表盘)]
Storage --> Ship[投递服务]
Ship --> COS[对象存储 COS<br>(归档/审计)]
Ship --> CKafka[消息队列 CKafka<br>(实时消费)]
- 采集生态:支持云服务器(CVM)、容器服务(TKE)、云函数(SCF)等多种环境。
- 数据加工:内置 ETL 工具,支持过滤、清洗、脱敏(如隐藏手机号)、分发。
- 消费投递:
- 归档:投递至 COS,满足合规审计和长期存储需求。
- 实时计算:投递至 CKafka,对接 Flink/Spark 等大数据引擎。
二、采集客户端 LogListener 原理¶
LogListener 是腾讯云自研的高性能日志采集客户端(Agent)。
2.1 监听机制¶
LogListener 利用 Linux 系统内核的 inotify 机制对指定日志文件进行监听。 - 当文件发生变动(Write 事件)时,主动触发采集。
2.2 数据处理流程¶
- 读取 (Read):根据配置模式读取文件。
- 首行读取 (Head):从文件开头读取(适用于采集历史文件)。
- 末尾读取 (Tail):仅读取新增内容(增量采集,默认模式)。
- 处理 (Process):
- 分行:处理多行日志(如堆栈合并)。
- 过滤:根据黑白名单过滤不需要的日志。
- 解析:支持全文、JSON、正则、分隔符等结构化解析。
- 发送 (Send):将数据打包、压缩后发送至 CLS 服务端。
2.3 断点续传 (Checkpoint)¶
LogListener 会实时记录当前采集的文件位置(Checkpoint)。 - 优势:即使系统重启或进程崩溃,重启后也能从上次记录的位置继续采集,保证数据连续性,不重不漏。
第三部分:应用场景与最佳实践¶
本部分导读
CLS 不仅仅是用来查报错的,它在业务分析和合规层面同样价值巨大。
一、快速故障定位¶
- 关键词检索:支持
AND、OR、NOT等丰富的布尔查询语法。 - 上下文查询:在查到报错日志后,可一键查看该条日志前后 N 行的记录,还原案发现场。
- 模糊/范围查询:支持通配符和数值范围查询(如
latency > 1000)。
二、业务数据分析¶
- 实时仪表盘:将日志中的业务字段(如订单金额、用户地域)提取出来,生成可视化的图表。
- 大数据建模:结合 EMR(Elastic MapReduce),对海量日志进行深度建模和商业决策分析。
三、合规与审计¶
- 场景:金融、政企等行业有严格的日志留存要求(如等保要求日志留存 6 个月以上)。
- 方案:利用 CLS 的投递功能,将日志自动转存至对象存储 COS 的归档存储桶中,实现低成本、长周期的合规存储。
课程总结¶
知识点回顾¶
- 基本单元:日志主题 (Topic) 是管理单元,分区 (Shard) 是读写性能单元。
- 采集原理:LogListener 基于 inotify 监听,支持断点续传,确保数据完整性。
- ETL 能力:CLS 内置了提取、转换、加载能力,可视为日志领域的 ETL 工具。
- 生态集成:向上对接 EMR/仪表盘分析,向下投递 COS/CKafka 存储与流转。
随堂小测¶
问题:请问以下哪一项是日志服务 CLS 的最小读写单元? - A. 机器组 - B. 日志主题 - C. 指标主题 - D. 主题分区
答案:D (主题分区)。
解析:日志主题是管理单元,而分区(Shard)决定了数据流的并发读写能力,是吞吐量的最小单位。
本章课程到此结束。下一章,我们将进入数据库领域,讲解 2.9 云数据库及最佳实践。感谢大家的观看!