
# 采集CCE弹性至CCI的Pod日志并上报LTS
#### 应用场景
在业务突发流量场景下，CCE集群通过"CCE突发弹性引擎（对接 CCI）"插件将Pod调度至CCI服务以应对流量高峰。为了统一运维体验，用户需要将运行在CCI侧的Pod日志（包括标准输出和容器内文件日志）采集并集中存储到云日志服务（LTS）。
本实践介绍如何在CCE集群中配置日志采集策略，实现弹性至CCI的Pod日志自动上报LTS。
#### 前提条件
- 已创建CCE Standard集群或CCE Turbo集群且节点状态正常。
- CCE集群所在VPC已配置VPC终端节点（VPCEP）。 原因：弹性至CCI的Pod拉取SWR镜像仓库镜像依赖SWR和OBS终端节点，具体配置请参考[购买云服务VPCEP](https://support.huaweicloud.com/usermanual-cci2/cci_01_0005.html)。
  
 
#### 步骤一：安装"云原生日志采集插件"
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，选择指定集群，然后进入插件中心安装"云原生日志采集插件"。
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860073.png "点击放大")
   
   
2. 根据日志量选择并安装合适的插件规格，然后单击"安装"。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780053.png "点击放大")
   
   "运行中"表示插件已安装完成在正常运行。
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860093.png "点击放大")
   
   
 
#### 步骤二：安装"CCE突发弹性引擎（对接 CCI）"插件
1. 进入插件中心，安装"CCE突发弹性引擎（对接 CCI）"插件。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780061.png "点击放大")
   
   
2. 选择合适的插件规格，开启网络互通，然后单击"YAML安装"。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860103.png "点击放大")
   
   
3. 将"enableFullPathLogCollect"和"enableLogCollection"参数值设置为"true"，然后单击"提交"。
   ![](https://support.huaweicloud.com/bestpractice-cci2/public_sys-resources/note_3.0-zh-cn.png)
   - 如果插件已安装，请单击"编辑"更新配置。
   
   - "enableLogCollection"：开启日志采集能力。
   
   - "enableFullPathLogCollect"： 开启容器全路径文件日志采集。
    
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780063.png "点击放大")
   
   "运行中"表示插件已安装完成在正常运行。
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860145.png "点击放大")
   
   
 
#### 步骤三：配置日志采集策略
您可以根据实际需求选择采集"标准输出日志"或"容器文件日志"。
标准输出日志：采集弹性至CCI的Pod输出到stdout/stderr的日志。
容器文件日志：采集弹性至CCI的Pod内部特定路径（如 /var/log/app.log）的日志文件。
#### 配置标准输出日志采集策略
1. 进入"配置中心"，选择"监控运维配置"，勾选"容器标准输出"的采集策略，确认配置并保存。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780179.png "点击放大")
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860225.png "点击放大")
   
   
2. 创建工作负载，下文示例模拟容器标准输出。
   ```
   kind: Deployment
   apiVersion: apps/v1
   metadata:
     name: c1
     namespace: default
     labels:
       bursting.cci.io/burst-to-cci: enforce  # 配置强制调度策略，弹性Pod至CCI2.0。
       version: v1
   spec:
     replicas: 1
     selector:
       matchLabels:
         app: c1
         version: v1
     template:
       metadata:
          labels:
           app: c1
           version: v1
       spec:
         containers:
           - name: container-1
             image: centos:latest  # 镜像地址，可自定义。
             command:
               - /bin/bash
               - '-c'
               - for((i=0;i<=100000;i++)); do  echo "$i hello"; sleep 10; done  # 模拟标准输出日志。
             resources:
               limits:
                 cpu: '1'
                 memory: 2Gi
               requests:
                 cpu: '1'
                 memory: 2Gi
         imagePullSecrets:
           - name: default-secret
   ```
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780187.png "点击放大")
   
   
3. 进入日志中心，通过筛选命名空间、负载类型、负载名称、Pod名称，查询创建的Pod标准输出日志。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860227.png "点击放大")
   
   
 
#### 配置容器文件日志采集策略
1. 创建工作负载，下文示例模拟输出日志到指定路径的日志文件。
   ```
   kind: Deployment
   apiVersion: apps/v1
   metadata:
     name: c1
     namespace: default
     labels:
       bursting.cci.io/burst-to-cci: enforce  # 配置强制调度策略，弹性Pod至CCI2.0。
       version: v1
   spec:
     replicas: 1
     selector:
       matchLabels:
         app: c1
         version: v1
     template:
       metadata:
         creationTimestamp: null
         labels:
           app: c1
           version: v1
       spec:
         containers:
           - name: container-1
             image: centos:latest  # 镜像地址，可自定义。
             command:
               - /bin/bash
               - '-c'
               - for((i=0;i<=100000;i++)); do  echo "$i hello" >> /var/log/container-1.log; sleep 10; done  # 模拟输出日志到指定路径的日志文件。
             resources:
               limits:
                 cpu: '1'
                 memory: 2Gi
               requests:
                 cpu: '1'
                 memory: 2Gi
         imagePullSecrets:
           - name: default-secret
   ```
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780189.png "点击放大")
   
   
2. 进入"日志中心"，单击"日志采集策略"，创建容器文件日志采集策略。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860229.png "点击放大")
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780191.png "点击放大")
   
   
3. 选择"自定义策略"，输入策略名称，选择"容器文件日志"，选择日志源为"指定工作负载"，选择负载所在命名空间和工作负载名称，选择容器名称和填写路径配置。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860231.png "点击放大")
   
   
4. 根据需要选择日志格式，本文以单行文本为例。可以使用默认日志组/日志流，也可以自定义日志组/日志流。完成上述参数配置后，单击"确定"。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535780193.png "点击放大")
   
   ![](https://support.huaweicloud.com/bestpractice-cci2/public_sys-resources/caution_3.0-zh-cn.png)
   日志采集策略只对新建的Pod生效，如果要采集存量Pod的日志，需要对存量Pod进行一次滚动发布。当新建的Pod annotation"logconfigs.logging.openvessel.io"中包含配置的日志采集策略时，说明日志采集策略对该Pod已生效。
   ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002535860233.png "点击放大")
   
5. 进入日志中心，通过筛选命名空间、负载类型、负载名称、Pod名称，查询创建的Pod容器内指定路径的日志文件。 ![](https://support.huaweicloud.com/bestpractice-cci2/zh-cn_image_0000002503900392.png "点击放大")
   
   
 
