Skip to content
This repository has been archived by the owner on Oct 23, 2024. It is now read-only.

Commit

Permalink
Some metrics
Browse files Browse the repository at this point in the history
  • Loading branch information
maxolofsson1 committed Nov 2, 2023
1 parent d340e7a commit 359b051
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 6 deletions.
4 changes: 4 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import express from "express";
import expressPromiseRouter from "express-promise-router";
import config from "exp-config";
import assert from "assert";

import { init } from "./lib/recipe-repo.js";
import buildLogger from "./lib/logger.js";
Expand All @@ -17,6 +18,9 @@ export function route(key, fn) {
}

export function start({ recipes, triggers, startServer = true }) {

assert(config.appName, "appName must be set in config");

const router = expressPromiseRouter();
const app = express();
app.use(express.json());
Expand Down
8 changes: 8 additions & 0 deletions lib/message-handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import publishMessage, { rejectMessage } from "./publish-message.js";
import resumeMessage from "./resume-message.js";
import buildContext from "./context.js";
import jobStorage from "./job-storage/index.js";
import metrics from "./metrics.js";

const maxResumeCount = config.maxResumeCount || 10;

Expand Down Expand Up @@ -40,6 +41,9 @@ export default async function messageHandler(recipeMap, req, res) {
logger.error(`Got message without key ${messageId}`);
return res.status(400).send();
}

metrics.messages.inc();

logger.info(`incoming message ${JSON.stringify(messageData)}`);
const parts = key.split(".");
const suffix = parts.pop();
Expand Down Expand Up @@ -89,6 +93,7 @@ export default async function messageHandler(recipeMap, req, res) {
try {
const result = await unrecoverableHandler(message, context);
const data = appendData(message.data, result);
metrics.unrecoverableMessages.inc();
await publishMessage({ ...message, data }, { key: `${key}.processed`, correlationId, parentCorrelationId });
} catch (err) {
return res.status(500).send();
Expand All @@ -109,6 +114,7 @@ export default async function messageHandler(recipeMap, req, res) {
// TODO: should we delete the job that was stored here
}
}
metrics.processedSequences.inc();
return res.status(200).send();
}

Expand Down Expand Up @@ -163,10 +169,12 @@ export default async function messageHandler(recipeMap, req, res) {
if (error.rejected) {
logger.error(`Rejected message with correlationId: ${correlationId}. Error: ${error}. Message: ${message}`);
await rejectMessage({ ...message, error: { message: error.extraMessage } }, { key });
metrics.rejectedMessages.inc();
return res.status(200).send();
}
if (error.retry) {
logger.info(`Retrying message ${messageId}`);
metrics.retriedMessages.inc();
return res.status(400).send();
}
if (error.unrecoverable) {
Expand Down
36 changes: 36 additions & 0 deletions lib/metrics.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import config from "exp-config";
import { pushClient, cloudRunResourceProvider } from "@bonniernews/gcp-push-metrics";

import buildLogger from "./logger.js";

const client = pushClient({ logger: buildLogger(), resourceProvider: cloudRunResourceProvider });
const { appName } = config;

const labels = {
bnNamespace: [],
appName: [],
path: [],
};

export default {
messages: client.counter({
name: `lu_${appName}_messages`,
...labels,
}),
rejectedMessages: client.counter({
name: `lu_${appName}_rejected`,
...labels,
}),
retriedMessages: client.counter({
name: `lu_${appName}_retried`,
...labels,
}),
unrecoverableMessages: client.counter({
name: `lu_${appName}_unrecoverable`,
...labels,
}),
processedSequences: client.counter({
name: `lu_${appName}_processed`,
...labels,
}),
};
27 changes: 22 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@
"google-auth-library": "^8.7.0",
"joi": "^17.7.0",
"pino": "^8.7.0",
"uuid": "^9.0.0"
"uuid": "^9.0.0",
"@bonniernews/gcp-push-metrics": "^3.1.0"
},
"devDependencies": {
"@bonniernews/lu-test": "^4.0.0",
Expand All @@ -57,6 +58,9 @@
"lib": "lib",
"test": "test"
},
"overrides": {
"google-gax@<3.6.1": "^3.6.1"
},
"keywords": [
"pubsub"
],
Expand Down

0 comments on commit 359b051

Please sign in to comment.