website/content/zh/docs/faq/observability/logging.md

6.9 KiB
Raw Blame History

title keywords description linkTitle weight
日志 Kubernetes, Elasticsearch, KubeSphere, 日志 有关日志功能的常见问题。 日志 16310

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

如何将日志存储改为外部 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
    
  5. 如果启用了 Istio需要修改 Jaeger 配置。

    $ kubectl -n istio-system edit jaeger 
    ...
     options:
          es:
            index-prefix: logstash
            server-urls: http://elasticsearch-logging-data.kubesphere-logging-system.svc:9200  # 修改为外部地址
    

如何在启用 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

在查看容器实时日志的时候,控制台上看到的实时日志要比 kubectl log -f xxx 看到的少

主要有以下几个原因:

  • 当实时去查看容器日志时Kubernetes 是分 chunk 形式返回Kubernetes 大概 2 分钟左右会返回一次数据,比较慢
  • 未开启‘实时查看’时看到的末尾部分,在实时查看时,被划分在下次返回的部分中,现象看起来像是日志缺失