什么是 prom-client ?
prom-client 是一个能够与 Prometheus 监控系统集成的 JavaScript 库。它可以启动一个 Prometheus 数据端点,通过 HTTP / HTTPs 将度量值、计数器、直方图等指标暴露出来。
Prometheus 是由 SoundCloud 开发的一款开源的监控系统,可以帮助开发者收集并存储系统和服务的度量数据,并生成统计信息、图表和警报。通过 prom-client 库,我们可以将系统和服务各种复杂的业务逻辑、性能和指标度量等数据收集进 Prometheus 并进行监控、分析和警报处理。
如何使用 prom-client?
- 首先,安装 prom-client 包。你可以通过 npm 安装 prom-client 包来进行安装。运行以下命令:
npm install prom-client
- 引入 prom-client 包
在你的项目中,你需要通过 require( ) 或 import 的形式引入 prom-client 包。
const { register, collectDefaultMetrics, Counter } = require('prom-client');
- 加入指标
通过创建各种指标类型,我们可以把你感兴趣的应用分析数据储存起来,例如 Counter 。
下面是 Counter 的使用示例:
const counter = new Counter({ name: 'node_request_example_counter', help: 'Node.js example counter', labelNames: ['code', 'userAgent'] });
Counter 有三个构造函数参数:
name
(字符串类型):定义计数器名称help
(字符串类型):定义计数器描述labelNames
(字符串数组):自定义计数器的一些元信息,这些信息可以用于方便的查询和展示 Counter 的数据。
- 计数
我们可以通过如下方式来计算计数器。
counter.inc({ code: '200', userAgent: 'Firefox' });
- 导出指标
为了使 prom-client 库能够轻松助您实现可视化操作和通知。我们需要导出它们。 为此,调用 register.metrics().
app.get('/metrics', (req, res) => { res.set('Content-Type', register.contentType); res.end(register.metrics()); });
- 将指标导出到 Prometheus
这个步骤就非常有趣了!需要启动一个后台作业,同时通过 http 端口使 Prometheus 能够抓取我们的指标。最后的服务代码请参考下面的代码段:
-- -------------------- ---- ------- ----- --------------------- - ------------------------------- ----------------------- -------- ---- --- -- -- ------- ------- ----- ------- - --- --------- ----- ------------------------------- ----- -------- ------- --------- ----------- -------- ------------ --- -- -- ------------------- ----- ---- -- - ----------------------- ---------------------- ---------------------------- --- ------------ ----- ---- -- - ------------- ----- ------ ---------- --------- --- --------------- --------- --- ---------------- -- -- ---------------- --------- -- ---- ---------
结论
我们现在学习了 prom-client 如何把复杂的应用代码转化为可视化指标,如何关注这些更新。这就是我们使用 prom-client 库的关键,使您能够创造出高质量且易于维护的代码。 为了更好地掌握 prom-client 里的其他类和成分,其中包括 Gauge 和 Histogram,这些可以用于更好的指标和信息展示和可视化。 这些类别的 API 和所有代码可以在官方文档中找到,为您的监控解决方案提供前所未有的可能性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/196271