日志
本页包含一些关于日志的常见问题。
- 如何将日志存储改为外部 Elasticsearch 并关闭内部 Elasticsearch
- 如何在启用 X-Pack Security 的情况下将日志存储改为 Elasticsearch
- 如何修改日志数据保留期限
- 无法使用工具箱找到某些节点上工作负载的日志
- 工具箱中的日志查询页面在加载时卡住
- 工具箱显示今天没有日志记录
- 在工具箱中查看日志时,报告内部服务器错误
- 如何让 KubeSphere 只收集指定工作负载的日志
- 在查看容器实时日志的时候,控制台上看到的实时日志要比 kubectl log -f xxx 看到的少
如何将日志存储改为外部 Elasticsearch 并关闭内部 Elasticsearch
如果您使用的是 KubeSphere 内部的 Elasticsearch,并且想把它改成您的外部 Elasticsearch,请按照以下步骤操作。如果您还没有启用日志系统,请参考 KubeSphere 日志系统直接设置外部 Elasticsearch。
-
首先,请执行以下命令更新 KubeKey 配置:
kubectl edit cc -n kubesphere-system ks-installer
-
将
es.elasticsearchDataXXX
、es.elasticsearchMasterXXX
和status.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 ...
-
重新运行
ks-installer
。kubectl rollout restart deploy -n kubesphere-system ks-installer
-
运行以下命令删除内部 Elasticsearch,请确认您已备份内部 Elasticsearch 中的数据。
helm uninstall -n kubesphere-logging-system elasticsearch-logging
-
如果启用了 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
。
-
执行以下命令:
kubectl edit cc -n kubesphere-system ks-installer
-
将
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 ...
-
重新运行
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 分钟左右会返回一次数据,比较慢
- 未开启‘实时查看’时看到的末尾部分,在实时查看时,被划分在下次返回的部分中,现象看起来像是日志缺失
反馈
这篇文章对您有帮助吗?
通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。