cdp 计量
一个简单的包装 AWS 嵌入式计量格式( EMF) 用于Node.js应用程序。 它利用计数器、计时器、测量仪和尺寸测量仪,用最小的锅炉来提供排放相容的云表测量仪.
特征
- Emit 计数器(国家单位)
- 时间同步函数
- 电量计、字节尺寸和持续时间
- 用于错误跟踪的可选日志注射
- 在单位测试中容易被嘲笑
安装
npm install @defra/cdp-metrics
配置
地方发展
这个库使用AWS EMF来放出度量衡. 改为: 开发期间安全禁用 Cloud Watch 写入,设置以下环境变量:
AWS_EMF_ENVIRONMENT=Local
我建议你用这个 package.json 防止在部署的服务中意外关闭度量衡.
{
"scripts": {
"dev": "AWS_EMF_ENVIRONMENT=Local run-p frontend:watch server:watch",
"dev:debug": "AWS_EMF_ENVIRONMENT=Local run-p frontend:watch server:debug"
}
}
生产
不设置 AWS EMF ENVIRONMENT=本地,或者将默不作声地丢弃指标。 AWS EMF 将自动向 Cloud Watch ECS 环境发布.
使用量
基本计量
import { counter, timer, millis, gauge, byteSize } from '@defra/cdp-metrics'
const metrics = new Metrics(logger)
await metrics.counter('processedItems', 5)
await metrics.millis('dbQueryTime', 128)
await metrics.gauge('inFlightJobs', 3)
await metrics.byteSize('responseSize', 1024)
可在不等待阻止行刑的情况下发出计量电话.
计时函数
const metrics = new Metrics(logger)
await metrics.timer('myHandlerTime', async () => {
// Do some async work
})
有维度
await counter('apiCall', 1, { service: 'user', route: '/login' })
Hapi 插件
将参数附加到服务器并请求上下文并配置日志 :
import { metrics } from '@defra/cdp-metrics'
await server.register(metrics)
server.metrics.counter('startup', 1)
request.metrics.timer('dbFetch', async () => fetchUsers())
测试
你用得着 AWS_EMF_ENVIRONMENT=Local 在你的测试中,如果你不想 度量衡被嘲笑.
嘲弄用于验证排放的度量衡的内置计量法:
import * as embedded from 'aws-embedded-metrics'
vi.spyOn(embedded, 'createMetricsLogger').mockImplementation(() => ({
putMetric: vi.fn(),
flush: vi.fn(),
setDimensions: vi.fn()
}))
处理错误
如果任何计量标准没有发出,则会记录警告(如果设置了日志)。 您可以输入自己的日志 :
import pino from 'pino'
new Metrics(pino())