@lidofinance/api-metrics 0.0.3 → 0.2.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 CHANGED
@@ -69,7 +69,7 @@ $parcel$export($c4da43e18c6d237f$exports, "rpcRequestMethodsFactory", () => $c4d
69
69
  $parcel$export($c4da43e18c6d237f$exports, "rpcMetricsFactory", () => $c4da43e18c6d237f$export$d6ea70e849062acd);
70
70
 
71
71
  const $c4da43e18c6d237f$export$ef58728a4fe523fc = (prefix)=>new (0, $7tm02$promclient.Counter)({
72
- name: prefix + "rpc_service_request_count",
72
+ name: prefix + "rpc_service_request",
73
73
  help: "RPC service request count",
74
74
  labelNames: [
75
75
  "chainId",
@@ -78,7 +78,7 @@ const $c4da43e18c6d237f$export$ef58728a4fe523fc = (prefix)=>new (0, $7tm02$promc
78
78
  registers: []
79
79
  });
80
80
  const $c4da43e18c6d237f$export$43dc308e64f0b05d = (prefix)=>new (0, $7tm02$promclient.Histogram)({
81
- name: prefix + "rpc_service_response_time",
81
+ name: prefix + "rpc_service_response",
82
82
  help: "RPC service response time seconds",
83
83
  buckets: [
84
84
  0.1,
@@ -1 +1 @@
1
- {"mappings":"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","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_count',\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_time',\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":"../../../../"}
1
+ {"mappings":"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","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.d.ts CHANGED
File without changes
File without changes
package/dist/index.mjs CHANGED
@@ -53,7 +53,7 @@ $parcel$export($7dd20a662708807a$exports, "rpcRequestMethodsFactory", () => $7dd
53
53
  $parcel$export($7dd20a662708807a$exports, "rpcMetricsFactory", () => $7dd20a662708807a$export$d6ea70e849062acd);
54
54
 
55
55
  const $7dd20a662708807a$export$ef58728a4fe523fc = (prefix)=>new (0, $h0jCT$Counter)({
56
- name: prefix + "rpc_service_request_count",
56
+ name: prefix + "rpc_service_request",
57
57
  help: "RPC service request count",
58
58
  labelNames: [
59
59
  "chainId",
@@ -62,7 +62,7 @@ const $7dd20a662708807a$export$ef58728a4fe523fc = (prefix)=>new (0, $h0jCT$Count
62
62
  registers: []
63
63
  });
64
64
  const $7dd20a662708807a$export$43dc308e64f0b05d = (prefix)=>new (0, $h0jCT$Histogram)({
65
- name: prefix + "rpc_service_response_time",
65
+ name: prefix + "rpc_service_response",
66
66
  help: "RPC service response time seconds",
67
67
  buckets: [
68
68
  0.1,
@@ -1 +1 @@
1
- {"mappings":"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","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_count',\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_time',\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":"../../../../"}
1
+ {"mappings":"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","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
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@lidofinance/api-metrics",
3
3
  "description": "Utils to work with common API metrics",
4
- "repository": "git@github.com:lidofinance/lido-ui-blocks.git",
4
+ "repository": "git@github.com:lidofinance/warehouse.git",
5
5
  "license": "MIT",
6
- "version": "0.0.3",
6
+ "version": "0.2.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.0.1",
27
+ "@lidofinance/config-prettier": "~0.2.0",
28
28
  "prom-client": "^14.0.0"
29
29
  }
30
30
  }