Skip to content

Commit 0699b82

Browse files
emit metrics for supplier-allocator
1 parent 72c1a69 commit 0699b82

2 files changed

Lines changed: 47 additions & 3 deletions

File tree

.gitleaksignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,9 @@ debc75a97cfe551a69fd1e8694be483213322a9d:pact-contracts/pacts/letter-rendering/s
2525
4fa1923947bbff2387218d698d766cbb7c121a0f:pact-contracts/pacts/letter-rendering/supplier-api-letter-request-prepared.json:generic-api-key:10
2626
d005112adcfd286c3bef076214836dbb2fe8d0b5:.npmrc:npm-access-token:9
2727
d005112adcfd286c3bef076214836dbb2fe8d0b5:.npmrc:github-pat:7
28+
ff889d4c3f29da4468ecf1f05f467fe84d35b2a1:lambdas/supplier-mock/.aws-sam/build/SupplierMockFunction/index.js.map:ipv4:4
29+
ff889d4c3f29da4468ecf1f05f467fe84d35b2a1:lambdas/supplier-mock/.aws-sam/build/SupplierMockFunction/index.js:ipv4:63
30+
ff889d4c3f29da4468ecf1f05f467fe84d35b2a1:lambdas/supplier-mock/.aws-sam/build/SupplierMockFunction/index.js:ipv4:62
31+
ff889d4c3f29da4468ecf1f05f467fe84d35b2a1:lambdas/supplier-mock/.aws-sam/build/SupplierMockFunction/index.js:ipv4:60
32+
ff889d4c3f29da4468ecf1f05f467fe84d35b2a1:lambdas/supplier-mock/.aws-sam/build/SupplierMockFunction/index.js:ipv4:59
33+
ff889d4c3f29da4468ecf1f05f467fe84d35b2a1:lambdas/supplier-mock/.aws-sam/build/SupplierMockFunction/index.js:ipv4:24

lambdas/supplier-allocator/src/handler/allocate-handler.ts

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,28 @@ function emitMetrics(
144144
}
145145
}
146146

147+
function emitSupCampaignClientMetric(
148+
letterEvent: PreparedEvents,
149+
supplier: string,
150+
status: MetricStatus,
151+
deps: Deps,
152+
) {
153+
const namespace = "supplier-allocator";
154+
const clientId = letterEvent ? letterEvent.data.clientId : "unknown";
155+
const campaignId = letterEvent ? letterEvent.data.campaignId : "unknown";
156+
const dimensions: Record<string, string> = {
157+
Supplier: supplier,
158+
ClientId: clientId,
159+
CampaignId: campaignId || "unknown",
160+
};
161+
const metric: MetricEntry = {
162+
key: status,
163+
value: 1,
164+
unit: Unit.Count,
165+
};
166+
deps.logger.info(buildEMFObject(namespace, dimensions, metric));
167+
}
168+
147169
export default function createSupplierAllocatorHandler(deps: Deps): SQSHandler {
148170
return async (event: SQSEvent) => {
149171
const batchItemFailures: SQSBatchItemFailure[] = [];
@@ -153,8 +175,9 @@ export default function createSupplierAllocatorHandler(deps: Deps): SQSHandler {
153175
const tasks = event.Records.map(async (record) => {
154176
let supplier = "unknown";
155177
let priority = "unknown";
178+
let letterEvent: PreparedEvents | undefined;
156179
try {
157-
const letterEvent: unknown = JSON.parse(record.body);
180+
letterEvent = JSON.parse(record.body) as PreparedEvents;
158181

159182
deps.logger.info({
160183
description: "Extracted letter event",
@@ -163,8 +186,8 @@ export default function createSupplierAllocatorHandler(deps: Deps): SQSHandler {
163186

164187
validateType(letterEvent);
165188

166-
const supplierSpec = getSupplier(letterEvent as PreparedEvents, deps);
167-
await getSupplierFromConfig(letterEvent as PreparedEvents, deps);
189+
const supplierSpec = getSupplier(letterEvent, deps);
190+
await getSupplierFromConfig(letterEvent, deps);
168191

169192
supplier = supplierSpec.supplierId;
170193
priority = String(supplierSpec.priority);
@@ -199,6 +222,15 @@ export default function createSupplierAllocatorHandler(deps: Deps): SQSHandler {
199222
);
200223

201224
incrementMetric(perAllocationSuccess, supplier, priority);
225+
// increment clientid
226+
// increment campaignid
227+
// emit metric with current supplier, clientId and campaignId
228+
emitSupCampaignClientMetric(
229+
letterEvent,
230+
supplier,
231+
MetricStatus.Success,
232+
deps,
233+
);
202234
} catch (error) {
203235
deps.logger.error({
204236
description: "Error processing allocation of record",
@@ -208,6 +240,12 @@ export default function createSupplierAllocatorHandler(deps: Deps): SQSHandler {
208240
});
209241
incrementMetric(perAllocationFailure, supplier, priority);
210242
batchItemFailures.push({ itemIdentifier: record.messageId });
243+
emitSupCampaignClientMetric(
244+
letterEvent as PreparedEvents,
245+
supplier,
246+
MetricStatus.Failure,
247+
deps,
248+
);
211249
}
212250
});
213251

0 commit comments

Comments
 (0)