Skip to content

Commit 72d2eac

Browse files
committed
refactor(otel): organize metrics into specialized metric groups
1 parent f313563 commit 72d2eac

File tree

9 files changed

+277
-137
lines changed

9 files changed

+277
-137
lines changed

packages/client/lib/client/commands-queue.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ export default class RedisCommandsQueue {
209209
return Promise.reject(new AbortError());
210210
}
211211

212-
const recordOperation = OTelMetrics.instance.createRecordOperationDuration(args, otelAttributes);
213-
OTelMetrics.instance.recordPendingRequests(1, otelAttributes);
212+
const recordOperation = OTelMetrics.instance.commandMetrics.createRecordOperationDuration(args, otelAttributes);
213+
OTelMetrics.instance.connectionAdvancedMetrics.recordPendingRequests(1, otelAttributes);
214214

215215
return new Promise((resolve, reject) => {
216216
let node: DoublyLinkedNode<CommandToWrite>;
@@ -221,12 +221,12 @@ export default class RedisCommandsQueue {
221221
timeout: undefined,
222222
resolve: reply => {
223223
recordOperation()
224-
OTelMetrics.instance.recordPendingRequests(-1, otelAttributes);
224+
OTelMetrics.instance.connectionAdvancedMetrics.recordPendingRequests(-1, otelAttributes);
225225
resolve(reply as T);
226226
},
227227
reject: (err) => {
228228
recordOperation(err as Error);
229-
OTelMetrics.instance.recordPendingRequests(-1, otelAttributes);
229+
OTelMetrics.instance.connectionAdvancedMetrics.recordPendingRequests(-1, otelAttributes);
230230
reject(err);
231231
},
232232
channelsCounter: undefined,

packages/client/lib/client/enterprise-maintenance-manager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ export default class EnterpriseMaintenanceManager {
112112
throw error;
113113
}
114114

115-
OTelMetrics.instance.recordClientErrorsHandled(METRIC_ERROR_TYPE.HANDSHAKE_FAILED, {
115+
OTelMetrics.instance.resiliencyMetrics.recordClientErrorsHandled(METRIC_ERROR_TYPE.HANDSHAKE_FAILED, {
116116
host,
117117
// TODO add port
118118
// port: options?.socket?.port,
@@ -142,7 +142,7 @@ export default class EnterpriseMaintenanceManager {
142142

143143
const type = String(push[0]);
144144

145-
OTelMetrics.instance.recordMaintenanceNotifications(this.#client._getClientOTelAttributes());
145+
OTelMetrics.instance.resiliencyMetrics.recordMaintenanceNotifications(this.#client._getClientOTelAttributes());
146146

147147
emitDiagnostics({
148148
type,
@@ -277,7 +277,7 @@ export default class EnterpriseMaintenanceManager {
277277
dbgMaintenance("Resume writing");
278278
this.#client._unpause();
279279
this.#onMigrated();
280-
OTelMetrics.instance.recordConnectionHandoff(this.#client._getClientOTelAttributes());
280+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionHandoff(this.#client._getClientOTelAttributes());
281281
};
282282

283283
#onMigrating = () => {

packages/client/lib/client/socket.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -238,16 +238,16 @@ export default class RedisSocket extends EventEmitter {
238238
this.#isReady = true;
239239
this.#socketEpoch++;
240240
this.emit('ready');
241-
OTelMetrics.instance.recordConnectionCount(1, {
241+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(1, {
242242
host: this.host,
243243
port: this.port,
244244
});
245-
OTelMetrics.instance.recordConnectionCreateTime(performance.now() - started, {
245+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCreateTime(performance.now() - started, {
246246
host: this.host,
247247
port: this.port,
248248
});
249249
} catch (err) {
250-
const retryIn = this.#shouldReconnect(retries++, err as Error);
250+
const retryIn = this.#shouldReconnect(retries++, err as Error);``
251251
if (typeof retryIn !== 'number') {
252252
throw retryIn;
253253
}
@@ -270,13 +270,13 @@ export default class RedisSocket extends EventEmitter {
270270

271271
if(ms !== undefined) {
272272
this.#socket?.setTimeout(ms);
273-
OTelMetrics.instance.recordConnectionRelaxedTimeout(1, {
273+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionRelaxedTimeout(1, {
274274
host: this.host,
275275
port: this.port,
276276
});
277277
} else {
278278
this.#socket?.setTimeout(this.#socketTimeout ?? 0);
279-
OTelMetrics.instance.recordConnectionRelaxedTimeout(-1, {
279+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionRelaxedTimeout(-1, {
280280
host: this.host,
281281
port: this.port,
282282
});
@@ -331,7 +331,7 @@ export default class RedisSocket extends EventEmitter {
331331
this.emit('error', err);
332332

333333
if (wasReady) {
334-
OTelMetrics.instance.recordConnectionCount(-1, {
334+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(-1, {
335335
host: this.host,
336336
port: this.port,
337337
});
@@ -395,7 +395,7 @@ export default class RedisSocket extends EventEmitter {
395395
this.#socket = undefined;
396396
}
397397

398-
OTelMetrics.instance.recordConnectionCount(-1, {
398+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(-1, {
399399
host: this.host,
400400
port: this.port,
401401
});

packages/client/lib/cluster/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ export default class RedisCluster<
434434
}
435435

436436
if (err.message.startsWith('ASK')) {
437-
OTelMetrics.instance.recordClientErrorsHandled(METRIC_ERROR_TYPE.ASK, client._getClientOTelAttributes());
437+
OTelMetrics.instance.resiliencyMetrics.recordClientErrorsHandled(METRIC_ERROR_TYPE.ASK, client._getClientOTelAttributes());
438438
const address = err.message.substring(err.message.lastIndexOf(' ') + 1);
439439
let redirectTo = await this._slots.getMasterByAddress(address);
440440
if (!redirectTo) {
@@ -452,7 +452,7 @@ export default class RedisCluster<
452452
}
453453

454454
if (err.message.startsWith('MOVED')) {
455-
OTelMetrics.instance.recordClientErrorsHandled(METRIC_ERROR_TYPE.MOVED, client._getClientOTelAttributes());
455+
OTelMetrics.instance.resiliencyMetrics.recordClientErrorsHandled(METRIC_ERROR_TYPE.MOVED, client._getClientOTelAttributes());
456456
await this._slots.rediscover(client);
457457
client = await this._slots.getClient(firstKey, isReadonly);
458458
continue;

packages/client/lib/opentelemetry/metrics.spec.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ describe("OTel Metrics Unit Tests", () => {
3939
it("should be noop if not initialized", () => {
4040
const addSpy = spy(NOOP_UP_DOWN_COUNTER_METRIC, "add");
4141

42-
OTelMetrics.instance.recordConnectionCount(1);
42+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(1);
4343

4444
assert.equal(addSpy.callCount, 1);
4545

@@ -57,7 +57,7 @@ describe("OTel Metrics Unit Tests", () => {
5757

5858
OTelMetrics.init({ api: undefined, config });
5959

60-
OTelMetrics.instance.recordConnectionCount(1);
60+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(1);
6161

6262
assert.equal(addSpy.callCount, 1);
6363

@@ -75,7 +75,7 @@ describe("OTel Metrics Unit Tests", () => {
7575

7676
OTelMetrics.init({ api: undefined, config });
7777

78-
OTelMetrics.instance.recordConnectionCount(1);
78+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(1);
7979

8080
assert.equal(addSpy.callCount, 1);
8181

@@ -92,7 +92,7 @@ describe("OTel Metrics Unit Tests", () => {
9292

9393
OTelMetrics.init({ api: undefined, config });
9494

95-
const recordGET = OTelMetrics.instance.createRecordOperationDuration(
95+
const recordGET = OTelMetrics.instance.commandMetrics.createRecordOperationDuration(
9696
["GET", "key"],
9797
{
9898
host: "localhost",
@@ -107,7 +107,7 @@ describe("OTel Metrics Unit Tests", () => {
107107
"expect record to be noop function"
108108
);
109109

110-
const recordSET = OTelMetrics.instance.createRecordOperationDuration(
110+
const recordSET = OTelMetrics.instance.commandMetrics.createRecordOperationDuration(
111111
["SET", "key"],
112112
{
113113
host: "localhost",
@@ -133,7 +133,7 @@ describe("OTel Metrics Unit Tests", () => {
133133

134134
OTelMetrics.init({ api: undefined, config });
135135

136-
const recordGET = OTelMetrics.instance.createRecordOperationDuration(
136+
const recordGET = OTelMetrics.instance.commandMetrics.createRecordOperationDuration(
137137
["GET", "key"],
138138
{
139139
host: "localhost",
@@ -148,7 +148,7 @@ describe("OTel Metrics Unit Tests", () => {
148148
"expect record to be noop function"
149149
);
150150

151-
const recordSET = OTelMetrics.instance.createRecordOperationDuration(
151+
const recordSET = OTelMetrics.instance.commandMetrics.createRecordOperationDuration(
152152
["SET", "key"],
153153
{
154154
host: "localhost",
@@ -203,9 +203,9 @@ describe("OTel Metrics E2E", function () {
203203

204204
OTelMetrics.init({ api, config });
205205

206-
OTelMetrics.instance.recordConnectionCount(1);
207-
OTelMetrics.instance.recordConnectionCount(2);
208-
OTelMetrics.instance.recordConnectionCount(3);
206+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(1);
207+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(2);
208+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(3);
209209

210210
await meterProvider.forceFlush();
211211

@@ -236,7 +236,7 @@ describe("OTel Metrics E2E", function () {
236236

237237
OTelMetrics.init({ api, config });
238238

239-
OTelMetrics.instance.recordConnectionCount(5);
239+
OTelMetrics.instance.connectionBasicMetrics.recordConnectionCount(5);
240240

241241
await meterProvider.forceFlush();
242242

0 commit comments

Comments
 (0)