认识
一、认识
prom-client
是一个用于 Node.js
的 Prometheus
客户端库,允许你在 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
在应用中通过预定义的指标类型(如 Counter
、Gauge
等)来采集数据。这些指标的数据可以是应用内部的状态(如处理的请求数、响应时间等),也可以是来自外部服务的度量数据。
每当某个事件发生时(如 HTTP
请求完成、错误发生、服务响应时间等),你可以使用 prom-client
提供的 API
更新相关的指标数据。
2.3 暴露指标
prom-client
会通过 HTTP
端口暴露一个 /metrics
的 HTTP
路径,这个路径会返回应用的所有监控指标,以 Prometheus
格式展示。Prometheus
定期拉取这个 /metrics
路径,获取应用的指标数据。
2.4 Prometheus 抓取指标
Prometheus
定期从应用的 /metrics
端点抓取数据,这些数据会被 Prometheus
存储起来,用于实时监控和后续的告警配置。Prometheus
会根据 prom-client
暴露的格式将其存储在自己的时序数据库中。
2.5 更新指标
在应用的生命周期中,随着不同事件的发生(如请求到达、数据库查询、外部服务的响应等),开发者可以调用 prom-client
提供的 API
更新相应的指标。例如,当一个 HTTP
请求到达时,prom-client
会增加一个 Counter
指标,表示一个新请求的到来;当请求完成时,可以记录一个 Histogram
指标,表示请求的响应时间。