用 Prometheus 和 Grafana 实现容器化应用程序的可视化监控
出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五晚6点10分 与您不见不散!
近日,我在 Pluralsight 网络课程中更新了一节《如何使用 Docker 监控容器化应用程序运行状况》的教学视频!本视频涵盖了在 Linux 和 Windows 上运行 Docker 容器时监控应用程序所需的全部内容,它将教会您监控容器的整个理论和实践以及使用行业标准工具 Prometheus 和 Grafana。
在 Docker 中监控应用程序的最主要好处是,开发人员可以在本地运行监控应用栈,并获得运营团队在生产中使用的完全相同的指标。
演示应用程序是在 Linux 容器上运行 Java,在 Windows 容器上运行 .NET Framework。我使用独立的 Docker 引擎(适用于 Mac 和 Windows 的 Docker Desktop,以及 Ubuntu 和Windows Server 上的 Docker Engine)以及运行 Linux 和 Windows 节点的混合 Docker swarm。所以,每个人都可以各取所需。
为容器化应用程序构建监控
应用程序在数百个 Docker 容器中运行时,与其在几十台服务器中运行相比,其监控是不同的。您不希望使用 Nagios 或 SCOM 等“经典”监视工具,因为它们不适用于现阶段高周转率以及动态管理的环境。
因此,与在服务器上运行时将数据推送到中央监控服务器的代理不同,您可以从容器和 Docker 服务器公开指标,并运行一个监控组件来轮询这些指标并存储结果:
指标服务器是 Prometheus,它将数据存储在自己的时间序列数据库中。然后,为了可视化您的应用程序运行状况,您可以在 Grafana 中构建一个仪表板,该仪表板可以实时显示 Prometheus 的关键指标,并且可以根据需要显示。
Prometheus 和 Grafana 是成熟的开源项目,拥有庞大的用户群,并且为在 Docker 中运行提供了良好的支持。它们都是 CNCF Landscape 的特色,Prometheus 是 CNCF 的授权项目。
它们都是您需要学习的新技术,但是它们的入门都非常简单。接下来,我将带您了解这些内容 —— 包括在 Linux 和 Windows 上的 Docker 容器中运行 Prometheus 和 Grafana。
在轻量级的 Docker 容器中运行监控组件意味着您可以在每个环境中运行相同的指标仪表板,从容器中提取指标的体系结构意味着您可以在不同级别的解决方案上获得一致的视图。接下来,我将介绍:
- 应用程序指标 —— 您记录的自定义指标,这些指标在仪表板中很有用,例如登录用户数等。
- 运行时指标 —— 操作系统或运行时主机已收集的数据,如 We b服务器处理的每秒请求数或内存使用量等。
- Docker 指标 —— 来自容器平台的指标,包括在每个状态下运行的容器、节点可用性和运行状况检查。
用 Prometheus 收集指标
Prometheus 是一个轮询服务器,它向提供服务指标的 REST API 发出 HTTP 请求(您也可以将数据推送到 Prometheus,但这是一种不太常见的模式)。
您可以直接在服务器上运行 Prometheus,但最好是在 Docker 中运行它 —— 这将使 Prometheus 的设置更加便携,并且 Prometheus 可以使用 Docker内置的 DNS 服务器来更容易的发现轮询目标。
Prometheus 是指标服务器的绝佳选择,因为它具有大多数语言的客户端库,Docker 引擎本身可以公开 Prometheus 格式的指标。
我将向您展示如何在 Prometheus 中为容器和 Docker 引擎配置服务发现,无论是在独立模式还是在集群模式下。
在群集模式下,Docker 支持使用 DNS 查询进行容器发现,这些查询为您提供了服务中所有容器的 IP 地址。
向 Prometheus 公开运行时指标
托管应用程序的运行时可能已经在收集指标了,您可以在不更改代码的情况下从容器中公开它们。
我将向您展示如何在 Docke r镜像中将指标导出器与应用程序一起打包,这是一个为 Prometheus 提供 “/metrics”API 的实用程序:
这是在 Docker 中向现有应用程序添加监控的一种简单且低风险的方法,无需更改应用程序(只需在 Dockerfile 中打包一个第三方的导出器)。举个例子:
- Tomcat 在 Linux 容器中运行 JSP 网站,其导出器为您提供来自 JVM 和 Tomcat Web 服务器的详细指标。
- IIS 在Windows容器中运行 ASP .NET 网站,其导出器为您提供 Windows 性能计数器的指标,包括 .NET 和 IIS 的指标。
这个级别的监控可以告诉您容器的工作情况,这是查看某个地方是否存在瓶颈或某个容器是否有问题的好地方。
向 Prometheus 公开应用程序指标
如果要从容器中提取自定义指标,则需要编写一些代码。但是,它很简单。
我使用适用于 Java 的官方 Prometheus 客户端库,以及用于 .NET 的社区 Prometheus 客户端库,将自定义指标添加到我的 Web 应用程序中。我记录了基本内容,例如登录会话数、添加到购物篮中的商品数量以及下订单数量。
客户端库为 Prometheus 提供 REST API。我将介绍一些托管端点的选项 —— 我更喜欢为应用程序和运行时指标设置单独的端点,这样您就可以在不同的计划上轮询它们。
应用程序指标可以告诉您容器内部发生了什么,因此您可以使用它们为业务用户提供实时的 KPI 数据,或为 IT 用户提供技术统计信息。
向 Prometheus 公开 Docker 指标
Docker 还可以用 Prometheus 的格式导出指标(这是一个实验性质的功能,但我将告诉你如何启用它,以及运行“实验性质”意味着什么)。
您可以从 Docker 引擎中获得一组统计信息,其中包括容器和运行状况检查信息,以及服务器详细信息和使用情况。所有版本的 Docker 都是如此,因此您可以在仪表板中显示 Docker 平台的统计信息。开发人员在 Docker Desktop 中看到的详细信息与运营团队在 Docker Enterprise 上的生产环境中所看到的详细信息保持一致。
在群集模式下运行时,管理器节点会产生第二组统计信息,它将告诉您有关群集中节点的详细信息,以及有关群集性能的底层信息(包括 etcd 和 Raft)。
这是您希望在应用程序仪表板中看到的最终详细信息。在概述中看到这些细节非常好,因为它可以很容易地在不同的数据集之间进行关联,并发现问题的根本原因。
如果应用程序指标中登录用户的数量突然下降,并且运行时指标中提供的 HTTP 请求数量也下降了,那么您可以检查 Docke 指标 —— 可能您的运行状况检查都失败了,这意味着发布失败了,或者可能有一半的节点已经脱机。在一个地方查看所有这些数据可以为您提供全面的见解。
使用 Grafana 构建仪表板
最后,我要向您展示的是如何在 Grafana 中构建仪表板,使用 PromQL 查询将所有关键应用程序、运行时和 Docker 指标集中到同一个仪表板中:
Grafana 本身非常简单易用,我在视频中介绍了数据源、仪表板和面板。我还向您展示了如何使用您自己的配置打包 Grafana,这样您就可以构建一个自定义的 Docker镜像了,该镜像具有:
- 配置了您 Prometheus 的数据源;
- 部署了您应用程序的仪表板;
- 创建的只读用户;
- 为该只读用户设置您应用程序仪表板的主页;
当您学会了本教学的所有内容,您最终将会得到属于自己的 Prometheus 和 Grafana 的 Dockerfiles 文件,它们会让您的监控部署实现自动化,就像你对应用程序镜像和容器所做的一样。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云服务器设置教程:安装宝塔面板一步到位管理你的ECS
随着价格的大幅度优惠,现在云服务器已经成为站长建站的首选。不过还有一部分不懂技术的小白苦恼于不懂linux命令,害怕买了云服务器之后不会配置,其实大可不必担心,今天就给大家分享一下阿里云服务器设置教程之【安装宝塔面板一步到位管理服务器】,让管理服务器像管理虚拟主机一样简单。 一、首先我们打开ecs服务器购买页面: 对了,不知道大家是否知道?初次购买阿里云产品是有大额代金券可领的。阿里云的优惠力度还是蛮大的,大家可以点击下面链接领取。顺便说一下,新手用户也可以在领券页面直接找到特价活动入口: 阿里云代金券: https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=0a5rig7f 1、进入ECS配置页面: 在领券页面下方找到ecs服务器,点击进入配置选择: 也可以通过阿里云导航栏——产品——云服务器ECS进入选购页面。 2、自定义购买含有宝塔面板的云服务器: 选择自定义购买——镜像市场——从镜像市场选择(含操作系统),点击后在弹出窗口选择“宝塔面板”,这样你购买的云服务就会是已经安装好管理面板的了。 然后,在弹出窗...
- 下一篇
企业上云之机房和BGP带宽篇(四)
小编打算边用一些阿里云官方文档提供的文字描述,再加上自己的理解,尽量用白话来进行比较,并提醒一些值得注意的地方。 国内地域 地域通常按照数据中心所在的城市进行划分,比如说华东1就是杭州,华东2是上海;华北2是北京;华南1是深圳。 这些地域数据中心提供8线 BGP 骨干网线路 网络能力覆盖全国,提供高速稳定的中国大陆访问。在基础设施、BGP 网络品质、服务质量、云服务器操作使用与配置等方面,阿里云国内地域数据中心没有太大区别。 之前说的传统运营商机房一般都是BGP双线或三线,阿里云是8线,所以覆盖全国用户的能力是更强了。这里小编还是要多说一句,BGP不仅仅是跨网访问更快了,而且资源利用率也高了很多。原来,一条线路访问另一线路往往要经过很多层路由,但实现BGP以后就像进入了高速公路。原来带宽的利用率一般在40%左右,实现BGP后能达到80%以上。因此,原来10M独享带宽的速度,通过BGP只需要5M就可以满足,提升效率的同时也节省了成本。这样能明白不? 阿里云机房,是中国最大的5A 级机房之一。2T(2000G)出口带宽、网络智能调度。避开高负荷通路,承载淘宝双11期间数十亿的访问量!久经考...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音