Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >5 种 Docker 日志最佳实践

5 种 Docker 日志最佳实践

作者头像
胡文翠
修改于 2017-08-21 09:31:21
修改于 2017-08-21 09:31:21
2.6K0
举报

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

在过去的几年中,容器已经成为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日志驱动程序也有一些缺点:

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

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

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

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

容器专用日志

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

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

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

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

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

Sidecar方法

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

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

在这里查看图片灵感

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

原文:5 Docker Logging Best Practices

作者:Jeffrey Walker

翻译:Vincent

本文系转载,如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Sidecar搭建异构平台的微服务
本文介绍Sidecar模式的特点,及其应用的场景。熟悉Native Cloud或者微服务的童鞋应该知道,在云环境下,技术栈可以是多种多样的。那么如何能够将这些异构的服务组件串联起来,成为了服务治理的一个重大课题。而Sidecar模式为服务治理,提供了一种解决方案。
Bug开发工程师
2019/05/05
2K0
使用Sidecar搭建异构平台的微服务
边车设计模式
将应用程序的组件部署到单独的流程或容器中,以提供隔离和封装。这种模式还可以使应用程序由异构组件和技术组成。
35岁程序员那些事
2020/02/24
1.4K0
日志管理与分析的十个最佳实践
这是准确管理与衡量日志记录的最高效方式;本文将带你快速了解通常如何利用Docker及容器来创建易于管理、测试及部署的软件镜像包。 过去十年来,随着分布式系统的发展,日志数据管理起来更加复杂。如今,系统中可以容纳数以千计的服务器实例或者微服务容器,而所有这些实例或容器又会生成自己的日志数据。随着以云为基础的系统快速出现并占据主导地位,由机器所生成的日志数据呈爆炸性增长。而日志管理随之成为现代化IT运营中的重要任务,为包括调试、生产监控、性能监控、支持援助与故障查找之类的许多用例提供辅助支撑。 尽管分布式系统在
CSDN技术头条
2018/02/11
1.6K0
Go微服务,第10部分:集中式日志记录
在Go微服务博客系列的这一部分中,我们将介绍基于Logrus,Docker Gelf日志驱动程序和“作为服务的日志记录” Loggly服务的Go微服务的日志记录策略。
Aaroncang
2018/07/05
2.8K0
Go微服务,第10部分:集中式日志记录
Docker容器日志管理最佳实践
Docker 引擎日志一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04)。前者一般位于 /var/log/upstart/docker.log 下,后者我们一般 通过 journalctl -u docker 来进行查看。
Criss@陈磊
2019/08/01
3.7K0
Envoy 中文指南系列:Sidecar 模式
在云环境下,技术栈可以是多种多样的。那么如何能够将这些异构的服务组件串联起来,成为了服务治理的一个重大课题。而 Sidecar 模式为服务治理,提供了一种解决方案。
米开朗基杨
2020/06/11
1.6K0
Envoy 中文指南系列:Sidecar 模式
Java日志:您需要了解的4种日志类型
日志记录是软件开发中的一个重要主题,特别是如果您需要分析生产环境中的错误和其他意外事件。实现日志记录通常很容易。但正如您可能经历过的那样,日志记录远比看起来复杂得多。这就是为什么你可以在博客上找到很多关于它的文章。
w4979的博客
2020/05/29
8430
集装箱时代的分布式记录(第3部分)
2018/01/05
1.1K0
挎斗模式
将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。 使用此模式还可以使用异构组件和技术来构建应用程序。
只喝牛奶的杀手
2019/09/02
6410
挎斗模式
为什么要使用服务网格Service Mesh?
对于实现生产环境的构建和部署的人来说,这是一场噩梦。并且假设它们共享相同的操作系统但需要隔离,或者出于可移植性原因将它们打包到单独的VM镜像中。为每个服务实现新VM非常昂贵! 阶段2:容器化 通过利用Linux中的cgroups和命名空间,新的操作系统级虚拟化技术通过共享相同的主机操作系统来实现应用程序的隔离环境。Docker是最受欢迎的容器运行时。 因此,为每个微服务创建并发布了一个镜像。现在,应用程序被隔离,快速,便宜地启动新容器,所有这些都可以通过一个操作系统实现! 容器化解决了构建和部署问题。我们还没有完善的监控解决方案! 我们还有其他问题吗? 管理容器! 使用容器运行可靠的基础架构需要注意一些关键事项。
lyb-geek
2018/12/14
8400
需要尽早知道的Kubernetes最佳实践
我希望能早点知道的Kubernetes最佳实践。从我在生产环境中使用Kubernetes的经验中学习,并避免常见的陷阱。
云云众生s
2025/01/23
1860
需要尽早知道的Kubernetes最佳实践
Docker支持更深入的容器日志分析
应用容器平台Docker本周基于各个公司对容器化应用程序分发支持的全面性程度,宣布了针对容器应用程序日志管理的生态系统技术合作伙伴(ETP: Ecosystem Technology Partners,下文以缩写代称)计划。 第一批被认可的日志专业合作伙伴包括Amazon CloudWatch、elastic.co、Graylog、Rapid7/Logentries、Loggly、Papertrail、Sematext Logsene、Sumo Logic、Treasure Data。 Docker的ETP
CSDN技术头条
2018/02/11
7970
谈一下Docker与Kubernetes集群的日志和日志管理
日志对于我们管理Kubernetes集群及其上的应用具有非常重要的作用,特别是在出现故障或者Bug的时候。如果你能回答下面几个问题,那么可以不用再看本文了,如果不能回答,本文可能正好适合你。
大江小浪
2018/09/19
2.5K0
谈一下Docker与Kubernetes集群的日志和日志管理
CNCF云原生景观的初学者指南
这个博客最初是由Ayrat Khayretdinov在CloudOps博客上发布
CNCF
2019/12/05
1.4K0
CNCF云原生景观的初学者指南
《Docker极简教程》--Docker网络--Docker网络的配置和使用
创建自定义桥接网络 在Docker中,创建自定义桥接网络是一种常见的网络配置方式,特别适用于单主机环境,可以帮助容器相互通信并与外部网络进行通信。下面我将介绍如何在单主机上创建自定义桥接网络,并提供一个简单的例子。
喵叔
2024/05/24
1.9K0
最全的30+个开源免费的Docker工具
容器生态系统的发展和扩展速度越来越快速,并且已经有了许多的Docker工具和服务,想要知道所有的有用选择,你会发现基本很难完成。
IT派
2018/08/10
5.5K0
十大Docker记录问题
Docker不仅改变了应用程序的部署方式,还改变了日志管理的工作流程。容器将日志写入控制台(stdout / stderr),而Docker Logging Drivers将日志转发到目的地,而不是将日志写入文件。快速检查Docker GitHub问题表明用户在处理Docker日志时遇到各种问题。使用Docker管理日志似乎很棘手,需要更深入了解Docker日志驱动程序实现和替代方案,以克服人们报告的问题。
February
2018/11/20
2.8K0
再见 Sidecar:eBPF 能抢过 Istio 服务网格的风头吗?
作者 | Shahar Azulay 译者 | Sambodhi 策划 | 赵钰莹   从 Istio 服务网格的基础知识到它的好处,这篇文章涵盖了你需要知道的关于 Istio 服务网的一切,以及 eBPF 在其中的作用。 Sidecar 的概念在容器和微服务的领域中非常流行,因此,人们很容易把 Sidecar 看作是云原生技术栈的一个自然的、健康的部分。 但是,如果你仔细想,你就会发现 Sidecar 并没有想象中的那么伟大。毕竟,它们被称为“Sidecar”,意思是说,你可以在摩托车上安装边车
深度学习与Python
2023/02/28
5950
再见 Sidecar:eBPF 能抢过 Istio 服务网格的风头吗?
《Docker极简教程》--Docker服务管理和监控--Docker服务的管理
启动和停止Docker服务通常取决于正在使用的操作系统。以下是在常见操作系统上启动和停止Docker服务的基本步骤:
喵叔
2024/05/24
5790
5分钟带你入门Docker
现代软件开发的目标之一是应用程序既能运行在同一主机或集群上,又能彼此隔离,这样它们就不会过度干扰彼此的操作或维护,但由于要运行包、库和其他软件组件,这样就会变得会比较困难。
CloudBest
2019/12/19
7220
5分钟带你入门Docker
相关推荐
使用Sidecar搭建异构平台的微服务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档