日志上报LTS
约束与限制
在使用LTS服务前,需要先购买LTS的VPCEP。购买时在“云服务”一栏搜索并选择“LTS”相关云服务,具体操作请参见如何在VPCEP控制台创建终端节点?
应用场景
云日志服务(Log Tank Service,简称LTS)通过海量日志数据的分析与处理,可以将云服务和应用程序的可用性和性能最大化,CCI 2.0支持将pod内的日志上报到云日志服务LTS。
通过控制台界面创建无状态负载对接LTS
- 登录云容器实例 CCI2.0控制台。
- 左侧导航栏中选择“负载管理 > 无状态负载”,单击“创建工作负载”。
- 添加基础配置。
- 添加容器配置。一个Pod可以包含一个或多个运行不同镜像的容器,通常情况下一个Pod中只有一个容器,如果您的应用程序需要多个容器,请添加容器。
- 选择升级策略。
- 将容器日志投递至云日志服务(LTS)进行集中管理,请勾选“日志对接LTS”,并参考表1完成相关配置。
表1 日志对接LTS 参数
说明
日志组
选择日志所属的逻辑分组。可选择已有日志组,或单击“创建日志组”新建。说明:日志组名称不能与其他日志组名称或原始名称相同。只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。
日志流
选择日志组中具体的日志流(日志存储的基本单位)。可选择已有日志流,或单击“创建日志流”新建。说明:只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。
策略名称
自定义日志采集策略名称,用于识别本次日志采集规则。说明:名称由小写字母、数字和横线(-)组成,且必须以字母或数字开头和结尾,最长支持63个字符
日志类型
- 容器标准输出:采集容器在运行过程中打印到标准输出或标准错误的日志。
- 容器日志文件:采集容器内部指定日志文件的内容。 说明:
- 路径配置最多支持添加20个日志目录。
- 重复的路径配置只生效一次日志目录,请填写绝对路径。
- 日志文件名,不支持.gz .tar .zip 后缀类型。
- 最多有三级目录采用通配符匹配,且第一级目录不能使用通配符。目录名和文件名支持完整名称和通配符模式,通配符只支持星号(*)和半角问号(?)。星号(*)表示匹配多个任意字符。半角问号(?)表示匹配单个任意字符。
日志格式
- 单行文本:每条日志仅包含一行文本,以换行符 \n 作为各条日志的分界线。
- 多行文本:每条日志可能横跨多行文本,采用首行正则的方式进行匹配,当选择多行文本时,需填写日志匹配格式。
- 配置完成后,单击“创建工作负载”。
在负载列表中,待负载状态为“运行中”,负载创建成功。您可以单击负载名进入负载详情界面,刷新负载状态。
- 等待负载变为运行中状态,单击“日志”查看Pod上报的日志。


通过YAML创建无状态负载对接LTS
- 登录LTS控制台,创建日志组。


- 在创建出的日志组下创建日志流。


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

- 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: 0annotation中"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": { // 支持多配置 ... } } - 等待负载变为运行中状态,单击“日志”查看Pod上报的日志。

