最佳实践系列丨Docker EE 日志记录最佳实践(一)

本文首发自“Docker公司”公众号(ID:docker-cn)
编译丨小东
每周1、3、五 与您不见不散!docker

在传统上,设计和实现集中的日志记录老是成为马后炮。要等到各类问题出现,集中的日志记录成为优先事项,人们才会想到用这样的解决方案查询、查看和分析日志,以找到问题的根本缘由。可是到了容器时代,在设计使用 Docker 企业版 (Docker EE) 的容器即服务 (CaaS) 平台时,优先解决集中式日志记录是相当重要的。随着在容器中部署的微服务数量不断增多,它们以日志(或事件)形式产生的数据量会发生指数增加。json

您将学到的知识

此参考架构提供了关于 Docker 日志记录功能如何工做的概述,说明了 Docker 日志的两大类别,而后讨论了 Docker 日志记录最佳实践。架构

了解 Docker 日志记录

在研究设计要素以前,先了解 Docker 日志记录的基本知识很重要。运维

Docker 支持不一样的日志记录驱动,用于存储和/或流式传输主容器进程 (pid 1) 的容器 stdout 和 stderr 日志。默认状况下,Docker 使用 json-file 日志记录驱动,但也能够配置它使用许多其余驱动,方法是在 /etc/docker/daemon.json 中设置 log-driver 的值,而后重启 Docker 守护进程以从新加载其配置。微服务

日志记录驱动设置会应用于从新配置守护进程以后启动的全部容器(在从新配置日志记录驱动以后重启现有容器并不会致使容器使用更新过的配置)。要覆盖默认的容器日志记录驱动,应使用 --log-driver 和 --log-opt 选项运行容器。另外一方面,可使用 docker service update --log-driver--log-opt 对 swarm mode 服务进行运行中更新,使其改用不一样的日志记录驱动。性能

那么 Docker 引擎日志呢?这些日志一般由默认的系统管理节点日志记录器处理。现代的大多数发行版(CentOS 七、RHEL 七、Ubuntu 16 等)都使用 systemd,后者使用 journald 记录日志,使用 journalctl 访问日志。要访问引擎日志,可以使用 journalctl -u docker.service。spa

Docker 日志类别和源

说过 Docker 日志记录的基础知识以后,本节将说明它们的类别和源。设计

Docker 日志一般可分为两种类别:基础架构管理日志或应用日志。大多很多天志根据需访问日志者的角色天然地纳入这两种类别。日志

  • 运维人员最关心平台的稳定性以及服务的可用性。
  • 开发人员比较关心其应用代码以及服务的性能。

为了实现自助服务平台,运维人员和开发人员都应该有权访问他们为了履行职责而须要访问的日志。开发运维的实践代表,在服务可用性和性能方面,你们要共同承担整体责任。可是,不该该让每个人都有权访问平台上的每一个日志。例如,开发人员应该只须要访问关于其服务和集成点的日志。运维人员则更关心 Docker 守护进程日志、UCP 和 DTR 可用性,以及服务可用性。二者的访问范围有一些重叠,由于开发人员和运维人员都应该了解服务可用性。让每一个角色都能访问须要的日志,能够在发生问题时简化故障排除,并缩短解决故障平均时间 (MTTR)。进程

相关文章
相关标签/搜索