跳转至

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 基础数据对象

  1. 日志 (Log)
    • 应用运行过程中产生的记录(如用户操作、接口访问、系统错误)。
    • 形式:文本数据。分为单行文本(一条记录一行)和多行文本(如 Java 异常堆栈)。
    • 上传方式:LogListener 客户端、API、SDK。
  2. 指标 (Metric)
    • 衡量系统性能的度量值(如 CPU 利用率、吞吐量、响应耗时)。
    • 特点:时间序列 (Time Series) 数据,随时间变化形成序列值。

2.2 资源管理对象

  1. 日志集 (Logset)
    • 项目管理单元。
    • 作用:本身不存储数据,仅用于对日志主题进行分类管理(逻辑分组)。
  2. 日志主题 (Log Topic)
    • 基本管理单元
    • 作用:配置采集规则、索引规则、保存时间、投递配置等均以此为单位。
  3. 指标主题 (Metric Topic)
    • 专门用于管理指标数据的主题单元。
  4. 主题分区 (Shard)
    • 最小读写单元
    • 作用:决定了单个日志主题的并发吞吐能力。一个主题可以包含多个分区,支持动态分裂和合并。
  5. 机器组 (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 数据处理流程

  1. 读取 (Read):根据配置模式读取文件。
    • 首行读取 (Head):从文件开头读取(适用于采集历史文件)。
    • 末尾读取 (Tail):仅读取新增内容(增量采集,默认模式)。
  2. 处理 (Process)
    • 分行:处理多行日志(如堆栈合并)。
    • 过滤:根据黑白名单过滤不需要的日志。
    • 解析:支持全文、JSON、正则、分隔符等结构化解析。
  3. 发送 (Send):将数据打包、压缩后发送至 CLS 服务端。

2.3 断点续传 (Checkpoint)

LogListener 会实时记录当前采集的文件位置(Checkpoint)。 - 优势:即使系统重启或进程崩溃,重启后也能从上次记录的位置继续采集,保证数据连续性,不重不漏


第三部分:应用场景与最佳实践

本部分导读
CLS 不仅仅是用来查报错的,它在业务分析和合规层面同样价值巨大。

一、快速故障定位

  • 关键词检索:支持 ANDORNOT 等丰富的布尔查询语法。
  • 上下文查询:在查到报错日志后,可一键查看该条日志前后 N 行的记录,还原案发现场。
  • 模糊/范围查询:支持通配符和数值范围查询(如 latency > 1000)。

二、业务数据分析

  • 实时仪表盘:将日志中的业务字段(如订单金额、用户地域)提取出来,生成可视化的图表。
  • 大数据建模:结合 EMR(Elastic MapReduce),对海量日志进行深度建模和商业决策分析。

三、合规与审计

  • 场景:金融、政企等行业有严格的日志留存要求(如等保要求日志留存 6 个月以上)。
  • 方案:利用 CLS 的投递功能,将日志自动转存至对象存储 COS 的归档存储桶中,实现低成本、长周期的合规存储。

课程总结

知识点回顾

  1. 基本单元日志主题 (Topic) 是管理单元,分区 (Shard) 是读写性能单元。
  2. 采集原理:LogListener 基于 inotify 监听,支持断点续传,确保数据完整性。
  3. ETL 能力:CLS 内置了提取、转换、加载能力,可视为日志领域的 ETL 工具。
  4. 生态集成:向上对接 EMR/仪表盘分析,向下投递 COS/CKafka 存储与流转。

随堂小测

问题:请问以下哪一项是日志服务 CLS 的最小读写单元? - A. 机器组 - B. 日志主题 - C. 指标主题 - D. 主题分区

答案D (主题分区)

解析:日志主题是管理单元,而分区(Shard)决定了数据流的并发读写能力,是吞吐量的最小单位。


本章课程到此结束。下一章,我们将进入数据库领域,讲解 2.9 云数据库及最佳实践。感谢大家的观看!