Skip to content

Commit d770ad3

Browse files
monitor retries and bumps
1 parent 2ef6010 commit d770ad3

File tree

4 files changed

+52
-0
lines changed

4 files changed

+52
-0
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"@fastify/type-provider-typebox": "^2.0.1",
3636
"@godaddy/terminus": "^4.11.0",
3737
"@osskit/fastify-enforce-headers": "^0.0.5",
38+
"@osskit/fetch-enhancers": "^3.0.0",
3839
"@osskit/monitor": "^5.0.0",
3940
"@sinclair/typebox": "^0.24.8",
4041
"dotenv": "^16.0.1",
@@ -46,6 +47,7 @@
4647
"mongodb": "^4.7.0",
4748
"pino": "^8.1.0",
4849
"prom-client": "^14.0.1",
50+
"replace-url-values": "^1.0.0",
4951
"uuid": "^8.3.2"
5052
},
5153
"devDependencies": {

src/framework/environment.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import env from 'env-var';
22

33
export const nodeEnv = env.get('NODE_ENV').required().asString();
4+
export const serviceName = 'example-api';
45
export const port = env.get('PORT').default(3000).asPortNumber();
56
export const mongoUri = env.get('MONGO_URI').required().asString();
67
export const mongoDb = env.get('MONGO_DB_NAME').required().asString();

src/framework/monitorRetry.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Counter } from 'prom-client';
2+
import type { FetchError } from '@osskit/fetch-enhancers';
3+
import { replaceUrlValues } from 'replace-url-values';
4+
import { serviceName } from './environment.js';
5+
6+
const retryCounter = new Counter({
7+
name: `${serviceName.replaceAll('-', '_')}_retries`,
8+
help: 'service retry counter',
9+
labelNames: ['path', 'reason', 'attempt'],
10+
});
11+
12+
export default (err: FetchError) => {
13+
retryCounter.inc({
14+
path: err.url ? replaceUrlValues(err.url) : 'unknown',
15+
reason: err.data?.status ?? 'unknown',
16+
attempt: err.data?.attempt,
17+
});
18+
};

yarn.lock

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,15 @@
780780
fastify-plugin "^3.0.1"
781781
http-errors "^2.0.0"
782782

783+
"@osskit/fetch-enhancers@^3.0.0":
784+
version "3.0.0"
785+
resolved "https://registry.yarnpkg.com/@osskit/fetch-enhancers/-/fetch-enhancers-3.0.0.tgz#289766890a1ba32716c2af5fc1a1805b38cc7a04"
786+
integrity sha512-2oTOclJS9BEdZ6AZSOOgSQ1DJimGvZ5K7UZIwhDSGglJOgoyXTjcGr4wCXvDZEd6ZtmOFl0YazkSf5h/9h0X7w==
787+
dependencies:
788+
abort-controller "^3.0.0"
789+
async-retry "^1.3.3"
790+
lodash.clonedeep "^4.5.0"
791+
783792
"@osskit/monitor@^5.0.0":
784793
version "5.0.0"
785794
resolved "https://registry.yarnpkg.com/@osskit/monitor/-/monitor-5.0.0.tgz#26581986074f7ad54b6b8264e9438a05197fd549"
@@ -1320,6 +1329,13 @@ async-hook-jl@^1.7.6:
13201329
dependencies:
13211330
stack-chain "^1.3.7"
13221331

1332+
async-retry@^1.3.3:
1333+
version "1.3.3"
1334+
resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280"
1335+
integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==
1336+
dependencies:
1337+
retry "0.13.1"
1338+
13231339
asynchronous-local-storage@^1.0.2:
13241340
version "1.0.2"
13251341
resolved "https://registry.yarnpkg.com/asynchronous-local-storage/-/asynchronous-local-storage-1.0.2.tgz#df2491534707566e039e2508a019b6e348ef49cc"
@@ -3839,6 +3855,11 @@ locate-path@^5.0.0:
38393855
dependencies:
38403856
p-locate "^4.1.0"
38413857

3858+
lodash.clonedeep@^4.5.0:
3859+
version "4.5.0"
3860+
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
3861+
integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
3862+
38423863
lodash.memoize@4.x:
38433864
version "4.1.2"
38443865
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -4663,6 +4684,11 @@ registry-url@^5.0.0:
46634684
dependencies:
46644685
rc "^1.2.8"
46654686

4687+
replace-url-values@^1.0.0:
4688+
version "1.0.0"
4689+
resolved "https://registry.yarnpkg.com/replace-url-values/-/replace-url-values-1.0.0.tgz#e8210935fd9b9d66ebd59c16b4b35258f59146c7"
4690+
integrity sha512-tH0mBmjqC22ZLQMiVdnPdHQs1PrrJwUBXECj8Gjal4JVd34fa4Qx1sw5ATKsUHxMg8yDJ+Y84NOzUuRI9GtPvA==
4691+
46664692
require-directory@^2.1.1:
46674693
version "2.1.1"
46684694
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -4724,6 +4750,11 @@ ret@~0.2.0:
47244750
resolved "https://registry.yarnpkg.com/ret/-/ret-0.2.2.tgz#b6861782a1f4762dce43402a71eb7a283f44573c"
47254751
integrity sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==
47264752

4753+
retry@0.13.1:
4754+
version "0.13.1"
4755+
resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
4756+
integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
4757+
47274758
reusify@^1.0.4:
47284759
version "1.0.4"
47294760
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"

0 commit comments

Comments
 (0)