跳到主要内容

认识

2024年12月24日
柏拉文
越努力,越幸运

一、认识


prom-client 是一个用于 Node.jsPrometheus 客户端库,允许你在 Node.js 应用中收集和暴露 Prometheus 监控指标。它使得开发者能够轻松地在应用程序中集成 Prometheus 的指标采集和暴露功能,从而帮助监控 Node.js 应用的性能、健康状况和资源消耗。

通过 prom-client,你可以为你的应用创建自定义的指标(如请求数、响应时间、内存使用、CPU 使用等),并将这些数据暴露为 Prometheus 可以抓取的格式。它能够以标准的 Prometheus 格式暴露 HTTP 端点,从而与 Prometheus 配合工作,提供监控数据。

二、工作


prom-client 的工作原理主要分为以下几个部分

2.1 定义指标

定义指标prom-client 提供了多种类型的指标,可以根据需要进行定义和初始化。常见的指标类型包括:

  • Counter:单调递增的计数器,通常用于计数事件发生的次数(如请求数、错误数等)。

  • Gauge:可以增加或减少的值,表示一个可以增减的数值(如内存使用量、温度、当前并发连接数等)。

  • Histogram:用于记录观察值的分布情况,通常用来记录响应时间、请求大小等。

  • Summary:类似于 Histogram,但提供更多的统计信息,如平均值、百分位数等。

2.2 采集指标数据

prom-client 在应用中通过预定义的指标类型(如 CounterGauge 等)来采集数据。这些指标的数据可以是应用内部的状态(如处理的请求数、响应时间等),也可以是来自外部服务的度量数据。

每当某个事件发生时(如 HTTP 请求完成、错误发生、服务响应时间等),你可以使用 prom-client 提供的 API 更新相关的指标数据。

2.3 暴露指标

prom-client 会通过 HTTP 端口暴露一个 /metricsHTTP 路径,这个路径会返回应用的所有监控指标,以 Prometheus 格式展示。Prometheus 定期拉取这个 /metrics 路径,获取应用的指标数据。

2.4 Prometheus 抓取指标

Prometheus 定期从应用的 /metrics 端点抓取数据,这些数据会被 Prometheus 存储起来,用于实时监控和后续的告警配置。Prometheus 会根据 prom-client 暴露的格式将其存储在自己的时序数据库中。

2.5 更新指标

在应用的生命周期中,随着不同事件的发生(如请求到达、数据库查询、外部服务的响应等),开发者可以调用 prom-client 提供的 API 更新相应的指标。例如,当一个 HTTP 请求到达时,prom-client 会增加一个 Counter 指标,表示一个新请求的到来;当请求完成时,可以记录一个 Histogram 指标,表示请求的响应时间。