全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

容器日志管理

最近更新时间:2026-01-29 10:25:41

金山云容器服务(KCE)为用户提供Kubernetes集群内容器日志采集服务,并支持将采集的容器日志数据推送到金山云日志服务KLog,以满足用户收集、存储、分析和呈现业务日志信息的需求,达到提升运维效率和快速定位线上问题的目标。

用户需手动为每个Kubernetes集群启用容器日志采集服务,金山云KCE将以DaemonSet方式在集群中部署容器日志采集客户端,然后基于用户配置的容器日志采集规则,从日志源(容器标准输出日志、容器内文件日志、主机内文件日志)将数据收集并发送到日志消费端KLog进行各类统计和分析。

前提条件

  • 启用容器日志采集服务会占用您集群中的部分资源(默认:CPU=0.1至1核,Memory=100至500MB;可根据需求自行调整)。

  • 请确保集群内各节点可以访问日志消费端KLog。

操作步骤

启用容器日志采集服务

  1. 登录容器服务控制台

  2. 在左侧导航栏中,选择运维管理,进入日志管理V2页面。

  3. 按需选择地域集群,单击申请开通

  4. 在弹出的开通日志收集服务对话框中,单击开通,即完成容器日志采集服务的启用。

配置日志采集规则

  1. 登录容器服务控制台

  2. 在左侧导航栏中,选择运维管理,进入日志管理V2页面。

  3. 按需选择地域集群,单击新建/新建日志采集规则,为已经启用容器日志采集服务的集群配置日志采集规则。

  4. 新建日志采集规则页面中,输入规则名称、选择日志类型、配置日志源和日志消费端、选择是否开启日志多行合并功能。

    • 日志采集规则名称:必须集群内全局唯一,不超过40个字符,只能包含小写字母、数字及分隔符("-"、"_"、"."),且必须以小写字母、数字开头和结尾。

    • 日志类型支持:容器标准输出、容器文件路径、主机文件路径。

      • 容器标准输出类型时,将会采集stdout、stderr日志(可pod所在主机中的/var/log/pods目录下查看):

        • 支持选择所有容器:此集群内所有容器。

        • 支持选择指定负载:按命名空间选择所有/指定工作负载包含的容器。

        • 支持指定 Pod Label:匹配指定 label 的 Pod 的容器。

      • 容器文件路径类型时,将会采集容器中指定的绝对路径的日志:

        • 支持选择集群内单个工作负载下的容器的日志采集路径。

      • 主机文件路径类型时:

        • 支持集群内任意指定节点内的文件日志,并支持用户自定义添加Label(以Key-Value形式),以便后续进行分析归类。

    • 日志源:根据选择的日志类型,进行配置。

    • 日志消费端:支持金山云日志服务KLog:日志项目+日志池

    • 日志多行合并:对于Java异常堆栈、JSON日志通常跨越多行等场景,您可根据自身需求设置可用的合理的匹配规则,日志会根据规则进行合并,达到整合的目的。值得注意的是,若日志与正则表达式匹配失败,会持续追加到上一行合并,可能导致日志合并超长无法实时推送或部分日志丢失。追加合并会受到以下制约;

      • 行数限制(max_line):500行

      • 字节限制(maxbyte):10485760字节

      • 时间限制:默认 5秒 内无新日志产生时,已追加内容会合成一条发送

        达到任一限制会触发日志的截断发送,开启新一轮聚合。 金山云日志服务支持的正则表达式模式与Logstash支持的正则表达式有部分区别。部分写法规则可见下方例子,可支持的正则表达式详细信息可以查看https://pkg.go.dev/regexp/syntax。

        • 量词

        写法

        含义

        *

        0 次或多次

        +

        1 次或多次

        ?

        0 次或 1 次

        {n}

        正好 n 次

        {n,}

        至少 n 次

        {n,m}

        n 到 m 次

        a+  →  a、aaa(a出现1次或多次)
        a{2,5}  →  aa、aaaa(a出现2次到5次)
        • 字符类

        写法

        含义

        .

        任意单个字符(不含换行)

        \d

        数字 [0-9]

        \D

        非数字

        \w

        单词字符[A-Za-z0-9_](只匹配英文字母字符、数字和下划线)

        \W

        非单词字符 [^_A-Za-z0-9]

        \s

        空白符(空格/Tab/换行等)

        \S

        非空白符

        [abc]

        a 或 b 或 c

        [^abc]

        非 a/b/c

        [a-z]

        范围(表示小写字母a到z)

        \w+  →  abc32_gf6(匹配字母、数字或下划线)
        [xyz]  →  匹配单个字符x或y或z, 但不匹配xy、xz、xyz等组合
        • 锚点(Anchors)

        写法

        含义

        ^

        匹配行或者字符串的起始位置

        $

        匹配行或者字符串的结束位置

        \A

        匹配文本的起始位置

        \z

        匹配文本的结束位置

        \b

        匹配单词边界位置

        \B

        匹配非单词边界位置

        示例:

        ^abc$   → 只能是 abc
        \bword\b  →  匹配单独的"word",但不匹配"words"或"sword"
        \Bword\B  →  匹配 "sword1" 中的 "word",但不匹配 "password" 或 "words"
        • 分组与或

        写法

        含义

        (abc)

        捕获分组

        (?P<name>abc)

        命名分组

        (ab)+

        整体重复

        a|b

        a或b,优先匹配a

        示例:

        ^(INFO|WARN|ERROR)  →  匹配以INFO 或 WARN 或 ERROR开头的行
        (?P<year>\d{4})  →  给匹配到的4位数字命名为"year"
        • 转义

        写法

        含义

        \.

        字面点号

        \*

        字面星号

        \+

        字面加号

        \[

        字面 [

        \\

        字面反斜杠

        • 常用posix类

        写法

        含义

        [[:digit:]]

        数字

        [[:alpha:]]

        字母

        [[:alnum:]]

        字母数字

        [[:space:]]

        空白

        [[:lower:]]

        小写

        [[:upper:]]

        大写

        示例:

        ^[[:alnum:]_-]+$  →  匹配由字母、数字、下划线和连字符组成的字符串
      • 多行合并正则表达式示例:

        • 当multiline.pattern配置为^b时,匹配效果如下:

          实际存在六行日志,最终会匹配为bacbde两行发送到klog控制台

        • Java堆栈日志,正常来讲,以下信息在不配置多行合并时,会作为四行日志分别发送到klog日志池,且顺序可能会被其他日志打乱;假如将multiline.pattern配置为^[A-Za-z,表示匹配大写或者小写,后续以空格开头的日志就会被自动合并到最前面一行,向klog发送一条日志。

          合并前

          Exception in thread "main" java.lang.NullPointerException
                  at com.example.myproject.Book.getTitle(Book.java:16)
                  at com.example.myproject.Author.getBookTitles(Author.java:25)
                  at com.example.myproject.Bootstrap.main(Bootstrap.java:14)

          合并后

        • 时间戳,来自 Elasticsearch 等服务的活动日志通常以时间戳开头,后跟有关特定活动的信息,如下例所示,要将这些行合并到 Filebeat 中的单个事件中,需要将multiline.pattern配置为:^\[[0-9]{4}-[0-9]{2}-[0-9]{2},如果不配置合并,每一行都会作为一条数据显示在klog控制台

          合并前

          [2015-08-24 11:49:14,389][INFO ][env                      ] [Letha] using [1] data paths, mounts [[/
          (/dev/disk1)]], net usable_space [34.5gb], net total_space [118.9gb], types [hfs]

          合并后

查看和更新日志采集规则

  1. 登录容器服务控制台

  2. 在左侧导航栏中,选择运维管理,进入日志管理V2页面。

  3. 按需选择地域和集群,可以查看目标集群中已经配置的日志采集规则。

  4. 单击右侧的编辑采集规则,可以进入修改页面,按需求更新日志采集规则

在Klog中查看已采集日志

  1. 登录容器服务控制台

  2. 在左侧导航栏中,选择运维管理,进入日志管理V2页面。

  3. 按需选择地域和集群,可以查看目标集群中已经配置的日志采集规则。

  4. 单击右侧的日志分析,可以进入Klog中当前日志规则的日志池查看日志

日志管理常见问题

请访问:日志管理常见问题

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈