日志

日志查询分析

在运维中心的日志查询分析图表中,您可以在登录账号的权限范围内查看其标准输出(stdout)日志,包括系统日志、产品日志、Kubernetes 日志和应用日志。通过这些日志,您可以深入了解资源的运行情况。

  • 系统日志:来自主机节点的日志,例如:dmesg、syslog/messages、secure 等。
  • 产品日志:来自平台自身组件以及与平台集成的第三方组件的日志,例如:Container-Platform、Platform-Center、DevOps、Service-Mesh 等。
  • Kubernetes 日志:来自 Kubernetes 容器编排相关组件的日志,以及 kubelet、kubeproxy 和 docker 生成的日志,例如:docker、kube-apiserver、kube-controller-manager、etcd 等。
  • 应用日志:来自业务应用的日志,包括文件日志和标准输出日志。

日志查询条件支持筛选指定时间范围内的日志(可选择或自定义),并通过柱状图和标准输出显示查询结果。

WARNING

出于性能方面的考虑,平台一次最多显示 10,000 条日志。如果平台在一段时间内的日志量过大,请缩小查询时间范围,分阶段查询日志。

搜索日志

  1. 在左侧导航栏中,单击 运维中心 > 日志 > 日志查询分析。

  2. 选择指定的日志类型和查询条件,输入要检索的日志内容关键字,然后单击 搜索。

TIP
  • 不同的日志类型允许选择的查询条件不同。

  • 您可以选择或输入多个查询条件标签;不同资源类型的查询条件之间是 AND 关系。某些查询条件标签支持多选;选择后请确保按下 Enter 键以提交选项。

  • 查询条件支持模糊搜索;例如,查询条件为 pod = nginx 时,可以检索 nginx-1、nginx-2 的日志。

  • 日志内容搜索条件仅用于检索日志关键字,并支持使用 AND 和 OR 参数进行关联查询。但是请注意,不要在单个查询中同时使用 AND 和 OR 参数。

  • 柱状图显示当前查询时间范围内的日志总数,以及不同时间点的日志数量。单击图表中的柱状图,可以查看该柱与下一个柱之间时间范围内的日志。

导出日志数据

页面最多可显示 10,000 条日志记录。当检索到的日志数量过多时,您可以使用日志导出功能查看最多 100 万条日志记录。

  1. 单击柱状图右上角的导出按钮,并在弹出的导出日志对话框中配置以下参数。

    • 范围:日志的导出范围,可选择当前页面或全部结果。

      • 当前页面:仅导出当前页面上的查询结果,最多 1,000 条。
      • 全部结果:导出符合当前查询条件的所有日志数据,最多 100 万条。
    • 字段:日志的显示字段。您可以单击字段名称旁边的复选框,选择要在导出的日志文件中显示的字段信息。

      注意:不同日志类型可选择的显示字段不同,请根据实际需求进行选择。

    • 格式:日志文件的导出格式,支持 txt 或 csv。平台将以 gzip 压缩格式导出。

  2. 单击导出,浏览器将直接把压缩文件下载到本地计算机。

查看日志上下文

  1. 双击日志内容区域,当前对话框将显示当前日志打印时间前后各 5 条日志,帮助运维人员更好地了解资源生成当前日志的原因。

  2. 您可以设置日志上下文的显示字段或导出日志上下文。导出日志上下文时,无需选择范围;单击导出按钮后,浏览器将直接把日志上下文文件下载到本地计算机。

管理应用日志保留时间

未设置项目策略时,平台上的应用日志保留时间由安装应用所在集群中的 Alauda Container Platform Log Collector 时所选择的 Storage Cluster 上已安装的 Log Storage Plugin 的保留配置决定。存储侧的保留配置位于 PlatformLogForward.spec.clickhouse.ttl.workload(ClickHouse)中,或位于 OpenSearch 中对应的 ISM 策略中;请参阅安装。

您可以通过添加和管理项目日志策略,区分平台上 Application Logs 的保留时间。

TIP

项目策略仅适用于特定项目下的 Application Logs。设置项目策略后,该项目下所有应用日志的保留时间都将遵循项目策略。

INFO

如果存储集群使用 ClickHouse 且启用了 Cold and Hot Separate,项目级别的保留配置可以分别设置热数据和冷数据的保留时间。有关当前标签集和示例,请参阅如何设置项目冷数据的保留时间。

平台管理员设置保留策略

  1. 在左侧导航栏中,单击运维中心 > 日志 > 策略管理。

  2. 单击添加项目策略。

  3. 单击项目下拉框并选择项目。

  4. 设置日志保留时间。

    • 使用计数器两侧的 -/+按钮减少/增加日志保留天数,或直接在计数器中输入数值。平台允许设置 1 至 30 天的保留时间范围。
    • 如果输入值为小数,则会向上取整为整数;如果输入值小于 1,则会向上取整为 1,且 -按钮不可点击;如果输入值超过 30,则会向下取整为 30,且 +按钮不可点击。
  5. 单击添加。

项目管理员设置保留策略

  1. 进入当前项目的项目详情页面。

  2. 单击日志策略字段旁边的编辑按钮,在弹窗中启用日志策略。

  3. 设置日志保留时间。

  • 使用计数器两侧的 -/+按钮减少/增加日志保留天数,或直接在计数器中输入数值。平台允许设置 1 至 30 天的保留时间范围。
  • 如果输入值为小数,则会向上取整为整数;如果输入值小于 1,则会向上取整为 1,且 -按钮不可点击;如果输入值超过 30,则会向下取整为 30,且 +按钮不可点击。

通过 CLI 设置保留策略

  1. 登录 global 集群并执行以下命令:

    kubectl edit project <Project Name>
  2. 按照以下示例修改 yaml,保存并提交。

    apiVersion: auth.alauda.io/v1
    kind: Project
    metadata:
      annotations:
        cpaas.io/creator: mschen1@alauda.io
        cpaas.io/description: ''
        cpaas.io/display-name: ''
        cpaas.io/operator: leizhuc
        cpaas.io/project.esPolicyLastEnabledTimestamp: '2025-02-18T09:53:54Z'
        cpaas.io/updated-at: '2025-02-18T09:53:54Z'
    creationTimestamp: '2025-02-13T08:19:11Z'
    finalizers:
      - namespace
    generation: 1
    labels:
      cpaas.io/project: bookinfo
      cpaas.io/project.hotDataRetentionDays: '7' # Hot data retention under the project
      cpaas.io/project.coldDataRetentionDays: '30' # Cold data retention after transfer to S3 cold storage
      cpaas.io/project.logPolicyEnabled: 'true' # Enable project policy
      cpaas.io/project.id: '95447321'
      cpaas.io/project.level: '1'
      cpaas.io/project.parent: ''
    name: bookinfo
    ### More yaml information that is not involved in modification is omitted.

    在某些 ACP 4.2 环境中,为了兼容性,cpaas.io/project.esIndicesKeepDays 和 cpaas.io/project.esPolicyEnabled 等旧标签可能仍会共存。对于新配置,请使用上述新标签。

配置部分应用日志停止采集

如果您只需要查看集群中特定应用的实时日志,而不希望存储这些日志(采集器将丢弃相应日志),可以参考本节设置停止日志采集的范围(集群、命名空间、Pod),以便对应用日志采集进行精细化控制。

停止采集集群中的所有应用日志

您可以更新集群的 Alauda Container Platform 日志采集器的配置参数,关闭应用日志采集开关,从而统一更新该集群的日志采集范围。关闭某类日志的采集开关后,系统将停止采集当前集群中该类型的所有日志。

停止采集特定命名空间中的应用日志

您可以通过向指定命名空间添加标签 cpaas.io/log.mute=true,关闭该命名空间的日志采集开关,从而停止采集该命名空间中所有 Pod 的标准输出日志和文件日志。

可选的配置方式如下:

  • 命令行方式:登录集群中的任意控制节点后,执行以下命令更新命名空间的标签。

    kubectl label namespace <Namespace Name> cpaas.io/log.mute=true
  • 界面操作方式:在项目管理视图中更新命名空间的标签。

    1. 在项目管理视图的项目列表中,单击命名空间所在的项目名称。

    2. 在左侧导航栏中,单击命名空间。

    3. 单击需要更新标签的命名空间名称。

    4. 在详情页签中,单击标签右侧的操作按钮。

    5. 添加标签(键:cpaas.io/log.mute,值:true),或修改现有标签的值,然后单击更新。

停止采集 Pod 日志

您可以通过向指定 Pod 添加标签 cpaas.io/log.mute=true,关闭该 Pod 的日志采集开关,从而停止采集该 Pod 的标准输出日志和文件日志。

登录集群中的任意控制节点后,执行以下命令更新 Pod 的标签。

kubectl label pod <Pod Name> -n <Namespace Name> cpaas.io/log.mute=true

注意:如果 Pod 属于计算组件(Workload),您可以更新计算组件(Deployment、StatefulSet、DaemonSet、Job、CronJob)的标签,以统一更新该计算组件下所有 Pod 的标签,并且即使 Pod 重新创建,标签也不会丢失。

您可以通过以下方式更新计算组件的标签。

  1. 在容器平台产品视图中,单击顶部导航栏,切换到 Pod 所在的命名空间。

  2. 在左侧导航栏中,单击计算组件 > Pod 所属的计算组件类型。

  3. 单击要更新的计算组件右侧的操作按钮 > 更新。

  4. 单击右上角的 YAML,切换到 YAML 编辑视图。

  5. 在 spec.template.labels 字段下添加 cpaas.io/log.mute: 'true' 标签。

    示例:

    spec:
      template:
        metadata:
          namespace: tuhao-test
          creationTimestamp: null
          labels:
            app: spilo
            cpaas.io/log.mute: 'true'
            cluster-name: acid-minimal-cluster
            role: exporter
            middleware.instance/name: acid-minimal-cluster
            middleware.instance/type: PostgreSQL
  6. 单击更新。