Prometheus 和 Grafana 简介

Prometheus 是一个开源的、基于指标的监控系统。 它通过在指标端点上发送 HTTP 请求来从服务和主机收集数据。 然后它将结果存储在时间序列数据库中,并使其可用于分析和警报。

为什么要监控?

  • 在出现问题时启用警报,最好是在出现问题之前。 以便有人可以查看它。
  • 它提供洞察力以支持分析、调试和解决问题。
  • 它使您能够看到随时间变化的趋势/变化。 例如,在任何给定时间有多少活动会话。 这有助于设计决策和容量规划。

监控通常与事件有关。 事件可能包括接收 HTTP 请求、发送响应、从磁盘读取、用户登录。 监控系统可能包括分析、日志记录、跟踪、指标、警报和可视化。

黑盒与白盒监控

监控分为两大类:

黑盒监控

在黑盒监控中,监控是在应用程序或主机级别进行的,因为它们是从外部观察到的。 这可能非常有限。

白盒监控

白盒监控意味着监控服务的内部。 它将公开有关内部组件的状态和性能的数据。

四个黄金信号

根据谷歌,如果您只能衡量面向用户的系统的四个指标,请关注以下四个指标,称为四个黄金信号:

#1。 潜伏

服务请求所需的时间 – 成功或失败。 重要的是不仅要跟踪成功的请求,还要跟踪失败的请求。

#2。 交通

衡量对系统的需求量。 对于 Web 服务,这通常是每秒 HTTP 请求数。

#3。 错误

请求失败的比率。

#4。 饱和

你的服务有多全面。 延迟增加通常是饱和度的重要指标。 许多系统在达到 100% 利用率之前性能就会下降很多。

  此交互式图表使用自定义过滤器来查找合适的笔记本电脑

Prometheus 指标类型

Prometheus 指标有四种主要类型:

#1。 柜台

计数器的值将始终增加。 它永远不会减少,但可以重置为零。 因此,如果抓取失败,则仅意味着丢失了数据点。 累积增加将在下次阅读时提供。 例子:

  • 收到的 HTTP 请求总数
  • 异常的数量。

#2。 测量

仪表是任何给定时间点的快照。 它既可以增加也可以减少。 如果数据获取失败,您将丢失一个样本; 下一次提取可能会显示不同的值:例如磁盘空间、内存使用情况。

#3。 直方图

直方图对观察结果进行采样并在可配置的桶中对它们进行计数。 它们用于诸如请求持续时间或响应大小之类的事情。 例如,您可以测量特定 HTTP 请求的请求持续时间。 直方图将有一组桶,比如 1 毫秒、10 毫秒和 25 毫秒。 Prometheus 不会存储每个请求的每个持续时间,而是存储落入特定桶中的请求的频率。

#4。 概括

类似于直方图样本观察,通常请求持续时间或响应大小。 它将提供观察总数和所有观察值的总和,允许您计算观察值的平均值。 例如,在一分钟内,您有 3 个请求耗时 2、3、4 秒。 总和为 9,计数为 3。延迟为 3 秒。

普罗米修斯生态系统的组成部分

普罗米修斯服务器

收集指标、存储它们并使其可用于查询、根据收集的指标发送警报。

刮痧

普罗米修斯 是一个基于拉动的系统。 为了获取指标,Prometheus 发送一个名为 scrape 的 HTTP 请求。 它根据其配置向目标发送抓取。

每个目标(静态定义的或动态发现的)都会以固定的间隔(抓取间隔)进行抓取。 每次抓取都会读取 /metrics HTTP 端点以获取客户端指标的当前状态,并将这些值保存在 Prometheus 时间序列数据库中。

您可能想要探索更多用于监控解决方案的时间序列数据库。

客户端库

要监控服务,您需要在代码中添加检测。 有适用于所有流行语言和运行时的客户端库。 使用这些库,一旦添加几行代码,您的代码就可以开始发出指标。 这称为直接检测。 这些库使您能够定义内部指标并通过 HTTP 端点公开它们。 当 Prometheus 抓取指标 HTTP 端点时,客户端库将指标发送到服务器。

Prometheus 为 Go、Java、Python 和 Ruby 提供了官方客户端库。 Prometheus 有一个开放的生态系统。 还有社区构建的客户端库可用于 C、PHP、Node.js、C#/.NET 和许多其他语言。

  如何远程控制 iPad

出口商

许多应用程序以非 Prometheus 格式公开指标。 对于这些以及您不拥有或无权访问其代码的应用程序,您无法直接添加检测。 例如,MySQL、Kafka、JMX、HAProxy 和 NGINX 服务器。 在这些情况下,您可以使用 出口商.

导出器是您与要从中获取指标的应用程序一起部署的工具。 导出器充当应用程序和 Prometheus 之间的代理。 它将接收来自Prometheus服务器的请求,从应用程序的访问日志、错误日志中收集数据,转换成正确的格式,最后返回给Prometheus服务器。

一些受欢迎的出口商是:

  • 视窗 – 对于 Windows 服务器指标
  • 节点 – 用于 Linux 服务器指标
  • 黑盒子 – 用于 DNS 和网站性能指标
  • JMX – 用于基于 Java 的应用程序指标

一旦应用程序被检测,或者导出器就位,您需要告诉普罗米修斯它们在哪里。 这可以使用静态配置来完成。 在动态环境的情况下,这是不可能做到的; 因此使用服务发现。

警报

Prometheus 的警报由两部分组成 –

警报规则将警报发送到 Alertmanager。

然后,Alertmanager 管理这些警报。 它使用许多开箱即用的集成来发送通知,例如电子邮件、Slack、Hipchat 和 PagerDuty。 Alertmanager 还可以执行静默或聚合以减少通知数量。

这是使用 Prometheus 和 Dashboard 监控 Linux 服务器的指南。

使用仪表板进行可视化

Prometheus 有许多 API,PromQL 查询可以使用这些 API 生成用于可视化的原始数据。

虽然 Prometheus 包含一个可用于临时查询的表达式浏览器,但最好的工具是 格拉法纳. Grafana 与 Prometheus 完全集成,可以生成种类繁多的仪表盘。

您需要将 Prometheus 配置为 Grafana 的数据源。

您可以通过以下方式添加仪表板:

  • 导入社区构建的仪表板
  • 建立你自己的
  • 使用预定义的仪表板。

这是预定义的节点导出器仪表板的样子:

Grafana 有一个 worldPing 模块,可让您监控全球站点和 DNS 性能指标。

  11 个最佳 Showbox 替代品

概括

Prometheus 的要求很少。 它运行起来非常简单,因为它是一个带有配置文件的二进制文件。 它可以处理数千个目标并每秒摄取数百万个样本。 Prometheus 旨在跟踪系统的整体系统、健康状况和行为。

Grafana 是可用于指标可视化的最佳工具,并与 普罗米修斯.