5种Docker日志最佳实践

发布时间:2022-07-23 15:51:02 作者:讨厌网络广告 阅读量:9096

译者注:微服务和容器很好地结合了,但是它们的结合让日志记录也变成了一个难题。作者在本文描述了一些因素,在设置监控的时候是需要考虑的。以下为译文

在过去的几年中,容器已经成为IT领域的一个重要话题,尤其是在DevOps领域。简单地说,当从一个环境迁移到另一个环境时,容器提供了一种简单且可扩展的方法可以运行软件。

容器是通过在一个包中提供完整的运行环境实现的,其中就包括了应用程序,所有的依赖项,库,其它二进制文件以及运行时所需的配置文件。

与容器紧密结合的是微服务,它代表了开发应用程序的一种更灵活的方式。微服务体系结构将应用程序构建为一组松耦合的服务,这些服务通过处理离散业务功能的API连接起来。微服务主要为应用程序开发提供了一种“分而治之”的方法,而不是一个大型的单一代码库。

Docker在容器的基础架构领域是处于世界领先地位的,它是一个部署容器级软件应用的平台。容器的真正价值在于它们允许团队动态地启动一个完整的运行环境。Docker可以说是让企业采用微服务的最具影响力的平台。

类似于虚拟机通过向来自一个服务器的终端用户提供一个操作系统的多个实例来简化软件开发和测试,容器在应用程序和主机操作系统之间添加了一个额外的抽象层。最大的不同是,容器不需要管理程序,只运行操作系统的一个实例;总的来说,这等同于内存更少,运行时间更快。

与开发任何应用程序一样,日志记录是过程的中心部分,在出现问题时尤其有用。但是,在集装箱化应用程序的世界里,与传统应用程序相比,它是不同的。日志Docker实际上意味着不仅记录应用程序和应用程序 
主机操作系统,以及Docker服务。在处理多码应用程序时,有许多日志记录技术和方法可以记住。我们将在下面详细介绍前五种最佳实践。

基于应用程序的日志记录

在基于应用程序的方法中,容器内的应用程序使用日志框架来处理日志记录过程。例如,某个Java应用程序可能会使用Log4j 2来对日志文件格式化,然后发送到远程服务器,并完全绕过Docker环境和操作系统。

虽然基于应用程序的日志记录使开发人员对日志事件有了最大的控制权,但是这种方法也会在应用程序过程中产生大量的消耗。这种方法对于那些工作在传统应用程序环境中的人来说可能是有用的,因为它允许开发人员继续使用应用程序的日志框架(例如Log4j 2)而不需要向主机添加日志功能。

Logging Docker实际上意味着不仅需要记录应用程序和主机操作系统,还包括了Docker服务。

使用数据卷

容器本质上是临时的,这意味着如果容器关闭了,那么容器内的任何文件最终都会丢失。相反,容器必须将日志事件转发到集中式日志记录服务(比如Loggly),或者将日志事件存储在数据卷中。数据卷的定义为“容器内的一个标记目录,该目录用来保存持久或共享的数据”。

使用数据卷来记录事件的好处是,由于它们链接到主机上的一个目录,所以日志数据仍然存在,并且可以与其它容器共享。这种方法的优点是它减少了在容器失败或关闭时丢失数据的可能性。在这里可以找到关于在Ubuntu中设置Docker数据卷的说明。

Docker日志驱动

在Docker中进行日志记录的第三种方法是使用平台的日志驱动程序将日志事件转发给在主机上运行的syslog实例。Docker日志驱动程序直接从容器的stdout和stderr输出里面读取日志事件;这就消除了从日志文件中读取和写入的需要,最终也会稍微改善性能。

然而,使用Docker日志驱动程序也有一些缺点:

  1. 它不允许进行日志解析,只允许进行日志转发。

  2. Docker日志命令只与日志驱动程序JSON文件一起工作。

  3. 当TCP服务器不可访问时,容器就会终止。

这里可以找到为Docker配置默认日志驱动程序的说明。

容器专用日志

这种方法的主要优点是允许在Docker环境中完全地管理日志事件。由于专用的日志容器可以从其他容器收集日志事件,聚合它们,然后将事件存储或转发到第三方服务,这种方法消除了对主机的依赖。

专用日志容器的其它优点是:

  1. 自动收集、监视和分析日志事件。

  2. 在没有配置的情况下自动缩放日志事件。

  3. 通过多个日志事件、stats和Docker API数据流来检索日志。

Sidecar方法

Sidecars已经成为管理微服务架构的流行方法。Sidecar的想法来自于类似摩托车的sidecar是如何附着在摩托车上的。引用一个消息源,“Sidecar作为第二个过程在你的服务旁边运行,并通过类似于HTTP上的REST-like API 这样一个同类接口提供了’平台基础设施’的特性。”

从日志记录的角度来看,Sidecar方法的优点是每个容器都与它自己的日志容器有关(应用程序容器保存日志事件和日志容器标记,然后像Loggly那样将它们转发到日志管理系统)。

 


 

Sidecar方法对于大型部署来说尤其有用,因为这些部署需要有更专门的日志信息和自定义标记。不过,建立Sidecar非常复杂,而且难度也很大。

***本网站图片,文字之类版权申明,因为网站可以由注册用户自行上传图片或文字,本网站无法鉴别所上传图片或文字的知识版权,如果侵犯,请及时通知我们,本网站将在第一时间及时删除。

我要评论

网友评论


评论时间:2024-04-01 21:25:02

2.高可靠性租服务器是干什么用的 游戏云主机可以做什么 .高可靠性


评论时间:2023-04-27 03:25:01

客户机型服务器(域名不用虚拟主机能用吗 简虚拟主机服务器系统 户机型服务器(简称客户机)是以客户端程序为核心的服务器,通常用于解决一些特殊的业务问题


评论时间:2023-03-13 06:25:01

2.选云主机主要干什么的 择合适的虚拟主机能当电脑使用吗 合适的浏览器


评论时间:2023-02-08 12:25:01

VPS(Power Switch)是一种基于TCP/IP协议的远程通信平台,通过该协议可以将不同地永久的云主机 点或系统间建立起实时双向传输关系虚拟主机购买价格 过该协议可以将不同地点或系统间建立起实时双向传输关系


评论时间:2022-08-30 09:25:01

对于不游戏服务器租用多少钱一月 同的行业来说服务器购买方法 业来说,其应用场景有所不同,因此选择时必须结合具体情况具体分析

最新文章

 2023-12-25 22:44:35   admin

活动发布区版规

 2023-05-27 22:03:52   御风而行

容器、无服务器、虚拟机:安全性差...

 2023-05-27 19:08:41   小绵羊0123

科技巨头布局云端 服务器 网络硬...

 2023-05-27 18:17:46   姐姐的跟屁虫

钉钉因系统访问流量激增,宕机1小...

热门阅读

 2022-07-23 00:34:02   freeatom

常见ftp命令 FTP命令使用详...

 2022-07-21 02:17:02   ares

双硬盘组建Raid0磁盘阵列图文...

 2022-07-20 06:17:02   mankeung123

用友软件客户端连接不上服务器的解...

 2022-07-23 00:51:02   antonfxb

WebService实例

 2022-07-13 05:38:02   苯小孩

开发、运维不可不看的Linux调...

 2022-07-20 18:51:02   nightstone

如何使用Charles抓取Web...

随机文章

 2022-01-28 05:38:03   fxdfbl

基于IP的虚拟主机配置的三种方法

 2022-03-08 05:38:02   ffffdsafda

添加DFS复制组

 2022-07-04 05:38:02   csf1906

20款开发运维必备的顶级工具,速...

 2022-07-13 05:38:02   苯小孩

开发、运维不可不看的Linux调...

 2022-07-19 02:00:05   zldxgz8888

智慧医疗是什么,未来智慧医疗的新...

 2022-07-19 03:17:02   love60

常用的9款Oracle DBA管...

热评文章

 2022-07-19 20:17:02   dengyu0429

linux vi使用及详细介绍

 2022-07-20 01:00:05   激动的舌头

Linux视频教程:用户管理命令...

 2022-07-21 20:51:02   jessica-an

创建本地FTP站点

 2022-02-07 05:38:03   jasonkidd

WEB服务器配置详解

 2022-07-20 04:51:02   wolfssss

ACL权限-默认与递归(4)

 2022-07-22 15:00:05   淡水珊瑚

Linux下 Samba Ser...
全球云服务器
Catfish(鲶鱼) Blog V 4.7.3