安装

平台的日志系统由两个插件组成:Alauda Container Platform Log Collector 和 Alauda Container Platform Log Storage。本章将介绍这两个插件的安装。

WARNING
  1. global 集群可以查询平台内任意业务集群存储的日志数据。请确保 global 集群可以访问业务集群的 11780 端口。

  2. Alauda Container Platform Log Storage with Clickhouse 插件需要 Clickhouse operator,安装插件前请确保集群中已上传 Clickhouse operator。

目录

安装规划

Alauda Container Platform Log Storage 插件可以安装在任意集群,且任意集群的日志存储组件均可被选为日志采集的存储接口。

因此,在安装日志存储插件之前,需要规划日志存储组件将安装在哪个集群和节点上。

  • 避免在 global 集群部署日志存储插件,建议部署在业务集群,以确保管理集群故障时不影响基于日志的问题排查。

  • 优先集中日志到单个日志存储集群;当日志量超过最大容量阈值时,再分散到多个存储集群。

  • 每个网络区域至少部署一个日志存储实例,实现日志本地汇聚,减少跨数据中心公网流量(公网流量成本高且延迟大)。

  • 日志存储节点建议专用,不与其他应用或平台组件共部署。日志存储对 I/O 吞吐要求高,易受干扰。

  • 挂载专用 SSD 磁盘用于日志存储,可显著提升性能。

通过控制台安装 Alauda Container Platform Log Storage with ElasticSearch

  1. 进入 应用商店管理 > 集群插件,选择目标集群。

  2. 插件 页签,点击 Alauda Container Platform Log Storage with ElasticSearch 右侧操作按钮 > 安装

  3. 按照以下说明配置相关参数。

    参数说明
    连接外部 Elasticsearch保持关闭状态以安装平台内置的日志存储插件。
    组件安装设置LocalVolume:本地存储,日志数据存储在所选节点的本地存储路径。此方式优点是日志组件直接绑定本地存储,无需通过网络访问存储,存储性能更佳。
    StorageClass:通过存储类动态创建存储资源存储日志数据。此方式灵活性更高;当整个集群定义多个存储类时,管理员可根据使用场景为日志组件选择对应存储类,降低主机故障对存储的影响。但 StorageClass 性能可能受网络带宽和延迟等因素影响,且依赖存储后端提供的冗余机制实现存储高可用。
    保留周期集群中日志、事件和审计数据的最大保留时间,超过保留周期的数据将自动清理。
    提示:可对需要长期保留的数据进行备份,如需帮助请联系技术支持人员。
  4. 点击 安装

通过 YAML 安装 Alauda Container Platform Log Storage with ElasticSearch

1. 检查可用版本

确保插件已发布,可在 global 集群检查 ModulePlugin 和 ModuleConfig 资源:


# kubectl get moduleplugin | grep logcenter
logcenter                       30h
# kubectl get moduleconfig | grep logcenter
logcenter-v4.1.0                30h

表示集群中存在 ModulePlugin logcenter,且版本 v4.1.0 已发布。

2. 创建 ModuleInfo

创建 ModuleInfo 资源安装插件,示例无配置参数:

apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleInfo
metadata:
  annotations:
    cpaas.io/display-name: logcenter
    cpaas.io/module-name: '{"en": "Alauda Container Platform Log Storage for Elasticsearch", "zh": "Alauda Container Platform Log Storage for Elasticsearch"}'
  labels:
    cpaas.io/cluster-name: go
    cpaas.io/module-name: logcenter
    cpaas.io/module-type: plugin
    cpaas.io/product: Platform-Center
  name: <cluster>-log-center
spec:
  config:
    clusterView:
      isPrivate: "true"
    components:
      elasticsearch:
        address: ""
        basicAuthSecretName: ""
        hostpath: /cpaas/data/elasticsearch
        httpPort: 9200
        install: true
        k8sNodes:
        - 192.168.139.75
        masterK8sNodes: []
        masterReplicas: 0
        masterResources:
          limits:
            cpu: "2"
            memory: 4Gi
          requests:
            cpu: 200m
            memory: 256Mi
        masterStorageSize: 5
        nodeReplicas: 1
        nodeStorageSize: 200
        resources:
          limits:
            cpu: "4"
            memory: 4Gi
          requests:
            cpu: "1"
            memory: 1Gi
        tcpPort: 9300
        type: single
      kafka:
        address: ""
        auth: true
        basicAuthSecretName: ""
        exporterPort: 9308
        install: true
        k8sNodes:
        - 192.168.139.75
        port: 9092
        storageSize: 10
        tls: true
        zkElectPort: 3888
        zkExporterPort: 9141
        zkLeaderPort: 2888
        zkPort: 2181
      kibana:
        install: false
      storageClassConfig:
        name: elasticsearch-local-log-sc
        type: LocalVolume
      zookeeper:
        storageSize: 1
    ttl:
      audit: 180
      event: 180
      logKubernetes: 7
      logPlatform: 7
      logSystem: 7
      logWorkload: 7
  version: v4.1.0

YAML 字段说明:

字段路径说明
metadata.labels.cpaas.io/cluster-name插件安装的目标集群名称。
metadata.name临时 ModuleInfo 名称,平台创建后会重命名。
spec.config.clusterView.isPrivate集群视图的可见性设置。
spec.config.components.elasticsearch.address外部 Elasticsearch 地址,留空使用平台安装的 Elasticsearch。
spec.config.components.elasticsearch.basicAuthSecretName外部 Elasticsearch 基本认证的 Secret 名称,留空使用平台 Elasticsearch。
spec.config.components.elasticsearch.hostpathElasticsearch 数据路径。
spec.config.components.elasticsearch.httpPortElasticsearch HTTP 端口,默认 9200。
spec.config.components.elasticsearch.install是否通过平台安装 Elasticsearch,使用外部 Elasticsearch 时设为 false。
spec.config.components.elasticsearch.k8sNodes使用 LocalVolume 时 Elasticsearch Data 的节点 IP 列表。
spec.config.components.elasticsearch.masterK8sNodesElasticsearch Master 节点 IP 列表(仅大规模且使用 LocalVolume 时)。
spec.config.components.elasticsearch.masterReplicasElasticsearch Master 副本数(仅大规模)。
spec.config.components.elasticsearch.masterResourcesElasticsearch Master 资源请求/限制(仅大规模)。
spec.config.components.elasticsearch.masterStorageSizeElasticsearch Master 存储大小(仅大规模)。
spec.config.components.elasticsearch.nodeReplicasElasticsearch Data 副本数。
spec.config.components.elasticsearch.nodeStorageSizeElasticsearch Data 存储大小(Gi)。
spec.config.components.elasticsearch.resourcesElasticsearch Data 资源请求/限制。
spec.config.components.elasticsearch.tcpPortElasticsearch 集群内部传输端口,默认 9300。
spec.config.components.elasticsearch.typeElasticsearch 集群规模:single/normal/big。
spec.config.components.kafka.address外部 Kafka 地址,留空使用平台安装的 Kafka。
spec.config.components.kafka.auth是否启用 Kafka 认证,默认 true。
spec.config.components.kafka.basicAuthSecretName外部 Kafka 认证 Secret 名称,留空使用平台 Kafka。
spec.config.components.kafka.exporterPortKafka Exporter 端口,默认 9308。
spec.config.components.kafka.install是否通过平台安装 Kafka,使用外部 Kafka 时设为 false。
spec.config.components.kafka.k8sNodes使用 LocalVolume 时 Kafka 的节点 IP 列表。
spec.config.components.kafka.portKafka 对外端口,默认 9092。
spec.config.components.kafka.storageSizeKafka 存储大小(Gi)。
spec.config.components.kafka.tls是否启用 Kafka TLS,默认 true。
spec.config.components.kafka.zkElectPortZookeeper 选举端口,默认 3888。
spec.config.components.kafka.zkExporterPortZookeeper Exporter 端口,默认 9141。
spec.config.components.kafka.zkLeaderPortZookeeper leader/follower 通信端口,默认 2888。
spec.config.components.kafka.zkPortZookeeper 客户端端口,默认 2181。
spec.config.components.kibana.install是否安装 Kibana,Kibana 已废弃,设为 false。
spec.config.components.storageClassConfig.nameLocalVolume 通常为 elasticsearch-local-log-sc,StorageClass 时填写存储类名称。
spec.config.components.storageClassConfig.type存储类型:LocalVolume/StorageClass。
spec.config.components.zookeeper.storageSizeZookeeper 存储大小(Gi)。
spec.config.ttl.audit审计数据保留天数。
spec.config.ttl.event事件数据保留天数。
spec.config.ttl.logKubernetesKubernetes 日志保留天数。
spec.config.ttl.logPlatform平台日志保留天数。
spec.config.ttl.logSystem系统日志保留天数。
spec.config.ttl.logWorkload业务日志保留天数。
spec.version指定安装的插件版本,需与 ModuleConfig 中 .spec.version 一致。

3. 验证安装

由于 ModuleInfo 名称创建后会变更,可通过标签定位资源,查看插件状态和版本:

kubectl get moduleinfo -l cpaas.io/module-name=logcenter
NAME                                             CLUSTER         MODULE      DISPLAY_NAME   STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
global-e671599464a5b1717732c5ba36079795          global          logcenter   logcenter      Running   v4.0.12          v4.0.12           v4.0.12

字段说明:

  • NAME:ModuleInfo 资源名称
  • CLUSTER:插件安装的集群
  • MODULE:插件名称
  • DISPLAY_NAME:插件显示名称
  • STATUS:安装状态,Running 表示安装成功且运行中
  • TARGET_VERSION:目标安装版本
  • CURRENT_VERSION:安装前版本
  • NEW_VERSION:可安装的最新版本

通过控制台安装 Alauda Container Platform Log Storage with Clickhouse

  1. 进入 应用商店管理 > 集群插件,选择目标集群。

  2. 插件 页签,点击 Alauda Container Platform Log Storage with Clickhouse 右侧操作按钮 > 安装

  3. 按照以下说明配置相关参数。

    参数说明
    组件安装设置LocalVolume:本地存储,日志数据存储在所选节点的本地存储路径。此方式优点是日志组件直接绑定本地存储,无需通过网络访问存储,存储性能更佳。
    StorageClass:通过存储类动态创建存储资源存储日志数据。此方式灵活性更高;当整个集群定义多个存储类时,管理员可根据使用场景为日志组件选择对应存储类,降低主机故障对存储的影响。但 StorageClass 性能可能受网络带宽和延迟等因素影响,且依赖存储后端提供的冗余机制实现存储高可用。
    保留周期集群中日志、事件和审计数据的最大保留时间,超过保留周期的数据将自动清理。
    提示:可对需要长期保留的数据进行备份,如需帮助请联系技术支持人员。
  4. 点击 安装

通过 YAML 安装 Alauda Container Platform Log Storage with Clickhouse

1. 检查可用版本

确保插件已发布,可在 global 集群检查 ModulePlugin 和 ModuleConfig 资源:


# kubectl get moduleplugin | grep logclickhouse
logclickhouse                       30h
# kubectl get moduleconfig | grep logclickhouse
logclickhouse-v4.1.0                30h

表示集群中存在 ModulePlugin logclickhouse,且版本 v4.1.0 已发布。

2. 创建 ModuleInfo

创建 ModuleInfo 资源安装插件,示例无配置参数:

apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleInfo
metadata:
  name: global-logclickhouse
  labels:
    cpaas.io/cluster-name: global
    cpaas.io/module-name: logclickhouse
    cpaas.io/module-type: plugin
spec:
  version: v4.1.0
  config:
    components:
      storageClassConfig:
        type: LocalVolume
        name: ""
      clickhouse:
        resources:
          limits:
            cpu: "2"
            memory: 4Gi
          requests:
            cpu: 200m
            memory: 256Mi
        k8sNodes:
          - xxx.xxx.xxx.xx
        hostpath: /cpaas/data/clickhouse
        nodeReplicas: 1
        nodeStorageSize: 200
        type: single
      razor:
        resources:
          limits:
            cpu: "2"
            memory: 1Gi
          requests:
            cpu: 10m
            memory: 256Mi
      vector:
        resources:
          limits:
            cpu: "4"
            memory: 1Gi
          requests:
            cpu: 10m
            memory: 256Mi
    ttl:
      audit: 180
      event: 180
      logKubernetes: 7
      logPlatform: 7
      logSystem: 7
      logWorkload: 7

YAML 字段说明(ClickHouse):

字段路径说明
metadata.nameModuleInfo 名称,建议格式:<目标集群>-logclickhouse
metadata.labels.cpaas.io/cluster-name插件安装的目标集群。
metadata.labels.cpaas.io/module-name必须为 logclickhouse
metadata.labels.cpaas.io/module-type必须为 plugin
spec.version插件安装版本。
spec.config.components.storageClassConfig.typeClickHouse 数据存储类型:LocalVolumeStorageClass
spec.config.components.storageClassConfig.nameStorageClass 类型时填写存储类名称;LocalVolume 时留空。
spec.config.components.clickhouse.resourcesClickHouse 资源请求/限制。
spec.config.components.clickhouse.k8sNodes使用 LocalVolume 时 ClickHouse 节点 IP 列表。
spec.config.components.clickhouse.hostpath使用 LocalVolume 时 ClickHouse 数据本地路径。
spec.config.components.clickhouse.nodeReplicas使用 StorageClass 时副本数。
spec.config.components.clickhouse.nodeStorageSizeClickHouse 数据存储大小(Gi)。
spec.config.components.clickhouse.type集群规模:singlenormalbig
spec.config.components.razor.resourcesRazor 资源请求/限制。
spec.config.components.vector.resourcesVector 资源请求/限制。
spec.config.ttl.audit审计数据保留天数。
spec.config.ttl.event事件数据保留天数。
spec.config.ttl.logKubernetesKubernetes 日志保留天数。
spec.config.ttl.logPlatform平台日志保留天数。
spec.config.ttl.logSystem系统日志保留天数。
spec.config.ttl.logWorkload业务日志保留天数。
spec.version指定安装的插件版本,需与 ModuleConfig 中 .spec.version 一致。

3. 验证安装

由于 ModuleInfo 名称创建后会变更,可通过标签定位资源,查看插件状态和版本:

kubectl get moduleinfo -l cpaas.io/module-name=logclickhouse
NAME                                             CLUSTER         MODULE      DISPLAY_NAME   STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
global-e671599464a5b1717732c5ba36079795          global          logclickhouse   logclickhouse      Running   v4.0.12          v4.0.12           v4.0.12

字段说明:

  • NAME:ModuleInfo 资源名称
  • CLUSTER:插件安装的集群
  • MODULE:插件名称
  • DISPLAY_NAME:插件显示名称
  • STATUS:安装状态,Running 表示安装成功且运行中
  • TARGET_VERSION:目标安装版本
  • CURRENT_VERSION:安装前版本
  • NEW_VERSION:可安装的最新版本

安装 Alauda Container Platform Log Collector 插件

  1. 进入 应用商店管理 > 集群插件,选择目标集群。

  2. 插件 页签,点击 Alauda Container Platform Log Collector 右侧操作按钮 > 安装

  3. 选择 存储集群(已安装 Alauda Container Platform Log Storage 的集群),点击 选择/取消选择 日志类型,设置集群内日志采集范围。

  4. 点击 安装

通过 YAML 安装 Alauda Container Platform Log Collector 插件

1. 检查可用版本

确保插件已发布,可在 global 集群检查 ModulePlugin 和 ModuleConfig 资源:


# kubectl get moduleplugin | grep logagent
logagent                       30h
# kubectl get moduleconfig | grep logagent
logagent-v4.1.0                30h

表示集群中存在 ModulePlugin logagent,且版本 v4.1.0 已发布。

2. 创建 ModuleInfo

创建 ModuleInfo 资源安装插件,示例无配置参数:

apiVersion: cluster.alauda.io/v1alpha1
kind: ModuleInfo
metadata:
  annotations:
    cpaas.io/display-name: logagent
    cpaas.io/module-name: '{"en": "Alauda Container Platform Log Collector", "zh": "Alauda Container Platform Log Collector"}'
  labels:
    cpaas.io/cluster-name: go
    cpaas.io/module-name: logagent
    cpaas.io/module-type: plugin
    cpaas.io/product: Platform-Center
    logcenter.plugins.cpaas.io/cluster: go
  name: <cluster>-log-agent
spec:
  config:
    crossClusterDependency:
      logcenter: go
      logclickhouse: null
    dataSource:
      audit: true
      event: true
      kubernetes: true
      platform: false
      system: false
      workload: true
    storage:
      type: Elasticsearch
  version: v4.1.0

YAML 字段说明(Log Collector):

字段路径说明
metadata.annotations.cpaas.io/display-name插件显示名称。
metadata.annotations.cpaas.io/module-name插件国际化名称 JSON 字符串。
metadata.labels.cpaas.io/cluster-name插件安装的目标集群。
metadata.labels.cpaas.io/module-name必须为 logagent
metadata.labels.cpaas.io/module-type必须为 plugin
metadata.labels.cpaas.io/product产品标识,通常为 Platform-Center
metadata.labels.logcenter.plugins.cpaas.io/cluster日志推送的存储集群名称。
metadata.name临时 ModuleInfo 名称,平台创建后会重命名。
spec.config.crossClusterDependency.logcenter基于 Elasticsearch 的日志存储集群名称。
spec.config.crossClusterDependency.logclickhouse使用 Elasticsearch 存储时设为 null,否则设为 ClickHouse 集群名称。
spec.config.dataSource.audit是否采集审计日志。
spec.config.dataSource.event是否采集事件日志。
spec.config.dataSource.kubernetes是否采集 Kubernetes 日志。
spec.config.dataSource.platform是否采集平台日志。
spec.config.dataSource.system是否采集系统日志。
spec.config.dataSource.workload是否采集业务日志。
spec.config.storage.type存储类型,ElasticsearchClickhouse
spec.version插件安装版本。

3. 验证安装

由于 ModuleInfo 名称创建后会变更,可通过标签定位资源,查看插件状态和版本:

kubectl get moduleinfo -l cpaas.io/module-name=logagent
NAME                                             CLUSTER         MODULE      DISPLAY_NAME   STATUS    TARGET_VERSION   CURRENT_VERSION   NEW_VERSION
global-e671599464a5b1717732c5ba36079795          global          logagent   logagent      Running   v4.0.12          v4.0.12           v4.0.12