
# 云原生日志采集
#### 插件介绍
云原生日志采集插件（log-agent）是基于开源fluent-bit和opentelemetry构建的云原生日志、K8s事件采集插件。log-agent支持基于CRD的日志采集策略，可以根据您配置的策略规则，对集群中的容器标准输出日志、容器文件日志、节点日志及K8s事件日志进行采集与转发。同时支持上报K8s事件到AOM，用于配置事件告警，默认上报所有异常事件和部分正常事件。
#### 字段说明
表1参数描述 
| 参数     | 是否必选 | 参数类型                                            | 描述             |
|:---|:---|:---|:---|
| basic  | 否    | object                                          | 插件基础配置参数，无需指定。 |
| flavor | 是    | [表2] object      | 插件规格参数         |
| custom | 是    | [表3] object | 插件自定义参数        |
   
 表2flavor 
| 参数          | 是否必选 | 参数类型                                                | 描述                         |
|:---|:---|:---|:---|
| description | 否    | String                                              | 插件相关的描述信息                  |
| name        | 是    | String                                              | 插件规格名称，固定为：Single-instance |
| replicas    | 是    | String                                              | otel-collector组件实例数，默认为：1  |
| resources   | 是    | [resources] object | 容器资源（CPU、内存）配额。            |
   
 表3custom 
| 参数                  | 是否必选 | 参数类型   | 描述                                                                                 |
|:---|:---|:---|:---|
| caCert              | 是    | String | 安装时可不填。客户端证书，base64加密。由CCE插件中心生成，用于组件之间双向认证，以及webhook请求。需签发域名：\*.monitoring.svc。   |
| serverCert          | 是    | String | 安装时可不填。服务端证书，base64加密。由CCE插件中心生成，用于组件之间双向认证，以及webhook请求。需签发域名：\*.monitoring.svc。   |
| serverKey           | 是    | String | 安装时可不填。服务端私用密钥，base64加密。由CCE插件中心生成，用于组件之间双向认证，以及webhook请求。需签发域名：\*.monitoring.svc。 |
| accessKey           | 否    | String | 用户访问密钥ID，用于请求AOM和LTS服务接口，不填则使用临时aksk                                               |
| secretKey           | 否    | String | 用户访问密钥，用于请求AOM和LTS服务接口，不填则使用临时aksk                                                 |
| createDefaultStdout | 否    | Bool   | 是否创建默认容器采集标准输出上报LTS策略，仅安装插件时有效，默认为false                                            |
| createDefaultEvent  | 否    | Bool   | 是否创建默认采集kubernetes事件上报LTS策略，仅安装插件时有效，默认为false                                      |
| multiAZEnabled      | 否    | Bool   | 是否多可用区部署，默认为false，如果为true，则强制跨可用区部署，若为false，则优先跨可用区部署。                             |
| cluster_category    | 否    | String | 固定为CCE                                                                             |
| ltsAccessEndpoint   | 否    | String | 指定日志上报LTS的地址，不填则读取basic中的地址                                                        |
| ltsEndpoint         | 否    | String | 指定LTS接口的地址，不填则读取basic中的地址                                                          |
| aomEndpoint         | 否    | String | 指定事件上报AOM的地址，不填则读取basic中的地址                                                        |
| projectID           | 是    | String | 安装时可不填。当前CCE集群所属的项目ID                                                              |
| clusterID           | 是    | String | 安装时可不填。当前CCE集群的ID                                                                  |
| clusterName         | 是    | String | 当前CCE集群的名称                                                                         |
   
 表4resources字段数据结构说明 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| limitsCpu   | 是    | String | CPU大小限制，单位：m                                                                                                                                                                                                                                                         |
| limitsMem   | 是    | String | 内存大小限制，单位：Mi                                                                                                                                                                                                                                                         |
| name        | 是    | String | 组件名称，固定为： fluent-bit： 采集节点日志的组件 cop-logs: 用于生成各节点需要采集文件的软链 log-operator：用于生成fluent-bit和otel-collector的配置 otel-collector：用于上报采集的日志和事件到AOM和LTS |
| requestsCpu | 是    | String | 申请的CPU大小，单位：m                                                                                                                                                                                                                                                        |
| requestsMem | 是    | String | 申请的内存大小，单位：Mi                                                                                                                                                                                                                                                        |
   
#### 请求示例
```
{
  "kind": "Addon",
  "apiVersion": "v3",
  "metadata": {
    "annotations": {
      "addon.install/type": "install"
    }
  },
  "spec": {
    "clusterID": "ccbe7bdf-4**9-3**b-b**4-0********78",
    "version": "1.4.4",
    "addonTemplateName": "log-agent",
    "values": {
      "basic": {
        "aomEndpoint": "https://***",
        "iam_url": "***",
        "ltsAccessEndpoint": "https://***:8102",
        "ltsEndpoint": "https://***",
        "region": "***",
        "swr_addr": "***",
        "swr_user": "***",
        "rbac_enabled": true,
        "cluster_version": "v1.25"
      },
      "flavor": {
        "description": "Recommanded when the number of logs per second does not exceed 5000.",
        "name": "Low",
        "replicas": 1,
        "resources": [
          {
            "limitsCpu": "500m",
            "limitsMem": "500Mi",
            "name": "fluent-bit",
            "requestsCpu": "100m",
            "requestsMem": "200Mi"
          },
          {
            "limitsCpu": 1,
            "limitsMem": "500Mi",
            "name": "cop-logs",
            "requestsCpu": "100m",
            "requestsMem": "100Mi"
          },
          {
            "limitsCpu": "500m",
            "limitsMem": "500Mi",
            "name": "log-operator",
            "requestsCpu": "100m",
            "requestsMem": "100Mi"
          },
          {
            "limitsCpu": 1,
            "limitsMem": "2Gi",
            "name": "otel-collector",
            "requestsCpu": "200m",
            "requestsMem": "1Gi"
          }
        ],
        "category": [
          "CCE",
          "Turbo"
        ]
      },
      "custom": {
        "accessKey": "",
        "aomEndpoint": "https://***",
        "aomPrivateEndpointIP": "",
        "caCert": "",
        "clusterID": "",
        "clusterName": "clusterName",
        "cluster_category": "CCE",
        "createAudit": false,
        "createDefaultEvent": false,
        "createDefaultEventToAOM": true,
        "createDefaultStdout": false,
        "createKubeApiserver": false,
        "createKubeControllerManager": false,
        "createKubeScheduler": false,
        "ltsAccessEndpoint": "https://***:8102",
        "ltsAuditStreamID": "",
        "ltsEndpoint": "https://***",
        "ltsEventStreamID": "",
        "ltsGroupID": "",
        "ltsKubeApiserverStreamID": "",
        "ltsKubeControllerManagerStreamID": "",
        "ltsKubeSchedulerStreamID": "",
        "ltsLogReportDomain": "",
        "ltsPrivateEndpointIP": "",
        "ltsStdoutStreamID": "",
        "multiAZEnabled": false,
        "paasakskEnable": true,
        "projectID": "",
        "secretKey": "",
        "securityToken": "",
        "serverCert": "",
        "serverKey": ""
      }
    }
  }
}
```
