日志

本页包含一些关于日志的常见问题。

如何将日志存储改为外部 Elasticsearch 并关闭内部 Elasticsearch

如果您使用的是 KubeSphere 内部的 Elasticsearch,并且想把它改成您的外部 Elasticsearch,请按照以下步骤操作。如果您还没有启用日志系统,请参考 KubeSphere 日志系统直接设置外部 Elasticsearch。

  1. 首先,请执行以下命令更新 KubeKey 配置:

    kubectl edit cc -n kubesphere-system ks-installer
    
  2. es.elasticsearchDataXXXes.elasticsearchMasterXXXstatus.logging 的注释取消,将 es.externalElasticsearchUrl 设置为 Elasticsearch 的地址,将 es.externalElasticsearchPort 设置为其端口号。以下示例供您参考:

    apiVersion: installer.kubesphere.io/v1alpha1
    kind: ClusterConfiguration
    metadata:
      name: ks-installer
      namespace: kubesphere-system
      ...
    spec:
      ...
      common:
        es:
          # elasticsearchDataReplicas: 1
          # elasticsearchDataVolumeSize: 20Gi
          # elasticsearchMasterReplicas: 1
          # elasticsearchMasterVolumeSize: 4Gi
          elkPrefix: logstash
          logMaxAge: 7
          externalElasticsearchUrl: <192.168.0.2>
          externalElasticsearchPort: <9200>
      ...
    status:
      ...
      # logging:
      #  enabledTime: 2020-08-10T02:05:13UTC
      #  status: enabled
      ...
    
  3. 重新运行 ks-installer

    kubectl rollout restart deploy -n kubesphere-system ks-installer
    
  4. 运行以下命令删除内部 Elasticsearch,请确认您已备份内部 Elasticsearch 中的数据。

    helm uninstall -n kubesphere-logging-system elasticsearch-logging
    

如何在启用 X-Pack Security 的情况下将日志存储改为 Elasticsearch

KubeSphere 暂不支持启用 X-Pack Security 的 Elasticsearch 集成,此功能即将推出。

如何修改日志数据保留期限

您需要更新 KubeKey 配置并重新运行 ks-installer

  1. 执行以下命令:

    kubectl edit cc -n kubesphere-system ks-installer
    
  2. status.logging 的注释取消,将 es.logMaxAge 的值设置为所需保留期限(默认为 7 天)。

    apiVersion: installer.kubesphere.io/v1alpha1
    kind: ClusterConfiguration
    metadata:
      name: ks-installer
      namespace: kubesphere-system
      ...
    spec:
      ...
      common:
        es:
          ...
          logMaxAge: <7>
      ...
    status:
      ...
      # logging:
      #  enabledTime: 2020-08-10T02:05:13UTC
      #  status: enabled
      ...
    
  3. 重新运行 ks-installer

    kubectl rollout restart deploy -n kubesphere-system ks-installer
    

无法使用工具箱找到某些节点上工作负载的日志

如果您采用多节点安装部署 KubeSphere,并且使用符号链接作为 Docker 根目录,请确保所有节点遵循完全相同的符号链接。日志代理以守护进程集的形式部署到节点上。容器日志路径的任何差异都可能导致该节点上日志收集失败。

若要找出节点上的 Docker 根目录路径,您可以运行以下命令。请确保所有节点都适用相同的值。

docker info -f '{{.DockerRootDir}}'

工具箱中的日志查询页面在加载时卡住

如果您发现日志查询页面在加载时卡住,请检查您所使用的存储系统。例如,配置不当的 NFS 存储系统可能会导致此问题。

工具箱显示今天没有日志记录

请检查您的日志存储卷是否超过了 Elasticsearch 的存储限制。如果是,请增加 Elasticsearch 的磁盘存储卷容量。

在工具箱中查看日志时,报告内部服务器错误

如果您在工具箱中看到内部服务器错误,可能有以下几个原因:

  • 网络分区
  • 无效的 Elasticsearch 主机和端口
  • Elasticsearch 健康状态为红色

如何让 KubeSphere 只收集指定工作负载的日志

KubeSphere 的日志代理由 Fluent Bit 所提供,您需要更新 Fluent Bit 配置来排除某些工作负载的日志。若要修改 Fluent Bit 输入配置,请运行以下命令:

kubectl edit input -n kubesphere-logging-system tail

更新 Input.Spec.Tail.ExcludePath 字段。例如,将路径设置为 /var/log/containers/*_kube*-system_*.log,以排除系统组件的全部日志。

有关更多信息,请参见 Fluent Bit Operator