5 个 Docker 日志记录最佳实践

微服务容器很好地融合在一起,但它们使日志记录成为一项挑战。设置监控时请牢记这些注意事项。

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

容器通过在一个包中提供整个运行时环境来做到这一点,其中包括应用程序,以及运行它所需的所有依赖项、库和其他二进制文件以及配置文件。

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

在容器基础设施领域引领 潮流的是 Docker,一个用于部署容器化软件应用程序的平台。容器的真正价值在于,它们允许团队即时启动完整的运行时环境。Docker 可以说是当今让企业采用微服务的最有影响力的平台。

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

与开发任何应用程序一样,日志记录是流程的核心部分,在出现问题时特别有用。但是登录容器化应用程序的世界与使用传统应用程序不同。有效地记录 Docker 意味着不仅记录应用程序和主机操作系统,还记录 Docker 服务。在使用 ockerized 应用程序时,需要牢记许多日志记录技术和方法。

我们在下面更详细地概述了前五个最佳实践

基于应用程序的日志记录

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

虽然基于应用程序的日志记录为开发人员提供了对日志记录事件的最大控制权,但该方法也会在应用程序进程上产生大量开销。这种方法可能对那些在更传统的应用程序环境中工作的人有用,因为它允许开发人员继续使用应用程序的日志框架(即 Log4j 2),而无需向主机添加日志功能。

有效地记录 Docker 意味着不仅记录应用程序和主机操作系统,还记录 Docker 服务。

使用数据卷

容器本质上是瞬态的,这意味着如果容器关闭,容器内的任何文件都将丢失。相反,容器必须要么将日志事件转发到集中式日志服务(例如Loggly),要么将日志事件存储在数据卷中。数据卷被定义为“容器内的标记目录,用于保存持久性或共同共享的数据”。

使用数据卷记录事件的优势在于,由于它们链接到主机上的目录,因此日志数据会持续存在并且可以与其他容器共享。这种方法的优点是它降低了在容器发生故障或关闭时丢失数据的可能性。可以在此处找到Ubuntu 中设置 Docker 数据卷的说明 。

Docker 日志记录驱动程序

Docker 中记录事件的第三种方法是使用平台的日志记录驱动程序将日志事件转发到主机上运行的 syslog 实例。Docker 日志驱动程序直接从容器的 stdoutstderr 输出中读取日志事件;这消除了读取和写入日志文件的需要,从而提高了性能。

但是,使用 Docker 日志记录驱动程序有一些缺点:

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

  2. Docker 日志命令仅适用于日志驱动程序 JSON 文件。

  3. 当 TCP 服务器无法访问时,容器会终止。

可以在此处找到Docker 配置默认日志记录驱动程序的说明。

专用日志容器

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

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

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

  2. 无需配置即可自动扩展您的日志事件。

  3. 通过多个日志事件、统计信息和 Docker API 数据流检索日志。

边车方法

Sidecar 已成为管理微服务架构的一种流行方法。边车的概念来自摩托车边车如何连接到摩托车的类比。引用一个消息来源,“sidecar 作为第二个进程与您的服务一起运行,并提供通过同质接口(例如基于 HTTP 的类似 RESTAPI)公开的‘平台基础设施特性’。”

从日志的角度来看,sidecar 方法的优点是每个容器都链接到它自己的日志容器(应用程序容器保存日志事件和日志容器标签,并将它们转发到像 Loggly 这样的日志管理系统)。

在这里插入图片描述

Sidecar 方法对于需要更专业的日志信息和自定义标签的大型部署特别有用。但是,设置边车更加复杂且难以扩展。

知识星球

星球地址:https://t.zsxq.com/03MJM7YfI

关注公众号「程序员小乔」

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码一行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值