Docker 日志的5个最佳实践

本文讲的是Docker 日志的5个最佳实践【编者的话】微服务和容器之间契合得很好,但日志记录却成了个问题。设置监控时必须要考虑到这个问题。

【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。

过去的几年中,容器已经成为IT业界的一大热门话题,尤其是在DevOps方面。简单来说,容器提供了简单可扩展的可靠方案,来解决在不同环境中运行软件的问题。

容器 将整个运行时环境打包,其中包括应用程序、依赖、代码库、二进制文件以及配置文件。

微服务与容器密切相关,它提供了更为灵活的应用开发方式。 微服务构架 下,一个应用程序被分为许多个松散的耦合服务,这些服务通过功能性的API相连接,而这些API分别处理不同的业务功能。没有庞大的代码库,微服务提供了一个“分而治之”的开发思路。

容器化应用软件部署平台 Docker ,是容器基础设施业界的领头羊。容器的真正价值在于,团队可以在进行任务的同时开启一个运行时环境。在将微服务向企业的推广中,Docker或许是当今最有影响力的平台。

通过向终端用户提供一个操作系统的多个实例,虚拟机简化了软件开发和测试。相似的,容器在应用和主机操作系统之间添加了一个虚拟层。两者之间的差别在于,容器仅运行一个操作系统实例,不需要系统管理程序。总之,容器所需要的内存和运行时间就大大减少了。

对所有的应用开发过程来说,日志记录都是一个核心部分,尤其是出错的时候特别有用。但容器化应用与传统应用的日志记录是不同的。对Docker来说,好的日志不仅要记录下应用和主机操作系统,还要记录Docker服务。目前,有很多种针对Docker化应用的日志技术和方法,以下是其中最佳的5个实践。

基于应用的日志记录

此种日志记录方式中,容器内的应用程序采用日志记录框架来处理日志记录过程。例如,一个Java应用程序可能采用Log4j2格式,将日志文件发送到远程服务器上,而绕开了Docker环境和操作系统。

尽管基于应用的日志记录方式将记录事件的最大控制权交给了开发者,但也对应用带来许多开销。这种方式对传统的应用环境来说更为适用,应为它允许开发者继续使用日志记录框架(比如Log4j2),无需再向主机添加日志功能。

使用数据卷

容器在属性上说,是短暂的,即容器中的所有文件都会随着容器的关闭而丢失。而在日志记录的问题上,容器要么将事件记录在一个集中的日志服务(比如 Loggly ),要么将时间记录到 数据卷 中。数据卷的定义是“容器内的标记目录,用于保存持久数据或共享数据”。

使用数据卷的优点在于,由于它跟主机目录关联,日志数据是持久的,且可以与其他容器共享。在容器发生故障或者关闭的时候,这种日志记录方式降低了丢失数据的可能性。 点击这里 可以查看在Ubuntu设置Docker数据卷的说明。

Docker日志驱动

第三种方式就是使用Docker平台的日志驱动,将日志事件记录在主机的系统日志实例上。Docker日志驱动直接从容器的标准输出和标准错误输出中读取日志事件;这种方式避免了对日志文件的读写,进而转化为性能增益。

但是,使用Docker日志驱动有以下 几个缺点
  1. 不允许对日志进行解析,只能转发。
  2. Docker日志命令只对日志驱动JSON文件有效。
  3. 链接不到TCP服务器时,容器终止。

日志专用容器

这种方式最大的优点在于,允许日志事件完全在Docker环境中管理。日志专用容器可以收集其他容器的日志事件,将它们聚在一起,进行存储或转发到第三方服务。这种做法降低了对主机的依赖。

日志专用容器还有以下 优点
  1. 自动采集、监控和分析日志事件。
  2. 无需配置,自动对日志事件进行评分。
  3. 可以通过日志事件、数据和Docker API数据等多方面数据进行日志检索。

Sidecar方法

Sidecar是目前较为流行的管理微服务架构的方法。它的概念来自挎斗摩托车的挎斗。  “Sidecar和服务并行,通过REST这种API连接到HTTP提供‘平台基础设施功能’”。

从日志记录的角度看,sidecar方法的优点在于每个容器都与自己的日志记录容器相连接(应用容器保存了日志事件,日志记录容器对其进行分类并转发到像Loggly这种日志记录管理系统中)。
0.png

sidecar方法尤其适用于较大规模的部署,记录信息更加专业化,允许自定义分类。不过sidecar的设置也相当复杂。

原文链接:5 Docker Logging Best Practices(翻译:马远征)

原文发布时间为:2017-08-28

本文作者:夕口夕

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:Docker 日志的5个最佳实践

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/224544

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。