关于kubernetes的日志分好几种,针对kubernetes本身而言有三种:
1、资源运行时的event事件。比如在k8s集群中创建pod之后,可以通过 kubectl describe pod 命令查看pod的详细信息。
2、容器中运行的应用程序自身产生的日志,比如tomcat、nginx、php的运行日志。比如kubectl logs redis-master-bobr0。这也是官方以及网上多数文章介绍的部分。
3、k8s各组件的服务日志,比如 systemctl status kubelet。
容器日志收集的方式通常有以下几种:
1、容器外收集。将宿主机的目录挂载为容器的日志目录,然后在宿主机上收集。
2、容器内收集。在容器内运行一个后台日志收集服务。
3、单独运行日志容器。单独运行一个容器提供共享日志卷,在日志容器中收集日志。
4、网络收集。容器内应用将日志直接发送到日志中心,比如java程序可以使用log4j 2转换日志格式并发送到远端。
5、通过修改docker的--log-driver。可以利用不同的driver把日志输出到不同地方,将log-driver设置为syslog、fluentd、splunk等日志收集服务,然后发送到远端。
从docker1.8起docker内置了fluentd log driver,docker默认的LogDriver是json-driver,将日志以JSON文件的方式存储。
#docker info |grep 'Logging Driver' Logging Driver: json-file |
Docker支持的LogDriver具体来说有以下几种,详情请参考docker官网。
Driver Description none No logs will be available for the container and docker logs will not return any output. json-file The logs are formatted as JSON. The default logging driver for Docker. syslog Writes logging messages to the syslog facility. The syslog daemon must be running on the host machine. journald Writes log messages to journald. The journald daemon must be running on the host machine. gelf Writes log messages to a Graylog Extended Log Format (GELF) endpoint such as Graylog or Logstash. fluentd Writes log messages to fluentd (forward input). The fluentd daemon must be running on the host machine. awslogs Writes log messages to Amazon CloudWatch Logs. splunk Writes log messages to splunk using the HTTP Event Collector. etwlogs Writes log messages as Event Tracing for Windows (ETW) events. Only available on Windows platforms. gcplogs Writes log messages to Google Cloud Platform (GCP) Logging. nats NATS logging driver for Docker. Publishes log entries to a NATS server. |
容器输出到控制台的日志,都会以 *-json.log 的命名方式保存在 /var/lib/docker/containers/ 目录下。
kubernetes 官方推荐的方案是 Flunetd+ElasticSearch+Logstash。网上常见的日志收集器还有filebeat、logspout等。
<iframe id="iframe_0.38376760738901794" style="margin: 0px; padding: 0px; border-style: none; border-width: initial; width: 500px; height: 350px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22https://kubernetes.io/images/docs/user-guide/logging/logging-with-streaming-sidecar.png?_=6410249%22%20style=%22border:none;max-width:730px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.38376760738901794',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe>
在每个node上各运行一个Flunetd容器,对本节点 /var/log 和 /var/lib/docker/containers/ 两个目录下的日志进行采集,然后汇总到elasticsearch集群,最后通过kibana展示。
为了让fluentd在每个node上运行一份,这里有几种不同的方法:
1、直接在Node宿主机上安装fluentd。这种方法适合elk都安装在物理机上的场景。
2、利用kubelet的–config参数,为每个node分别运行一个静态fluentd pod。
3、利用daemonset来让fluentd分别在每个node上运行一个pod。(daemontset是k8s的一种资源对象)
官方使用的是第三种方式,将ElesticSearch和kibana都运行在k8s集群中,然后用daemonset运行fluentd。具体实现过程github上有示例文件,这里不做详细描述。
除了容器应用的日志之外,还有一个重要的部分就是,程序自身的日志。一般情况下,会将程序日志写到固定目录文件、或者写入到中间件保存和读取。
这部分日志的处理,可以直接通过日志文件收集、或者是让开发程序的同学修改程序把日志输出到中间件或者是直接输出到elk上。
http://www.cnblogs.com/keithtt/p/6410249.html
相关推荐
总的来说,Kubernetes日志收集解决方案需要综合考虑日志来源、收集方式、存储架构以及数据分析需求。选择合适的工具和策略,以适应不同的业务场景,确保日志管理的有效性和效率。在实施过程中,应充分评估每个组件的...
Kubernetes日志采集与分析是当前容器化部署与运维中非常关键的一个环节,由于Kubernetes自身的分布式特性,使得日志管理变得更加复杂。本文分享了关于Kubernetes日志管理的最佳实践,由阿里云日志服务技术专家元乙...
在构建Kubernetes日志平台的过程中,我们面临的关键挑战和最佳实践包括日志收集、存储、检索和分析等多个方面。以下是一些重要的知识点: 1. **日志收集**:日志通常通过标准输出(Stdout)或事件日志系统(如Event...
Kubernetes:Kubernetes监控与日志收集.docx
KR Kr是Kubernetes开发人员用来快速收集和汇总由Kubernetes集群中各个Pod生成的容器错误日志条目的工具。 这些日志条目可通过kubectl逐个(逐个)访问。 Kr收集,过滤和汇总错误日志条目。 它的主要用例是在开发阶段...
【Kubernetes日志采集】 Kubernetes日志采集是管理和处理Kubernetes集群中应用程序日志的关键环节。传统的命令行工具如`kubectl logs`虽然方便,但仅限于查看标准输出,无法满足日志持久化和多用途的需求。为了解决...
一、Kubernetes日志概述 在Kubernetes中,每个Pod都包含一个或多个容器,每个容器都有自己的日志文件。Kubernetes不直接管理这些日志,而是依赖于底层的基础架构(如Docker)来提供日志。因此,要实现全面的日志...
本资源“Kubernetes离线部署+EFK日志收集资源.rar”提供了在没有互联网连接的情况下安装和配置Kubernetes集群的方案,以及整合EFK(Elasticsearch、Fluentd、Kibana)日志收集系统的方法。下面将详细解释这些知识点...
测井作业员基于Fluentd和Fluent位的Kubernetes日志记录运算符。 记录操作员可自动执行Kubernetes记录管道的部署和配置。 操作员在每个节点上部署和配置Fluent Bit守护程序集,以从节点文件系统收集容器和应用程序...
在IT行业中,日志管理是监控和排查问题的关键环节,而ELK(Elasticsearch、Logstash、Kibana)栈则是广泛使用的日志收集、分析和可视化的工具。在这个场景下,我们将讨论如何利用Kubernetes(简称k8s)这一强大的...
本文将深入探讨如何使用Fluentd作为Kubernetes的日志收集代理,实现高效且灵活的日志记录。 Fluentd是一款开源的数据收集器,广泛应用于日志管理和聚合。在Kubernetes中,Fluentd常与Elasticsearch、Logstash或...
Pod连接节点的/ var / log / containers文件夹,并通过收集日志添加到mongodb中。TheYkk K8S Logger该工具通过deamonset在K8s中的每个节点上运行Pod。 Pod连接节点的/ var / log / containers文件夹,并通过收集日志...
【Kubernetes日志观察器——kubernetes-log-watcher】 在现代云原生环境中,Kubernetes(K8s)已经成为容器编排的事实标准。随着越来越多的应用程序在Kubernetes集群上运行,管理和监控这些应用程序的日志变得至关...
值得注意的是,Kubernetes不会自动为集群中的容器执行日志收集任务,因此管理员必须在部署集群时提前规划和实现日志方案。日志收集方案的选择取决于多种因素,包括日志的重要程度、成本考虑、预期的查询需求以及现有...
通过阿里云开源插件Log-Pilot,你可以构建起一个强大的Kubernetes日志管理系统,实现对容器内应用日志的实时监控和分析,从而提升运维效率和故障排查能力。结合提供的详细文档和笔记,你可以逐步掌握这个工具的使用...
6. **监控与日志**:如何集成Prometheus、Grafana等工具进行集群和应用的性能监控,以及使用Elasticsearch、Fluentd和Kibana(EFK堆栈)进行日志收集和分析。 7. **故障排查与最佳实践**:常见问题的排查方法,如...
10. **监控与日志**:Kubernetes集成Prometheus、Heapster和Elasticsearch等工具,实现集群的性能监控和日志收集,帮助开发者及时发现和解决问题。 11. **持续集成/持续部署(CI/CD)**:Kubernetes与Jenkins、...