更新时间:2025-07-28 GMT+08:00

自建K8s应用日志接入LTS

自建K8s(kubernetes)是开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。用户将自建K8s集群内服务或集群节点特定路径文件的应用日志上报至LTS后,可以对Kubernetes集群内服务日志进行存储和分析。

您可以按照如下步骤完成接入配置。

步骤1:选择日志流

步骤2:检查依赖项

步骤3:安装日志采集组件

步骤4:选择主机组(可选)

步骤5:采集配置

步骤6:索引配置

步骤7:完成接入配置

若需要采集多个场景的日志,您可以选择批量设置多个接入配置的方式,同时设置多个接入配置。

前提条件

  • 请确保已在Kubernetes集群中执行安装Helm v3的命令。
  • 请确保Kubernetes集群已配置kubectl。
  • 请确保节点的kubelet进程监听10255端口(只读端口,用于获取pod信息)。
  • 已创建日志组和日志流。详细请参考管理日志组管理日志流
  • 日志接入前,需要确认开启ICAgent采集开关,请参考设置LTS日志采集配额和使用量预警
    • 采集开关默认打开,当您不需要采集日志时,可通过关闭采集开关来停止日志采集,以减少资源占用。
    • 日志采集关闭后,ICAgent会停止采集日志,并且在应用运维管理AOM控制台的“日志采集开关”也会同步关闭

步骤1:选择日志流

  1. 登录云日志服务控制台
  2. 在左侧导航栏中,选择“日志接入 > 接入中心”,单击“自建k8s - 应用日志”进行自建K8s接入配置。

    或在左侧导航栏中,选择“日志接入 > 接入管理”,单击“创建”,在弹出的页面中,单击“自建k8s - 应用日志”进行自建K8s接入配置。

  3. 采集方式:采集到集中日志流和采集到自定义日志流,您可以根据实际情况选择采集方式,推荐您使用采集到集中日志流。
    表1 采集方式

    采集方式

    说明

    采集到集中日志流

    • 优点:相同类型的日志在一个日志流中,方便集中搜索。
    • 缺点:

      不同的工作负载的日志结构不一样,采集到一个日志流后无法配置结构化解析,无法使用SQL可视化分析。

      单个日志流的写入速率上限是100MB/S,集中采集对于大流量场景有性能瓶颈。

    采集到自定义日志流

    • 优点:

      不同的工作负载的日志结构不一样,采集到不同日志流后可以配置结构化解析,使用SQL可视化分析。

      多个日志流的写入速率累加起来可以线性扩增,自定义采集对于大流量场景没有性能瓶颈。

    • 缺点:日志流数量较多,管理起来相对繁琐。
    • 若选择“采集到集中日志流”,请执行如下操作步骤:

      集中采集日志到一个固定的日志流。Kubernetes集群默认的采集日志流分别为标准输出/错误stdout-{ClusterID}、节点文件hostfile-{ClusterID}、容器文件containerfile-{ClusterID}、K8S事件: event-{ClusterID}。日志流名称会根据ClusterID自动命名,例如:集群ID为Cluster01,则标准输出/错误日志流为stdout-Cluster01。

      在一个kubernetes集群下可以创建的采集日志流为标准输出/错误stdout-{ClusterID}、节点文件hostfile-{ClusterID}、容器文件containerfile-{ClusterID})和K8s事件event-{ClusterID},如果某个日志组下,已创建某种采集日志流,则不会在其他日志组或当前日志组下再创建该日志流。

      1. 选择采集方式“采集到集中日志流”。
      2. 输入“集群名称”和“集群ID”。
      3. 选择“所属日志组”。

        当无该日志组时,系统会提示:暂无该日志组,后续操作中,系统将会为您自动创建,创建完成后日志会集中采集到该日志组中。

    • 若选择“采集到自定义日志流”,请执行如下操作步骤:
      1. 选择采集方式“采集到自定义日志流”。
      2. 输入“集群名称”和“集群ID”。
      3. 单击“所属日志组”后的目标框,在下拉列表中选择具体的日志组,若没有所需的日志组,单击“所属日志组”目标框后的“新建”,在弹出的创建日志组页面创建新的日志组。
      4. 单击“所属日志流”后的目标框,在下拉列表中选择具体的日志流,若没有所需的日志流,单击“所属日志流”目标框后的“新建”,在弹出的创建日志流页面创建新的日志流。
        图1 采集到自定义日志流
  4. 单击“下一步:检查依赖项”。

步骤2:检查依赖项

  1. 系统自动检查以下三项是否符合要求:
    • 存在自定义标识符为k8s-log-集群ID的主机组。
    • 存在名为k8s-log-集群ID的日志组。支持修改日志组的日志存储时间和备注。当选择日志流为采集到集中日志流时,会进行该项内容检查。
    • 存在系统推荐的集中采集的日志流。支持修改日志流的日志存储时间和备注。当选择日志流为采集到集中日志流时,会进行该项内容检查。
    如果以上三项中,有任意一项不符合要求,需单击“自动修复”按钮进行修复,否则将无法进行下一步操作。
    • 自动修复:一键帮您完成以上三项配置。
    • 重新检查:重新检查依赖项。
  2. 单击“下一步:安装日志采集组件”。

步骤3:安装日志采集组件

在Kubernetes集群中,选择任意一台主机,按照LTS页面的提示执行如下操作步骤:

图2 安装日志采集组件
  1. 在LTS的安装日志采集组件页面,获取ICAgent安装包。
  2. 解压ICAgent安装包。
  3. 执行如下命令,进入icagentK8s目录。
    cd icagentK8s
  4. 在生成安装命令下方,选择接入日志的区域名、接入日志的账号的项目ID。
  5. k8s集群所在区域选择“区域内”。
    1. 在安装步骤下方,复制ICAgent安装命令。执行的命令需要填写AK/SK,有两种方式可选择:复制命令时手动替换AK/SK或者直接执行命令时再根据提示替换AK/SK。
      图3 安装ICAgent
    2. 使用PuTTY等远程登录工具,以root用户登录待安装主机,执行复制到的ICAgent安装命令。

      当显示”ICAgent install success”时,表示安装成功,安装成功后,在主机列表下方查看ICAgent状态显示“运行”。

      安装ICAgent成功后,单击“确认安装完毕”。

  6. k8s集群所在区域选择“区域外”。
    1. 网络连通性方式支持公网或专线。区域外集群将日志上报到当前区域LTS的网络通路,建议您优先选择专线,更稳定可靠。
      • 若选择“公网”,直接从6.c开始执行。
      • 若选择“专线”,需要从6.b开始执行。
    2. 连通LTS后端方式支持VPCEP或跳板机。在专线连通场景下,默认区域外集群与当前区域LTS网络不通,安装在区域外主机上的ICAgent无法直接访问华为云管理面上报日志的网段。因此需要配置网络打通方案,使用VPCEP或跳板机的方式去连通LTS。
      • 选择“连通LTS后端方式”“VPCEP”时:

        配置VPCEP域名。请您在华为云网络工程师的协助下,在区域外云上配置VPCEP的DNS域名解析规则,将VPCEP的域名解析到指定IP。配置完成后,根据界面提示复制命令,选择一台待采集日志的主机,执行该命令。如果能ping通,表示网络配置连通。

      • 选择“连通LTS后端方式”“跳板机”时:
        1. 创建Linux操作系统的ECS弹性云服务器作为跳板机,输入跳板机私有IP。
        2. 获取AK/SK。填写DC和跳板机连接IP。

          DC:自定义主机节点所属数据中心名称,便于分类查看主机。由数字、大小写字母、中划线、下划线组成,并且最多不超过64个字符。

          跳板机连接IP:如果跳板机使用EIP方式连通区域外主机,此处填写跳板机弹性IP;如果跳板机与区域外主机使用云专线VPC对等连接方式,此处填写跳板机VPC内网IP,即私有IP。

    3. 在安装步骤下方,复制ICAgent安装命令。执行的命令需要填写AK/SK,有两种方式可选择:复制命令时手动替换AK/SK或者直接执行命令时再根据提示替换AK/SK。
    4. 使用PuTTY等远程登录工具,以root用户登录待安装主机,执行复制到的ICAgent安装命令。

      当显示”ICAgent install success”时,表示安装成功,安装成功后,在主机列表下方查看ICAgent状态显示“运行”。

      安装ICAgent成功后,单击“确认安装完毕”。

步骤4:选择主机组(可选)

  1. 在主机组列表中,默认选择集群所在的主机组,您可以根据需要选择其他已创建的主机组。
  2. 单击“下一步:采集配置”。

步骤5:采集配置

采集配置项涉及日志的采集范围、采集方式、格式处理等内容配置,请参考以下步骤完成采集配置。

  1. 采集配置名称:自定义采集配置名称,长度范围为1到64个字符,只支持输入英文、数字、中文、中划线、下划线以及小数点,且不能以小数点、下划线开头或以小数点结尾。
  2. 数据源配置:选择数据源类型,进行对应的数据源配置。
    表2 采集配置参数表

    类型

    参数配置

    容器标准输出

    采集集群内指定容器日志,仅支持Stderr和Stdout的日志。

    采集容器标准输出(stdout)和采集容器标准错误(stderr)。两者必须得有一个是开启状态。

    • 开启后采集容器标准错误(stderr),可以选择采集目标路径:将标准输出和标准错误采集到不同的文件(stdout.log和stderr.log)、将标准输出和标准错误采集到同一个文件(stdout.log)。
    • 被匹配上的容器的标准输出会采集到指定的日志流,原先采集到的AOM的标准输出会停止采集。
    • 允许文件多次采集。(暂不支持Windows场景)

      开启“允许文件多次采集”后,同一主机下的同一日志文件支持被采集到多个日志流。该功能依赖ICAgent版本,详见查看ICAgent版本说明

      关闭“允许文件多次采集”后,采集路径不能重复配置,即同一主机下的同一日志文件,即使跨日志流,也只能配置一次。

    容器文件路径

    采集集群内指定容器内的文件路径日志。

    • 路径配置:添加您需要收集的日志路径,LTS将按照配置的路径进行日志采集。

      当CCE集群的工作负载中,已配置容器的挂载路径时,此时路径配置里添加的路径将无效。须将CCE集群页面中的挂载路径删除后,该配置才有效。

    • 添加自定义绕接规则,ICAgent目前是通过文件名规则来判断是否为绕接文件,如果您的绕接规则不符合内置类型时,可以通过单击“添加自定义绕接规则”来进行匹配,避免重复采集和绕接时的日志丢失。

      内置类型为{basename}{连接符}{绕接标识}.后缀,{basename}.{后缀}{连接符}{绕接标识}。其中连接符为-._绕接标识为非字母符号,后缀为字母。

      自定义绕接规则为{basename}+绕接文件的特征正则表达式组成匹配规则。例如您的日志文件名称为test.out.log,绕接后的文件名为test.2024-01-01.0.out.log,test.2024-01-01.1.out.log,因此在路径配置时,采集路径为/opt/*.log,绕接规则为{basename}\.\d{4}-\d{2}-\d{2}\.\d{1}.out.log

    • 支持验证采集路径的正确性,确保正常采集日志。单击“使用路径验证”,输入采集路径和日志文件绝对路径,最多支持添加30个采集路径,单击“确定”,若路径正确,界面提示验证成功。
    • 支持验证绕接规则的正确性,确保正常采集日志。单击“使用绕接规则验证”,输入采集文件名、绕接后的文件名、绕接规则,单击“确定”,若绕接规则正确,界面提示验证成功。
    • 允许文件多次采集。(暂不支持Windows场景)

      开启“允许文件多次采集”后,同一主机下的同一日志文件支持被采集到多个日志流。该功能依赖ICAgent版本,详见查看ICAgent版本说明

      关闭“允许文件多次采集”后,采集路径不能重复配置,即同一主机下的同一日志文件,即使跨日志流,也只能配置一次。

    • 设置采集黑名单:LTS支持对日志进行过滤采集,即通过设置黑名单,在采集时过滤指定的目录或文件。指定按目录过滤,可过滤掉该目录下的所有文件。

    节点文件路径

    采集集群内指定节点路径的文件。

    • 路径配置:添加您需要收集的日志路径,LTS将按照配置的路径进行日志采集。
    • 添加自定义绕接规则,ICAgent目前是通过文件名规则来判断是否为绕接文件,如果您的绕接规则不符合内置类型时,可以通过单击“添加自定义绕接规则”来进行匹配,避免重复采集和绕接时的日志丢失。

      内置类型为{basename}{连接符}{绕接标识}.后缀,{basename}.{后缀}{连接符}{绕接标识}。其中连接符为-._绕接标识为非字母符号,后缀为字母。

      自定义绕接规则为{basename}+绕接文件的特征正则表达式组成匹配规则。例如您的日志文件名称为test.out.log,绕接后的文件名为test.2024-01-01.0.out.log,test.2024-01-01.1.out.log,因此在路径配置时,采集路径为/opt/*.log,绕接规则为{basename}\.\d{4}-\d{2}-\d{2}\.\d{1}.out.log

    • 支持验证采集路径的正确性,确保正常采集日志。单击“使用路径验证”,输入采集路径和日志文件绝对路径,最多支持添加30个采集路径,单击“确定”,若路径正确,界面提示验证成功。
    • 支持验证绕接规则的正确性,确保正常采集日志。单击“使用绕接规则验证”,输入采集文件名、绕接后的文件名、绕接规则,单击“确定”,若绕接规则正确,界面提示验证成功。
    • 允许文件多次采集。(暂不支持Windows场景)

      开启“允许文件多次采集”后,同一主机下的同一日志文件支持被采集到多个日志流。该功能依赖ICAgent版本,详见查看ICAgent版本说明

      关闭“允许文件多次采集”后,采集路径不能重复配置,即同一主机下的同一日志文件,即使跨日志流,也只能配置一次。

    • 设置采集黑名单:LTS支持对日志进行过滤采集,即通过设置黑名单,在采集时过滤指定的目录或文件。指定按目录过滤,可过滤掉该目录下的所有文件。

    K8S事件

    采集K8S集群内的事件日志。无需设置参数。仅支持icagent 5.12.150 及以上版本。

    K8S事件不能重复配置,即一个K8S集群的K8S事件,只能配置接入到一个日志流。

  3. 当数据源类型选择容器标准输出和容器文件路径时,设置K8s匹配规则,非必选项。

    填写正则匹配规则后,单击校验按钮,支持校验确保正则表达式的正确性。

  4. 结构化解析配置

    LTS支持单行-全文日志多行-全文日志JSON分隔符单行-完全正则多行-完全正则组合解析多种类型日志解析规则,您可以根据日志内容选择合适的解析规则。日志采集成功后,结构化处理好的日志会发送到指定的日志流上,您就可以对日志进行字段搜索与SQL分析。

    • 开启结构化解析配置,详细操作请参考配置ICAgent结构化解析
      图4 ICAgent结构化解析配置
    • 关闭结构化解析配置,则不会对日志数据进行结构化处理,原始日志格式会发送到指定日志流中,仅可以对日志进行一些常规关键词搜索。
  5. 其他配置。设置采集路径后,您还可以设置日志拆分、采集二进制文件、自定义元数据等。
    表3 其他配置

    名称

    说明

    示例

    最大目录深度

    该参数用于控制日志采集路径使用**模糊匹配的文件目录层级,LTS支持设置最大目录层级为20层。

    例如您的日志路径为/var/logs/department/app/a.log,采集路径配置为:/var/logs/**/a.log,最大目录深度设置为5。

    5

    日志拆分

    为了防止单条日志过大或被截断丢弃,您可以按文件大小拆分日志。

    • 开启“日志拆分”,支持自定义设置日志拆分大小,设置范围为500KB-1024KB。日志拆分大小为500KB,即单条日志超过500KB会被拆分为多条采集。例如:日志大小为600KB,被拆分为2条日志采集,第一条500KB,第二条100KB。仅支持单行日志,不支持多行日志。
    • 不开启“日志拆分”,单条日志大小限制不超过500KB,超过限制部分会被截断丢弃。

    开启

    采集二进制文件

    支持采集以二进制格式存储的日志数据,您可以通过如下命令查看文件类型,如果包含charset=binary,那么该日志文件就是二进制文件。
    file -i 文件名
    • 当日志的文件类型为二进制时,开启“采集二进制文件”,则对接入的二进制文件日志进行采集,但仅支持UTF8编码的字符串,非UFT8编码的字符在LTS控制台页面会显示乱码。
    • 当日志的文件类型为二进制时,未开启“采集二进制文件”,则对接入的二进制文件日志停止采集,开启后即可进行采集。

    开启

    日志文件编码

    日志文件里字符内容的存储格式,支持UTF-8、GBK文件编码类型,GBK暂不支持Windows场景。请合理设置编码,确保日志内容能被正确读取和解析,避免乱码或数据损坏。

    • UTF-8编码是一种变长编码方式,用于表示Unicode字符集。
    • GBK全称《汉字内码扩展规范》,中文计算机编码的一种,是ASCII码和GB2312编码的扩展。

    UTF-8

    采集策略

    ICAgent采集新文件时,您可以设置从文件的末尾或开头开始读取文件。

    • 增量采集:ICAgent采集新文件时,从文件的末尾开始读。
    • 全量采集:ICAgent采集新文件时,从文件的开头开始读。

    增量采集

    自定义元数据

    • 关闭“自定义元数据”,使用ICAgent系统默认配置的字段上报到LTS,不需要用户配置且ICAgent系统不支持配置。
    • 开启“自定义元数据”,根据用户选择的内置字段和自定义键值增加字段上报到LTS。

      系统内置字段:勾选需要设置的内置字段。

      自定义键值对:单击“添加”,输入键值key和键值Value。

    开启

  6. 参考表4配置日志格式、日志时间。若开启结构化解析配置则不用设置该参数。
    表4 日志采集信息

    名称

    说明

    日志格式

    • 单行日志:采集的日志文件中,如果您希望每一行日志在LTS界面中都显示为一条单独的日志数据,则选择单行日志。
    • 多行日志:采集的日志中包含像java异常的日志,如果您希望多行异常的日志显示为一条日志,正常的日志每一行都显示为一条单独的日志数据,则选择多行日志,方便您查看日志并且定位问题。

    日志时间

    系统时间:表示系统当前时间,默认为日志采集时间,每条日志的行首显示日志的采集时间。

    • 日志采集时间:ICAgent采集日志,并且发送到云日志服务的时间。
    • 日志打印时间:系统产生并打印日志的时间。ICAgent采集日志并发送日志到云日志平台的频率为1秒。
    • 采集日志时间限制:系统时间的前后24小时内。

    时间通配符:用日志打印时间来标识一条日志数据,通过时间通配符来匹配日志,每条日志的行首显示日志的打印时间。

    • 如果日志中的时间格式为:2019-01-01 23:59:59.011,时间通配符应该填写为:YYYY-MM-DD hh:mm:ss.SSS。
    • 如果日志中的时间格式为:19-1-1 23:59:59.011,时间通配符应该填写为:YY-M-D hh:mm:ss.SSS。

      如果日志中不存在年份信息,则云日志会自动补齐年份数据为当前年份数据。

    填写示例:

    YY   - year (19)     
    YYYY - year (2019)  
    M    - month (1)     
    MM   - month (01)    
    D    - day (1)       
    DD   - day (01)        
    hh   - hours (23)     
    mm   - minutes (59)   
    ss   - seconds (59) 
    SSS  - millisecond(999)
    hpm     - hours (03PM)
    h:mmpm    - hours:minutes (03:04PM)
    h:mm:sspm  - hours:minutes:seconds (03:04:05PM)       
    hh:mm:ss ZZZZ (16:05:06 +0100)       
    hh:mm:ss ZZZ  (16:05:06 CET)       
    hh:mm:ss ZZ   (16:05:06 +01:00)

    分行模式

    日志格式选择多行日志时,需要选择分行模式,分行模式选择“日志时间”时,是以时间通配符来划分多行日志;当选择“正则模式”时,则以正则表达式划分多行日志。

    正则表达式

    此配置是用来标识一条日志数据的正则表达式。日志格式选择“多行日志”格式后且“分行模式”已选择“正则模式”后需要设置。

    时间通配和正则表达式均是从每行日志的开头进行严格匹配,如果匹配不上,则会默认使用系统时间上报,这样可能会和文件内容中的时间不一致。如果没有特殊需求,建议使用单行日志-系统时间模式即可

    ICAgent只支持RE2风格的正则表达式,详细请参考语法

  7. 单击“下一步:索引配置”。

步骤6:索引配置

索引是一种存储结构,用于对日志数据进行查询。通过配置索引后,可对日志进行查询和分析操作。不同的索引配置,则会产生不同的查询和分析结果,请根据您的需要,合理配置索引。

  • 若您暂时无需通过某字段进行查询或分析,接入时可以直接跳过索引配置,不影响日志采集。待日志接入成功后,再根据业务需求优化索引配置(仅对新写入的日志生效),详细操作请参考创建LTS日志索引。在“索引配置”页面保持默认设置,直接单击“跳过并提交”,界面提示“日志接入成功”。
  • 若您需要通过特定字段进行查询或分析,接入时请在“索引配置”页面参考创建LTS日志索引配置索引。

    您可以单击“自动配置”,云日志服务LTS会根据近15分钟的第一条日志内容或常见内置保留字段(例如hostIP、hostName、pathFile)自动生成字段索引。或者手动添加字段,只能添加已结构化的字段。设置完成后,单击“提交”,界面提示“日志接入成功”。日志接入成功后,您仍可以根据业务需求随时调整索引配置(仅对新写入的日志生效)。

步骤7:完成接入配置

接入成功后会生成一条接入配置信息。
  • 单击接入配置名称可进入详情页面,查看该接入配置详细信息。
  • 单击接入配置操作列的“修改”重新修改接入配置信息。
  • 单击接入配置操作列的“标签管理”即可添加标签。
  • 单击接入配置操作列的“更多 > 复制”复制一条新的接入配置信息。
  • 单击接入配置操作列的“更多 > 删除”即可删除接入配置信息。

    删除接入配置后会导致日志无法正常采集,可能会影响用户日志相关业务异常,且删除后无法恢复,请谨慎操作。

  • 若不需要采集日志,关闭“接入配置开关”列的开关。若需要重新采集日志,需要重新开启“接入配置开关”列的开关。

    关闭接入配置后会导致日志无法正常采集,可能会影响用户日志相关业务异常,请谨慎操作。

  • 单击接入配置操作列的“更多 > ICAgent采集诊断”,可查看ICAgent异常监控、ICAgent整体状态和ICAgent采集监控。如果没有显示该功能,请参考设置ICAgent日志采集开关开启“ICAgent诊断开关”。

批量设置多个接入配置

支持同时批量设置多个接入配置,操作简单,不用重复配置即可快速完成多个场景的接入配置。

  1. 在“接入管理”页面,单击“批量创建”,进入配置详情页面。

    1. 接入类型:选择自建k8s - 应用日志。
    2. 规则列表:
      • 在输入框填写接入配置数量,单击“添加接入配置”。
      • 在右侧配置项下方自定义填写“规则名称”,配置项设置完成后,也可以双击左侧接入配置的名称自定义命名。规则名称只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。长度为1-64个字符。
      • 鼠标放在接入配置上面,单击即可直接复制接入配置。
      • 鼠标放在接入配置上面,单击,在弹出的提示框单击“确定”删除接入配置。
    3. 配置项:
      • 左侧显示接入配置的信息,最多支持添加99个配置。
      • 右侧显示配置接入的内容,详细请参考步骤5:采集配置进行设置。
      • 一个接入配置设置完成后,单击“应用于其他接入配置”即可将该接入配置复制到其他接入配置。

  2. 单击“参数检查”,检查成功后,单击“提交”,批量接入设置完成。

    例如添加了4个接入配置,批量创建成功后,在“接入管理”下方,就会显示4条接入配置任务。

  3. (可选)支持对接入配置任务进行以下操作:

    • 勾选多个已创建成功的接入配置,单击“批量编辑”进入配置详情页面,通过选择不同接入类型,修改对应的接入配置信息。
    • 勾选多个接入配置开关显示关闭的接入配置,单击“接入配置开启/关闭”,选择“开启”即可批量开启接入配置任务。
    • 勾选多个接入配置开关显示开启的接入配置,单击“接入配置开启/关闭”,选择“关闭”。接入配置状态关闭后不会继续采集日志,请谨慎操作。
    • 勾选多个已创建成功的接入配置,单击删除按钮即可批量删除接入配置。