使用Prometheus和Grafana监视Spring Boot教程 - Kevin


在微服务,无服务器应用程序或整个事件驱动的体系结构一起工作的分布式环境中,可观察性(包括监视,日志记录,跟踪和警报)是重要的体系结构关注点。
我们希望在高度分布式的系统中具有可见性的原因有几个:

  • 即使我们最好的员工构建了它,也会出现问题。
  • 分布式系统会产生分布式故障,如果我们没有事先做好准备,这将是灾难性的。
  • 尽早发现错误,这对于改进和学习很有帮助。
  • 它使我们承担责任。
  • 减少平均解决时间(MTTR)。

在这篇博文中,我将解释Prometheus和Grafana的核心概念。在上一节中,我设置了一个演示项目,因此您可以继续进行并在自己的应用程序中实施监视。
 
Prometheus
Prometheus最初由SoundCloud开发,是一个开源的,社区驱动的项目,毕业于Cloud Native Computing Foundation。它可以聚合几乎所有数据:
  • 微服务
  • 多种语言
  • Linux服务器
  • Windows服务器

在我们现代的微服务时代,DevOps变得越来越复杂,因此需要自动化。我们有数百个进程在多个服务器上运行,并且它们都是相互连接的。
如果我们不监视这些服务,那么我们就不知道硬件级别或应用程序级别发生了什么。我们有很多要通知的事情,例如:
  • 失误
  • 响应延迟
  • 系统过载
  • 资源资源

当我们处理许多活动部件时,我们希望能够在我们的一项服务内部出现问题时迅速发现问题。如果我们不进行监视,则可能会非常耗时,因为我们不知道在哪里查看。
Prometheus正是该工具,它可以识别内存使用率,CPU使用率,可用磁盘空间等。我们可以预定义要通知的某些阈值。
在我们的示例中,故障服务器的内存可能已经达到70%的内存使用时间超过一个小时,并且可能在崩溃发生之前向管理员发送了警报。
Prometheus服务器负责实际的监视工作,它由三个主要部分组成:
  • 存储,这是一个时间序列数据库。
  • 数据检索工作者,正在从我们的目标服务中提取数据。
  • Web服务器,它接受PromQL查询以从我们的数据库中获取数据。


 
Prometheus几乎监视任何东西。它可以是Linux / windows服务器,Apache服务器,单个应用程序,服务等。它监视这些目标上的单元,例如:
  • CPU使用率
  • 内存/磁盘使用率
  • 请求数
  • 要求期限
  • 例外计数

我们监视的单位称为度量,将保存到Prometheus时间序列数据库中。Prometheus的指标格式设置为易于阅读的文本文件。
 
Grafana
Grafana是一个开源指标分析和可视化应用程序。
  • 它用于可视化时间序列数据,以进行基础结构和应用程序分析。
  • 它也是一个Web应用程序,可以部署在用户需要的任何地方。
  • 它可以针对Prometheus的数据源,并使用其可自定义的面板为用户提供来自所管理的任何基础架构的强大数据可视化功能。

Grafana的显着优势之一是其定制可能性。自定义可视化以处理大量数据是毫不费力的。我们可以选择线性图,单个数字面板,量规,表格或热图来显示我们的数据。我们还可以使用各种标签对所有数据进行排序,以便将具有不同标签的数据分配到不同的面板。
最后但并非最不重要的一点是,有大量预制的仪表板模板可以导入,因此我们不必手动创建所有内容。

具体图文配置点击标题见原文