更新时间:2026-07-08 GMT+08:00
分享

日志上报LTS

约束与限制

在使用LTS服务前,需要先购买LTS的VPCEP。购买时在“云服务”一栏搜索并选择“LTS”相关云服务,具体操作请参见如何在VPCEP控制台创建终端节点?

应用场景

云日志服务(Log Tank Service,简称LTS)通过海量日志数据的分析与处理,可以将云服务和应用程序的可用性和性能最大化,CCI 2.0支持将pod内的日志上报到云日志服务LTS。

通过控制台界面创建无状态负载对接LTS

  1. 登录云容器实例 CCI2.0控制台。
  2. 左侧导航栏中选择“负载管理 > 无状态负载”,单击“创建工作负载”
  3. 添加基础配置。
  4. 添加容器配置。一个Pod可以包含一个或多个运行不同镜像的容器,通常情况下一个Pod中只有一个容器,如果您的应用程序需要多个容器,请添加容器。
  5. 选择升级策略。
  6. 将容器日志投递至云日志服务(LTS)进行集中管理,请勾选“日志对接LTS”,并参考表1完成相关配置。

    表1 日志对接LTS

    参数

    说明

    日志组

    选择日志所属的逻辑分组。可选择已有日志组,或单击“创建日志组”新建。
    说明:

    日志组名称不能与其他日志组名称或原始名称相同。只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。

    日志流

    选择日志组中具体的日志流(日志存储的基本单位)。可选择已有日志流,或单击“创建日志流”新建。
    说明:

    只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。

    策略名称

    自定义日志采集策略名称,用于识别本次日志采集规则。
    说明:

    名称由小写字母、数字和横线(-)组成,且必须以字母或数字开头和结尾,最长支持63个字符

    日志类型

    • 容器标准输出:采集容器在运行过程中打印到标准输出或标准错误的日志。
    • 容器日志文件:采集容器内部指定日志文件的内容。
      说明:
      • 路径配置最多支持添加20个日志目录。
      • 重复的路径配置只生效一次日志目录,请填写绝对路径。
      • 日志文件名,不支持.gz .tar .zip 后缀类型。
      • 最多有三级目录采用通配符匹配,且第一级目录不能使用通配符。目录名和文件名支持完整名称和通配符模式,通配符只支持星号(*)和半角问号(?)。星号(*)表示匹配多个任意字符。半角问号(?)表示匹配单个任意字符。

    日志格式

    • 单行文本:每条日志仅包含一行文本,以换行符 \n 作为各条日志的分界线。
    • 多行文本:每条日志可能横跨多行文本,采用首行正则的方式进行匹配,当选择多行文本时,需填写日志匹配格式。

  7. 配置完成后,单击“创建工作负载”。

    在负载列表中,待负载状态为“运行中”,负载创建成功。您可以单击负载名进入负载详情界面,刷新负载状态。

  8. 等待负载变为运行中状态,单击“日志”查看Pod上报的日志。

通过YAML创建无状态负载对接LTS

  1. 登录LTS控制台,创建日志组。

  2. 在创建出的日志组下创建日志流。

  3. 登录云容器实例 CCI2.0控制台。
  4. 在左侧导航栏中选择“负载管理”,选择“无状态负载”并单击“YAML创建”。

  5. YAML示例如下:

    如果是初次使用,建议不使用regulation正则匹配,后续根据需要再使用。

    apiVersion: cci/v2
    kind: Deployment
    metadata:
      name: test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: test
      template:
        metadata:
          annotations:
            logconf.k8s.io/fluent-bit-log-type: lts      # 日志上报类型
            logconfigs.logging.openvessel.io: "{\"default-config\":{\"container_files\":{\"container-0\":\"stdout.log;\/root\/out.log;\/data\/emptydir-volume\/*.log\"},\"lts-log-info\":{\"349b50f7-f6ba-4768-86f9-e7f84ab677c0\":\"8a9e0589-c3b5-4ed1-b8cd-1e8a54612d0e\"}}}"  # 日志上报配置
          labels:
            app: test
        spec:
          containers:
          - image: centos:latest
            command: ['sh', '-c', "while true; do echo hello; touch /root/out.log; echo hello >> /root/out.log; touch /data/emptydir-volume/emptydir.log; echo hello >> /data/emptydir-volume/emptydir.log; sleep 10; done"]     # 模拟日志写入
            volumeMounts:
            - name: emptydir-volume
              mountPath: /data/emptydir-volume
            - name: emptydir-memory-volume
              mountPath: /data/emptydir-memory-volume
            name: container-0  # 容器名称 (container-0)和上方logconfigs.logging.openvessel.io参数中的值保持一致
            resources:
              limits:
                cpu: 100m
                memory: 100Mi
              requests:
                cpu: 100m
                memory: 100Mi
          volumes:
          - name: emptydir-volume
            emptyDir: {}
          - name: emptydir-memory-volume
            emptyDir:
              sizeLimit: 1Gi
              medium: Memory
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 1
          maxUnavailable: 0

    annotation中"logconfigs.logging.openvessel.io"为日志上报相关的各类配置项,为json形式,各字段介绍如下:

    {
        "default-config": { // 配置名称,可自定义名称
            "container_files": { // 支持设置多个容器的日志收集路径(stdout.log表示标准输出,/root/out.log表示rootfs(包含挂卷)下文本日志,/data/emptydir-xxx/*.log表示rootfs(包含挂卷)下文本目录)
                "container-0": "stdout.log;/root/out.log;/data/emptydir-volume/*.log",
                ...
            },        
            "lts-log-info": { // 仅支持设置单个日志组和日志流
                "f938a11a-678e-4631-80a0-3667be1280f7": "a248c18b-61ed-4de2-8f7f-c042b78bb0fd" // 日志组id:日志流id
            }
        },
        "other-config": { // 支持多配置
            ...
        }
    }

  6. 等待负载变为运行中状态,单击“日志”查看Pod上报的日志。

相关文档