出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五晚6点10分 与您不见不散!
在过去十年中,随着微服务和高度可扩展系统的普及,导致在网络上大量分布的应用程序的复杂性整体增加,从而使应用程序存在着许多迁移时产生的和一些潜在的故障模式。
这种架构的演变已经改变了监控的需求,这使得我们需要拥有更具扩展性和洞察力的工具和实践,在问题影响到业务和最终用户(内部或外部)之前,更好的帮助我们识别、调试和解决系统中的问题。
我在 DockerCon 2018 大会上分享了一个 Docker EE 中的重要功能,该功能可以使运营商更轻松地监控其容器平台环境。同时还为大家带来一些关键性指标和最佳实践,以便在故障发生前对问题进行分类和修复。
监控方法
最著名的早期监控技术之一是来自 Netflix 公司的 Brendan Gregg 的 USE 模型。USE 指的是对于全部资源我们应该监控其利用率(服务工作所花费的时间)、饱和度(资源的使用程度)以及错误(错误事件数)。该模型更多适用于以硬件/节点为中心的指标,但应对基于网络的应用程序就需要对该模型进行调整。
对于以网络为导向的云原生应用程序,其最流行的模型之一是 Google SRE 手册中提到的“4 Golden Signals”(延迟,流量,错误和饱和度)。这些监控方法在应用程序和平台级别上很有用,但仍然缺乏对复杂方案和故障进行分类所需的一些细节。
应用程序和平台的可观察性
可观察性比简单的指标更进一步,是衡量我们通过审查其产出来推断系统状态的方法。可观察性包括监控、记录(事件)、跟踪和警报,来构建系统状态的完整图像。为了使我们的应用程序“可观察”,对它们进行检测非常重要,这样我们就可以提取关键信息并对其进行分析。近年来,DataDog、Instana、Prometheus、Sumo Logic等公司在这一领域进行了工具复兴来满足这些领域对高级功能日益增长的需求。
Docker EE 的可观察性
Docker EE 内置了许多功能,可以更轻松地进行监控和度量标准指标。例如非常好用的运行状况检查、引擎指标和日志记录功能:
运行状况检查:运行状况检查功能内置于 Dockerfile 规范中,允许用户针对其应用程序进行编写监控检查。这些信息通过引擎和 Docker EE web 管理 UI 来报告。Docker EE 会自动安排运行状况检查失败的工作负载。
引擎指标:Docker EE 公开了一个端点,该端点发出 Prometheus 格式的指标数据,以便轻松集成到监控工具中。有数百个单独的指标可用,包括关于构建的数据、群体状态(用于检测领导者何时宕机、法定人数减少等)、守护程序事件(例如网络创建)等等。
日志记录:Docker EE 内置了对许多不同日志记录驱动程序的支持,包括使用元数据标记服务的功能,以便在将日志发送到聚合器后使查询更容易。
我们的实践经历
我们的基础设施团队在云计算平台上运行 Docker Hub&Store,并在该平台上看到令人难以置信的流量,每两周就会有超过10亿的镜像。下图是我们生产环境中的一些统计数据:
这一切都在 Docker EE 上运行,同时利用了上文提及的许多工具和技术。
您可以在这里看完整的演讲视频:
- Docker 官方微信公众号入口:http://t.cn/RkZfNPY