安装

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

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

  2. 带有 Clickhouse 插件的 Alauda Container Platform Log Storage 需要 Clickhouse operator;在安装该插件之前,请确保该 Clickhouse operator 已上传到集群中。

安装规划

Alauda Container Platform Log Storage 插件可以安装在任意集群中,并且可以选择任意集群的日志存储组件用于日志采集,以对接存储数据。

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

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

  • 优先将日志集中到单个日志存储集群中。如果日志量超过最大容量阈值,则将日志分布到多个存储集群中。

  • 每个网络区域至少部署一个日志存储实例,以便在本地聚合日志,尽量减少跨数据中心的公网流量(这会带来较高的成本和延迟)。

  • 为日志存储专门预留节点,避免与其他应用或平台组件共用节点。日志存储需要较高的 I/O 吞吐量,可能会受到干扰影响。

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

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

  1. 导航到 App Store Management > Cluster Plugin,并选择目标集群。

  2. Plugins 选项卡中,单击 Alauda Container Platform Log Storage with ElasticSearch 右侧的操作按钮 > Install

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

    ParameterDescription
    Connect External Elasticsearch保持关闭,以在平台内部安装日志存储插件。
    Component installation SettingsLocalVolume:本地存储,日志数据将存储在所选节点的本地存储路径中。此方式的优点是日志组件直接绑定到本地存储,无需通过网络访问存储,存储性能更好。
    StorageClass:使用存储类动态创建存储资源来存储日志数据。此方式的优点是灵活性更高;当整个集群定义了多个存储类时,管理员可以根据使用场景为日志组件选择对应的存储类,从而降低主机故障对存储的影响。不过,StorageClass 的性能可能会受到网络带宽和延迟等因素的影响,并且依赖存储后端提供的冗余机制来实现存储高可用。
    Retention Period日志、事件和审计数据在集群中可保留的最长时间。超过保留期限的数据将自动清理。
    Tip:您可以备份需要长期保留的数据。如需帮助,请联系技术支持人员。
  4. 单击 Install

通过 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 字段参考:

Field pathDescription
metadata.labels.cpaas.io/cluster-name安装该插件的目标集群名称。
metadata.name临时 ModuleInfo 名称;平台会在创建后对其重命名。
spec.config.clusterView.isPrivatecluster view 的可见性设置。
spec.config.components.elasticsearch.address外部 Elasticsearch 地址;留空则使用平台安装的 Elasticsearch。
spec.config.components.elasticsearch.basicAuthSecretName外部 Elasticsearch basic auth 的 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 主从通信端口,默认 2888。
spec.config.components.kafka.zkPortZookeeper 客户端端口,默认 2181。
spec.config.components.kibana.install是否安装 Kibana;Kibana 已弃用,请设为 false。
spec.config.components.storageClassConfig.name对于 LocalVolume,通常为 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. 导航到 App Store Management > Cluster Plugin,并选择目标集群。

  2. Plugins 选项卡中,单击 Alauda Container Platform Log Storage with Clickhouse 右侧的操作按钮 > Install

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

    ParameterDescription
    Component installation SettingsLocalVolume:本地存储,日志数据将存储在所选节点的本地存储路径中。此方式的优点是日志组件直接绑定到本地存储,无需通过网络访问存储,存储性能更好。
    StorageClass:使用存储类动态创建存储资源来存储日志数据。此方式的优点是灵活性更高;当整个集群定义了多个存储类时,管理员可以根据使用场景为日志组件选择对应的存储类,从而降低主机故障对存储的影响。不过,StorageClass 的性能可能会受到网络带宽和延迟等因素的影响,并且依赖存储后端提供的冗余机制来实现存储高可用。
    Retention Period日志、事件和审计数据在集群中可保留的最长时间。超过保留期限的数据将自动清理。
    Tip:您可以备份需要长期保留的数据。如需帮助,请联系技术支持人员。
  4. 单击 Install

通过 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):

Field pathDescription
metadata.nameModuleInfo 名称。推荐格式:<target-cluster>-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.name当 type 为 StorageClass 时的 StorageClass 名称;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. 导航到 App Store Management > Cluster Plugin,并选择目标集群。

  2. Plugins 选项卡中,单击 Alauda Container Platform Log Collector 右侧的操作按钮 > Install

  3. 选择 Storage Cluster(已安装 Alauda Container Platform Log Storage 的集群),然后单击 Select/Deselect 日志类型,以设置集群中的日志采集范围。

  4. 单击 Install

通过 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):

Field pathDescription
metadata.annotations.cpaas.io/display-name插件显示名称。
metadata.annotations.cpaas.io/module-name插件 i18n 名称的 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.typeElasticsearchClickhouse
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