@lidofinance/api-metrics 0.29.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -44,7 +44,7 @@ const $4773eaec24f907ac$export$c71d26d8163583e2 = (prefix)=>new (0, $7tm02$promc
|
|
|
44
44
|
],
|
|
45
45
|
registers: []
|
|
46
46
|
});
|
|
47
|
-
const $4773eaec24f907ac$export$ee77f8ab9c4e7a05 = ({ prefix: prefix
|
|
47
|
+
const $4773eaec24f907ac$export$ee77f8ab9c4e7a05 = ({ prefix: prefix, registry: registry, defaultChain: defaultChain, supportedChains: supportedChains, version: version, commit: commit, branch: branch })=>{
|
|
48
48
|
const chainConfig = $4773eaec24f907ac$export$3912f78fe5436ec0(prefix);
|
|
49
49
|
registry.registerMetric(chainConfig);
|
|
50
50
|
chainConfig.labels({
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;ACEO,MAAM,4CAAqB,CAAC,SACjC,IAAI,CAAA,GAAA,uBAAI,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAiB;SAAmB;QACjD,WAAW,EAAE;IACf;AAEK,MAAM,4CAAmB,CAAC,SAC/B,IAAI,CAAA,GAAA,uBAAI,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;YAAU;SAAS;QAC3C,WAAW,EAAE;IACf;AAWK,MAAM,4CAAwB,CAAC,UACpC,MAAM,YACN,QAAQ,gBACR,YAAY,mBACZ,eAAe,WACf,OAAO,UACP,MAAM,UACN,MAAM,EACwB;IAC9B,MAAM,cAAc,0CAAmB;IACvC,SAAS,eAAe;IACxB,YAAY,OAAO;QAAE,eAAe;IAAa,GAAG,IAAI;IACxD,gBAAgB,QAAQ,CAAC;QACvB,YAAY,OAAO;YAAE,kBAAkB;QAAM,GAAG,IAAI;IACtD;IAEA,MAAM,YAAY,0CAAiB;IACnC,SAAS,eAAe;IACxB,UAAU,OAAO,SAAS,QAAQ,QAAQ,IAAI;AAChD;;;;;;;;;;AC5CO,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,yBAAM,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;SAAW;QACnC,WAAW,EAAE;IACf;AAEK,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,2BAAQ,EAAE;QACZ,MAAM,SAAS;QACf,MAAM;QACN,SAAS;YAAC;YAAK;YAAK;YAAK;YAAK;YAAG;YAAK;YAAG;SAAE;QAC3C,YAAY;YAAC;YAAW;YAAY;SAAS;QAC7C,WAAW,EAAE;IACf;AAEK,MAAM,4CAA2B,CAAC,SACvC,IAAI,CAAA,GAAA,yBAAM,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;SAAS;QACtB,WAAW,EAAE;IACf;AAEF,IAAI,8BAIO;AAEJ,MAAM,4CAAoB,CAAC,QAAgB;IAChD,IAAI,+BAAS,MAAM;QACjB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,eAAe;QAExB,MAAM,oBAAoB,0CAAyB;QACnD,SAAS,eAAe;QAExB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,eAAe;QAExB,8BAAQ;6BACN;+BACA;6BACA;QACF;IACF;IAEA,OAAO;AACT;;;;;;;ACpDA;;;;;;;CAOC,GACM,MAAM,4CAAiB,CAAC;IAC7B,IAAI,UAAU,QAAQ,SAAS,OAAO,SAAS,KAC7C,OAAO;IAET,MAAM,cAAc,KAAK,MAAM,SAAS;IACxC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;AAC3B;AAWO,MAAM,4CAAmB,CAAC;IAC/B,MAAM,YAAY,IAAI,IAAI;IAC1B,OAAO,UAAU,SAAS,MAAM,KAAK,MAAM,IAAI,KAAK;AACtD;","sources":["packages/api/metrics/src/index.ts","packages/api/metrics/src/collectStartupMetrics.ts","packages/api/metrics/src/rpcMetricsFactory.ts","packages/api/metrics/src/rpcMetricsUtils.ts"],"sourcesContent":["export * from './collectStartupMetrics'\nexport * from './rpcMetricsFactory'\nexport * from './rpcMetricsUtils'\n","import { Gauge, Registry } from 'prom-client'\n\nexport const chainConfigFactory = (prefix: string) =>\n new Gauge({\n name: prefix + 'chain_config_info',\n help: 'Default network and supported networks',\n labelNames: ['default_chain', 'supported_chains'],\n registers: [],\n })\n\nexport const buildInfoFactory = (prefix: string) =>\n new Gauge({\n name: prefix + 'build_info',\n help: 'Version, branch and commit of the current build',\n labelNames: ['version', 'commit', 'branch'],\n registers: [],\n })\n\nexport type TrackStartupMetricsParameters = {\n prefix: string\n registry: Registry\n defaultChain: string\n supportedChains: string[]\n version: string\n commit: string\n branch: string\n}\nexport const collectStartupMetrics = ({\n prefix,\n registry,\n defaultChain,\n supportedChains,\n version,\n commit,\n branch,\n}: TrackStartupMetricsParameters) => {\n const chainConfig = chainConfigFactory(prefix)\n registry.registerMetric(chainConfig)\n chainConfig.labels({ default_chain: defaultChain }).set(1)\n supportedChains.forEach((chain) => {\n chainConfig.labels({ supported_chains: chain }).set(1)\n })\n\n const buildInfo = buildInfoFactory(prefix)\n registry.registerMetric(buildInfo)\n buildInfo.labels(version, commit, branch).set(1)\n}\n","import { Counter, Histogram, Registry } from 'prom-client'\n\nexport const rpcRequestCountFactory = (prefix: string) =>\n new Counter({\n name: prefix + 'rpc_service_request',\n help: 'RPC service request count',\n labelNames: ['chainId', 'provider'],\n registers: [],\n })\n\nexport const rpcResponseTimeFactory = (prefix: string) =>\n new Histogram({\n name: prefix + 'rpc_service_response',\n help: 'RPC service response time seconds',\n buckets: [0.1, 0.2, 0.3, 0.6, 1, 1.5, 2, 5],\n labelNames: ['chainId', 'provider', 'status'],\n registers: [],\n })\n\nexport const rpcRequestMethodsFactory = (prefix: string) =>\n new Counter({\n name: prefix + 'rpc_service_request_methods',\n help: 'RPC service request methods',\n labelNames: ['method'],\n registers: [],\n })\n\nlet cache: {\n rpcRequestCount: ReturnType<typeof rpcRequestCountFactory>\n rpcRequestMethods: ReturnType<typeof rpcRequestMethodsFactory>\n rpcResponseTime: ReturnType<typeof rpcResponseTimeFactory>\n} | null = null\n\nexport const rpcMetricsFactory = (prefix: string, registry: Registry) => {\n if (cache == null) {\n const rpcRequestCount = rpcRequestCountFactory(prefix)\n registry.registerMetric(rpcRequestCount)\n\n const rpcRequestMethods = rpcRequestMethodsFactory(prefix)\n registry.registerMetric(rpcRequestMethods)\n\n const rpcResponseTime = rpcResponseTimeFactory(prefix)\n registry.registerMetric(rpcResponseTime)\n\n cache = {\n rpcRequestCount,\n rpcRequestMethods,\n rpcResponseTime,\n }\n }\n\n return cache\n}\n","/*\n * We need to limit how many statuses reported to prometheus, because of cardinality\n *\n * Examples:\n * getStatusLabel(200) => '2xx'\n * getStatusLabel(404) => '4xx'\n * getStatusLabel(undefined) => 'xxx'\n */\nexport const getStatusLabel = (status: number | undefined) => {\n if (status == null || status < 100 || status > 600) {\n return 'xxx'\n }\n const majorStatus = Math.trunc(status / 100)\n return `${majorStatus}xx`\n}\n\n/*\n * We also need to limit cardinality of provider labels reported to prometheus, but here\n * we don't need to check if provider is included in the list of available providers,\n * because we get provider from this list itself, but not from user.\n *\n * Examples:\n * getProviderLabel('https://eth-mainnet.alchemyapi.io/v2/...') => 'alchemyapi.io'\n * getProviderLabel('https://goerli.infura.io/v3/...') => 'infura.io'\n */\nexport const getProviderLabel = (providerURL: string) => {\n const parsedUrl = new URL(providerURL)\n return parsedUrl.hostname.split('.').slice(-2).join('.')\n}\n"],"names":[],"version":3,"file":"index.cjs.map","sourceRoot":"../../../../"}
|
package/dist/index.mjs
CHANGED
|
@@ -28,7 +28,7 @@ const $47a0dd68c3055fb6$export$c71d26d8163583e2 = (prefix)=>new (0, $h0jCT$Gauge
|
|
|
28
28
|
],
|
|
29
29
|
registers: []
|
|
30
30
|
});
|
|
31
|
-
const $47a0dd68c3055fb6$export$ee77f8ab9c4e7a05 = ({ prefix: prefix
|
|
31
|
+
const $47a0dd68c3055fb6$export$ee77f8ab9c4e7a05 = ({ prefix: prefix, registry: registry, defaultChain: defaultChain, supportedChains: supportedChains, version: version, commit: commit, branch: branch })=>{
|
|
32
32
|
const chainConfig = $47a0dd68c3055fb6$export$3912f78fe5436ec0(prefix);
|
|
33
33
|
registry.registerMetric(chainConfig);
|
|
34
34
|
chainConfig.labels({
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"
|
|
1
|
+
{"mappings":";;;;;;;;;;;ACEO,MAAM,4CAAqB,CAAC,SACjC,IAAI,CAAA,GAAA,YAAI,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAiB;SAAmB;QACjD,WAAW,EAAE;IACf;AAEK,MAAM,4CAAmB,CAAC,SAC/B,IAAI,CAAA,GAAA,YAAI,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;YAAU;SAAS;QAC3C,WAAW,EAAE;IACf;AAWK,MAAM,4CAAwB,CAAC,UACpC,MAAM,YACN,QAAQ,gBACR,YAAY,mBACZ,eAAe,WACf,OAAO,UACP,MAAM,UACN,MAAM,EACwB;IAC9B,MAAM,cAAc,0CAAmB;IACvC,SAAS,eAAe;IACxB,YAAY,OAAO;QAAE,eAAe;IAAa,GAAG,IAAI;IACxD,gBAAgB,QAAQ,CAAC;QACvB,YAAY,OAAO;YAAE,kBAAkB;QAAM,GAAG,IAAI;IACtD;IAEA,MAAM,YAAY,0CAAiB;IACnC,SAAS,eAAe;IACxB,UAAU,OAAO,SAAS,QAAQ,QAAQ,IAAI;AAChD;;;;;;;;;;AC5CO,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,cAAM,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;SAAW;QACnC,WAAW,EAAE;IACf;AAEK,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,gBAAQ,EAAE;QACZ,MAAM,SAAS;QACf,MAAM;QACN,SAAS;YAAC;YAAK;YAAK;YAAK;YAAK;YAAG;YAAK;YAAG;SAAE;QAC3C,YAAY;YAAC;YAAW;YAAY;SAAS;QAC7C,WAAW,EAAE;IACf;AAEK,MAAM,4CAA2B,CAAC,SACvC,IAAI,CAAA,GAAA,cAAM,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;SAAS;QACtB,WAAW,EAAE;IACf;AAEF,IAAI,8BAIO;AAEJ,MAAM,4CAAoB,CAAC,QAAgB;IAChD,IAAI,+BAAS,MAAM;QACjB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,eAAe;QAExB,MAAM,oBAAoB,0CAAyB;QACnD,SAAS,eAAe;QAExB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,eAAe;QAExB,8BAAQ;6BACN;+BACA;6BACA;QACF;IACF;IAEA,OAAO;AACT;;;;;;;ACpDA;;;;;;;CAOC,GACM,MAAM,4CAAiB,CAAC;IAC7B,IAAI,UAAU,QAAQ,SAAS,OAAO,SAAS,KAC7C,OAAO;IAET,MAAM,cAAc,KAAK,MAAM,SAAS;IACxC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;AAC3B;AAWO,MAAM,4CAAmB,CAAC;IAC/B,MAAM,YAAY,IAAI,IAAI;IAC1B,OAAO,UAAU,SAAS,MAAM,KAAK,MAAM,IAAI,KAAK;AACtD;","sources":["packages/api/metrics/src/index.ts","packages/api/metrics/src/collectStartupMetrics.ts","packages/api/metrics/src/rpcMetricsFactory.ts","packages/api/metrics/src/rpcMetricsUtils.ts"],"sourcesContent":["export * from './collectStartupMetrics'\nexport * from './rpcMetricsFactory'\nexport * from './rpcMetricsUtils'\n","import { Gauge, Registry } from 'prom-client'\n\nexport const chainConfigFactory = (prefix: string) =>\n new Gauge({\n name: prefix + 'chain_config_info',\n help: 'Default network and supported networks',\n labelNames: ['default_chain', 'supported_chains'],\n registers: [],\n })\n\nexport const buildInfoFactory = (prefix: string) =>\n new Gauge({\n name: prefix + 'build_info',\n help: 'Version, branch and commit of the current build',\n labelNames: ['version', 'commit', 'branch'],\n registers: [],\n })\n\nexport type TrackStartupMetricsParameters = {\n prefix: string\n registry: Registry\n defaultChain: string\n supportedChains: string[]\n version: string\n commit: string\n branch: string\n}\nexport const collectStartupMetrics = ({\n prefix,\n registry,\n defaultChain,\n supportedChains,\n version,\n commit,\n branch,\n}: TrackStartupMetricsParameters) => {\n const chainConfig = chainConfigFactory(prefix)\n registry.registerMetric(chainConfig)\n chainConfig.labels({ default_chain: defaultChain }).set(1)\n supportedChains.forEach((chain) => {\n chainConfig.labels({ supported_chains: chain }).set(1)\n })\n\n const buildInfo = buildInfoFactory(prefix)\n registry.registerMetric(buildInfo)\n buildInfo.labels(version, commit, branch).set(1)\n}\n","import { Counter, Histogram, Registry } from 'prom-client'\n\nexport const rpcRequestCountFactory = (prefix: string) =>\n new Counter({\n name: prefix + 'rpc_service_request',\n help: 'RPC service request count',\n labelNames: ['chainId', 'provider'],\n registers: [],\n })\n\nexport const rpcResponseTimeFactory = (prefix: string) =>\n new Histogram({\n name: prefix + 'rpc_service_response',\n help: 'RPC service response time seconds',\n buckets: [0.1, 0.2, 0.3, 0.6, 1, 1.5, 2, 5],\n labelNames: ['chainId', 'provider', 'status'],\n registers: [],\n })\n\nexport const rpcRequestMethodsFactory = (prefix: string) =>\n new Counter({\n name: prefix + 'rpc_service_request_methods',\n help: 'RPC service request methods',\n labelNames: ['method'],\n registers: [],\n })\n\nlet cache: {\n rpcRequestCount: ReturnType<typeof rpcRequestCountFactory>\n rpcRequestMethods: ReturnType<typeof rpcRequestMethodsFactory>\n rpcResponseTime: ReturnType<typeof rpcResponseTimeFactory>\n} | null = null\n\nexport const rpcMetricsFactory = (prefix: string, registry: Registry) => {\n if (cache == null) {\n const rpcRequestCount = rpcRequestCountFactory(prefix)\n registry.registerMetric(rpcRequestCount)\n\n const rpcRequestMethods = rpcRequestMethodsFactory(prefix)\n registry.registerMetric(rpcRequestMethods)\n\n const rpcResponseTime = rpcResponseTimeFactory(prefix)\n registry.registerMetric(rpcResponseTime)\n\n cache = {\n rpcRequestCount,\n rpcRequestMethods,\n rpcResponseTime,\n }\n }\n\n return cache\n}\n","/*\n * We need to limit how many statuses reported to prometheus, because of cardinality\n *\n * Examples:\n * getStatusLabel(200) => '2xx'\n * getStatusLabel(404) => '4xx'\n * getStatusLabel(undefined) => 'xxx'\n */\nexport const getStatusLabel = (status: number | undefined) => {\n if (status == null || status < 100 || status > 600) {\n return 'xxx'\n }\n const majorStatus = Math.trunc(status / 100)\n return `${majorStatus}xx`\n}\n\n/*\n * We also need to limit cardinality of provider labels reported to prometheus, but here\n * we don't need to check if provider is included in the list of available providers,\n * because we get provider from this list itself, but not from user.\n *\n * Examples:\n * getProviderLabel('https://eth-mainnet.alchemyapi.io/v2/...') => 'alchemyapi.io'\n * getProviderLabel('https://goerli.infura.io/v3/...') => 'infura.io'\n */\nexport const getProviderLabel = (providerURL: string) => {\n const parsedUrl = new URL(providerURL)\n return parsedUrl.hostname.split('.').slice(-2).join('.')\n}\n"],"names":[],"version":3,"file":"index.mjs.map","sourceRoot":"../../../../"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Utils to work with common API metrics",
|
|
4
4
|
"repository": "git@github.com:lidofinance/warehouse.git",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.31.0",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"prom-client": "^14.0.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@lidofinance/config-prettier": "~0.
|
|
27
|
+
"@lidofinance/config-prettier": "~0.31.0",
|
|
28
28
|
"prom-client": "^14.1.0"
|
|
29
29
|
}
|
|
30
30
|
}
|