@lidofinance/api-metrics 0.10.0 → 0.12.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 +8 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +8 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -128,7 +128,14 @@ var $d7531565112499b5$exports = {};
|
|
|
128
128
|
|
|
129
129
|
$parcel$export($d7531565112499b5$exports, "getStatusLabel", () => $d7531565112499b5$export$489c297e3a119321);
|
|
130
130
|
$parcel$export($d7531565112499b5$exports, "getProviderLabel", () => $d7531565112499b5$export$f40021662990adcd);
|
|
131
|
-
|
|
131
|
+
/*
|
|
132
|
+
* We need to limit how many statuses reported to prometheus, because of cardinality
|
|
133
|
+
*
|
|
134
|
+
* Examples:
|
|
135
|
+
* getStatusLabel(200) => '2xx'
|
|
136
|
+
* getStatusLabel(404) => '4xx'
|
|
137
|
+
* getStatusLabel(undefined) => 'xxx'
|
|
138
|
+
*/ const $d7531565112499b5$export$489c297e3a119321 = (status)=>{
|
|
132
139
|
if (status == null || status < 100 || status > 600) return "xxx";
|
|
133
140
|
const majorStatus = Math.trunc(status / 100);
|
|
134
141
|
return `${majorStatus}xx`;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEO,MAAM,
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AAEO,MAAM,4CAAqB,CAAC,SACjC,IAAI,CAAA,GAAA,uBAAK,AAAD,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAiB;SAAmB;QACjD,WAAW,EAAE;IACf;AAEK,MAAM,4CAAmB,CAAC,SAC/B,IAAI,CAAA,GAAA,uBAAK,AAAD,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;YAAU;SAAS;QAC3C,WAAW,EAAE;IACf;AAWK,MAAM,4CAAwB,CAAC,UACpC,OAAM,YACN,SAAQ,gBACR,aAAY,mBACZ,gBAAe,WACf,QAAO,UACP,OAAM,UACN,OAAM,EACwB,GAAK;IACnC,MAAM,cAAc,0CAAmB;IACvC,SAAS,cAAc,CAAC;IACxB,YAAY,MAAM,CAAC;QAAE,eAAe;IAAa,GAAG,GAAG,CAAC;IACxD,gBAAgB,OAAO,CAAC,CAAC,QAAU;QACjC,YAAY,MAAM,CAAC;YAAE,kBAAkB;QAAM,GAAG,GAAG,CAAC;IACtD;IAEA,MAAM,YAAY,0CAAiB;IACnC,SAAS,cAAc,CAAC;IACxB,UAAU,MAAM,CAAC,SAAS,QAAQ,QAAQ,GAAG,CAAC;AAChD;;AD9CA;;;;;;;AEAA;AAEO,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,yBAAO,AAAD,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;SAAW;QACnC,WAAW,EAAE;IACf;AAEK,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,2BAAS,AAAD,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,yBAAO,AAAD,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;SAAS;QACtB,WAAW,EAAE;IACf;AAEF,IAAI,8BAIO,IAAI;AAER,MAAM,4CAAoB,CAAC,QAAgB,WAAuB;IACvE,IAAI,+BAAS,IAAI,EAAE;QACjB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,cAAc,CAAC;QAExB,MAAM,oBAAoB,0CAAyB;QACnD,SAAS,cAAc,CAAC;QAExB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,cAAc,CAAC;QAExB,8BAAQ;6BACN;+BACA;6BACA;QACF;IACF,CAAC;IAED,OAAO;AACT;;;;;;;ACpDA;;;;;;;CAOC,GACD,AAAO,MAAM,4CAAiB,CAAC,SAA+B;IAC5D,IAAI,UAAU,IAAI,IAAI,SAAS,OAAO,SAAS,KAC7C,OAAO;IAET,MAAM,cAAc,KAAK,KAAK,CAAC,SAAS;IACxC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;AAC3B;AAWO,MAAM,4CAAmB,CAAC,cAAwB;IACvD,MAAM,YAAY,IAAI,IAAI;IAC1B,OAAO,UAAU,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;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
|
@@ -112,7 +112,14 @@ var $5ad633af864064eb$exports = {};
|
|
|
112
112
|
|
|
113
113
|
$parcel$export($5ad633af864064eb$exports, "getStatusLabel", () => $5ad633af864064eb$export$489c297e3a119321);
|
|
114
114
|
$parcel$export($5ad633af864064eb$exports, "getProviderLabel", () => $5ad633af864064eb$export$f40021662990adcd);
|
|
115
|
-
|
|
115
|
+
/*
|
|
116
|
+
* We need to limit how many statuses reported to prometheus, because of cardinality
|
|
117
|
+
*
|
|
118
|
+
* Examples:
|
|
119
|
+
* getStatusLabel(200) => '2xx'
|
|
120
|
+
* getStatusLabel(404) => '4xx'
|
|
121
|
+
* getStatusLabel(undefined) => 'xxx'
|
|
122
|
+
*/ const $5ad633af864064eb$export$489c297e3a119321 = (status)=>{
|
|
116
123
|
if (status == null || status < 100 || status > 600) return "xxx";
|
|
117
124
|
const majorStatus = Math.trunc(status / 100);
|
|
118
125
|
return `${majorStatus}xx`;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;;;;;;;;ACAA;AAEO,MAAM,
|
|
1
|
+
{"mappings":";;;;;;;;;;ACAA;AAEO,MAAM,4CAAqB,CAAC,SACjC,IAAI,CAAA,GAAA,YAAK,AAAD,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAiB;SAAmB;QACjD,WAAW,EAAE;IACf;AAEK,MAAM,4CAAmB,CAAC,SAC/B,IAAI,CAAA,GAAA,YAAK,AAAD,EAAE;QACR,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;YAAU;SAAS;QAC3C,WAAW,EAAE;IACf;AAWK,MAAM,4CAAwB,CAAC,UACpC,OAAM,YACN,SAAQ,gBACR,aAAY,mBACZ,gBAAe,WACf,QAAO,UACP,OAAM,UACN,OAAM,EACwB,GAAK;IACnC,MAAM,cAAc,0CAAmB;IACvC,SAAS,cAAc,CAAC;IACxB,YAAY,MAAM,CAAC;QAAE,eAAe;IAAa,GAAG,GAAG,CAAC;IACxD,gBAAgB,OAAO,CAAC,CAAC,QAAU;QACjC,YAAY,MAAM,CAAC;YAAE,kBAAkB;QAAM,GAAG,GAAG,CAAC;IACtD;IAEA,MAAM,YAAY,0CAAiB;IACnC,SAAS,cAAc,CAAC;IACxB,UAAU,MAAM,CAAC,SAAS,QAAQ,QAAQ,GAAG,CAAC;AAChD;;AD9CA;;;;;;;AEAA;AAEO,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,cAAO,AAAD,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;YAAW;SAAW;QACnC,WAAW,EAAE;IACf;AAEK,MAAM,4CAAyB,CAAC,SACrC,IAAI,CAAA,GAAA,gBAAS,AAAD,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,cAAO,AAAD,EAAE;QACV,MAAM,SAAS;QACf,MAAM;QACN,YAAY;YAAC;SAAS;QACtB,WAAW,EAAE;IACf;AAEF,IAAI,8BAIO,IAAI;AAER,MAAM,4CAAoB,CAAC,QAAgB,WAAuB;IACvE,IAAI,+BAAS,IAAI,EAAE;QACjB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,cAAc,CAAC;QAExB,MAAM,oBAAoB,0CAAyB;QACnD,SAAS,cAAc,CAAC;QAExB,MAAM,kBAAkB,0CAAuB;QAC/C,SAAS,cAAc,CAAC;QAExB,8BAAQ;6BACN;+BACA;6BACA;QACF;IACF,CAAC;IAED,OAAO;AACT;;;;;;;ACpDA;;;;;;;CAOC,GACD,AAAO,MAAM,4CAAiB,CAAC,SAA+B;IAC5D,IAAI,UAAU,IAAI,IAAI,SAAS,OAAO,SAAS,KAC7C,OAAO;IAET,MAAM,cAAc,KAAK,KAAK,CAAC,SAAS;IACxC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;AAC3B;AAWO,MAAM,4CAAmB,CAAC,cAAwB;IACvD,MAAM,YAAY,IAAI,IAAI;IAC1B,OAAO,UAAU,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;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.12.0",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
@@ -16,15 +16,15 @@
|
|
|
16
16
|
"types": "dist/index.d.ts",
|
|
17
17
|
"scripts": {
|
|
18
18
|
"build": "parcel build",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
19
|
+
"lint": "eslint . && prettier --check src",
|
|
20
|
+
"lint:fix": "eslint --fix . && prettier --check src --write",
|
|
21
21
|
"types": "tsc --noEmit"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"prom-client": "^14.0.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@lidofinance/config-prettier": "~0.
|
|
27
|
+
"@lidofinance/config-prettier": "~0.12.0",
|
|
28
28
|
"prom-client": "^14.1.0"
|
|
29
29
|
}
|
|
30
30
|
}
|