腾讯云容器服务 TKE 注册集群 - 日志采集
文档简介:
本文主要介绍如何通过控制台的方式将注册集群的日志接入到 腾讯云日志服务 CLS。
操作场景:
日志采集功能是容器服务 TKE 为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至 腾讯云日志服务 CLS。日志采集功能适用于需要对 Kubernetes 集群内服务日志进行存储和分析的用户。
本文主要介绍如何通过控制台的方式将注册集群的日志接入到 腾讯云日志服务 CLS。
操作场景
日志采集功能是容器服务 TKE 为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至 腾讯云日志服务 CLS。日志采集功能适用于需要对 Kubernetes 集群内服务日志进行存储和分析的用户。
日志采集功能需要为每个集群手动开启并配置采集规则。日志采集功能开启后,日志采集 Agent 会在集群内以 DaemonSet 的形式运行,并根据用户通过日志采集规则配置的采集源、CLS 日志主题和日志解析方式,从采集源进行日志采集,将日志内容发送到日志消费端。
使用须知
已经 创建注册集群,且注册集群的状态为运行中。
目前注册集群的日志仅支持投递至 腾讯云日志服务 CLS,暂不支持其他日志消费端。
请在开启前保证集群节点上有足够资源。开启日志采集功能会占用您集群的部分资源。
占用 CPU 资源:0.11 - 1.1 核,日志量过大时可根据情况自行调大。
占用内存资源:24 - 560MB,日志量过大时可根据情况自行调大。
日志长度限制:单条 512K,如超过会截断。
若使用日志采集功能,请确认 Kubernetes 集群内节点能够访问日志消费端。TKE 提供公网和内网两种方式进行日志投递,用户可以根据业务情况自行选择:
公网投递:集群日志将通过公网的方式进行投递至日志服务 CLS ,需要集群中的节点具有访问公网的能力。
内网投递:集群日志将通过内网的方式进行投递至日志服务 CLS ,需要集群内的节点与腾讯云日志服务 CLS 内网互通。选择该选项前,请 联系我们 进行确认。
概念
日志采集 Agent:TKE 用于采集日志信息的 Agent,采用 Loglistener,在集群内以 DaemonSet 的方式运行。
日志规则:用户可以使用日志规则指定日志的采集源、日志主题、日志解析方式和配置过滤器。
日志采集 Agent 会监测日志采集规则的变化,变化的规则会在最多 10s 内生效。
多条日志采集规则不会创建多个 DaemonSet,但过多的日志采集规则会使得日志采集 Agent 占用的资源增加。
日志源:包含指定容器标准输出、容器内文件以及节点文件。
在采集容器标准输出日志时,用户可选择所有容器、或指定工作负载和指定 Pod Labels 内的容器服务日志作为日志的采集源。
在采集容器文件路径日志时,用户可指定工作负载或 Pod Labels 内容器的文件路径日志作为采集源。
在采集节点文件路径日志时,用户可设定日志的采集源为节点文件路径日志。
消费端:用户选择日志服务 CLS 的日志集和日志主题作为消费端。
提取模式:日志采集 Agent 支持将采集到的日志以单行文本、JSON、分隔符、多行文本和完全正则的形式发送至用户指定的日志主题。
过滤器:开启过滤器后可以根据用户指定的规则采集部分日志,key 支持完全匹配,过滤规则支持正则匹配,如仅采集 ErrorCode = 404 的日志。
操作步骤
开启日志采集
1. 登录 容器服务控制台,选择左侧导航栏中的运维功能管理。
2. 在功能管理页面上方选择地域和注册集群,单击需要开启日志采集的集群右侧的设置。如下图所示:


3. 在“设置功能”页面,单击日志采集编辑,开启日志采集,选择投递方式后单击确定。如下图所示:


配置日志规则
1. 登录 容器服务控制台,选择左侧导航栏中的日志管理 > 日志规则。
2. 在功能管理页面上方选择地域和注册集群,筛选需要配置日志采集规则的集群,单击新建。如下图所示:


3. 在新建日志采集规则页面,选择采集类型,并配置日志源。目前采集类型支持容器标准输出、容器文件路径和节点文件路径。
选择容器标准输出采集类型,并根据需求配置日志源。该类型日志源支持一次选择多个 Namespace 的工作负载。如下图所示:


选择容器文件路径采集类型,并配置日志源。如下图所示:

采集文件路径支持文件路径和通配规则,例如当容器文件路径为 /opt/logs/*.log,可以指定采集路径为 /opt/logs,文件名为 *.log。

注意:
如果选择采集类型为“容器文件路径”时,对应的“容器文件路径”不能为软链接,否则会导致软链接的实际路径在采集器的容器内不存在,采集日志失败。
选择节点文件路径采集类型,用户可根据实际需求进行添加自定义的 “metadata” ,将采集到的日志信息附加指定 Key-Value 形式的 “metadata”,附加 metadata 将会添加到日志记录中。如下图所示:
注意
一个节点日志文件只能被一个日志主题采集。

说明:
对于容器的标准输出及容器内文件(非 hostPath 挂载),除了原始的日志内容, 还会带上容器或 kubernetes 相关的元数据(例如:产生日志的容器 ID)一起上报到 CLS,方便用户查看日志时追溯来源或根据容器标识、特征(例如:容器名、labels)进行检索。
容器或 kubernetes 相关的元数据请参考下方表格:
字段名
|
含义
|
container_id
|
日志所属的容器 ID。
|
container_name
|
日志所属的容器名称。
|
image_name
|
日志所属容器的镜像名称 IP。
|
namespace
|
日志所属 pod 的 namespace。
|
pod_uid
|
日志所属 pod 的 UID。
|
pod_name
|
日志所属 pod 的名字。
|
pod_label_{label name}
|
日志所属 pod 的 label(例如一个 pod 带有两个 label:app=nginx,env=prod,则在上传的日志会附带两个 metadata:pod_label_app:nginx,pod_label_env:prod)。
|
4. 配置日志服务消费端,选择日志集和相应的日志主题,可以选择新建和已有日志主题。如下图所示:


注意
腾讯云日志服务 CLS 目前只能支持同地域的容器集群进行日志采集上报。
若日志集下已存在 500 个日志主题,则不能新建日志主题。
5. 支持在高级设置内通过指定 Key 值将日志投递到指定分区,该功能默认不开启,日志随机投放,当开启后,带有同样 Key 值的日志,将投递到相同的分区。支持输入 TimestampKey(默认@timestamp)和指定时间戳格式。如下图所示:


6. 单击下一步,选择日志提取模式。如下图所示:
注意
当前仅投递到 CLS 支持配置日志解析方式。

解析模式
|
说明
|
相关文档
|
单行全文
|
一条日志仅包含一行的内容,以换行符 \n 作为一条日志的结束标记,每条日志将被解析为键值为 CONTENT 的一行完全字符串,开启索引后可通过全文检索搜索日志内容。日志时间以采集时间为准。
|
单行全文格式
|
多行全文
|
指一条完整的日志跨占多行,采用首行正则的方式进行匹配,当某行日志匹配上预先设置的正则表达式,就认为是一条日志的开头,而下一个行首出现作为该条日志的结束标识符,也会设置一个默认的键值 CONTENT,日志时间以采集时间为准。支持自动生成正则表达式。
|
多行全文格式
|
单行 - 完全正则
|
指将一条完整日志按正则方式提取多个 key-value 的日志解析模式,您需先输入日志样例,其次输入自定义正则表达式,系统将根据正则表达式里的捕获组提取对应的 key-value。支持自动生成正则表达式。
|
单行 - 完全正则格式
|
多行 - 完全正则
|
适用于日志文本中一条完整的日志数据跨占多行(例如 Java 程序日志),可按正则表达式提取为多个 key-value 键值的日志解析模式,您需先输入日志样例,其次输入自定义正则表达式,系统将根据正则表达式里的捕获组提取对应的 key-value。支持自动生成正则表达式。
|
多行-完全正则格式
|
JSON
|
JSON 格式日志会自动提取首层的 key 作为对应字段名,首层的 value 作为对应的字段值,以该方式将整条日志进行结构化处理,每条完整的日志以换行符 \n 为结束标识符。
|
JSON 格式
|
分隔符
|
指一条日志数据可以根据指定的分隔符将整条日志进行结构化处理,每条完整的日志以换行符 \n 为结束标识符。日志服务在进行分隔符格式日志处理时,您需要为每个分开的字段定义唯一的 key,无效字段即无需采集的字段可填空,不支持所有字段均为空。
|
分隔符格式
|
7. 根据需求开启过滤器并配置规则,并单击完成,完成创建。如下图所示:


更新日志规则
1. 登录 容器服务控制台,选择左侧导航栏中的日志管理 > 日志规则。
2. 在日志采集页面上方选择地域和注册集群,筛选需要更新日志采集规则的集群,单击右侧的编辑收集规则。如下图所示:


3. 根据需求更新相应配置,单击完成,完成更新。
注意
日志集和日志主题不可更新。
相关文档
通过 YAML 使用 CRD 配置日志采集