mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
Merge branch 'prom-relay-verb' into 'main'
prometheus: track relay messages by verb Closes #166 See merge request soapbox-pub/ditto!397
This commit is contained in:
commit
4ed289e5c3
2 changed files with 5 additions and 15 deletions
|
|
@ -10,7 +10,7 @@ import {
|
||||||
|
|
||||||
import { AppController } from '@/app.ts';
|
import { AppController } from '@/app.ts';
|
||||||
import { relayInfoController } from '@/controllers/nostr/relay-info.ts';
|
import { relayInfoController } from '@/controllers/nostr/relay-info.ts';
|
||||||
import { relayCountCounter, relayEventCounter, relayMessageCounter, relayReqCounter } from '@/metrics.ts';
|
import { relayEventCounter, relayMessageCounter } from '@/metrics.ts';
|
||||||
import * as pipeline from '@/pipeline.ts';
|
import * as pipeline from '@/pipeline.ts';
|
||||||
import { RelayError } from '@/RelayError.ts';
|
import { RelayError } from '@/RelayError.ts';
|
||||||
import { Storages } from '@/storages.ts';
|
import { Storages } from '@/storages.ts';
|
||||||
|
|
@ -23,11 +23,12 @@ function connectStream(socket: WebSocket) {
|
||||||
const controllers = new Map<string, AbortController>();
|
const controllers = new Map<string, AbortController>();
|
||||||
|
|
||||||
socket.onmessage = (e) => {
|
socket.onmessage = (e) => {
|
||||||
relayMessageCounter.inc();
|
|
||||||
const result = n.json().pipe(n.clientMsg()).safeParse(e.data);
|
const result = n.json().pipe(n.clientMsg()).safeParse(e.data);
|
||||||
if (result.success) {
|
if (result.success) {
|
||||||
|
relayMessageCounter.inc({ verb: result.data[0] });
|
||||||
handleMsg(result.data);
|
handleMsg(result.data);
|
||||||
} else {
|
} else {
|
||||||
|
relayMessageCounter.inc();
|
||||||
send(['NOTICE', 'Invalid message.']);
|
send(['NOTICE', 'Invalid message.']);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -42,18 +43,15 @@ function connectStream(socket: WebSocket) {
|
||||||
function handleMsg(msg: NostrClientMsg) {
|
function handleMsg(msg: NostrClientMsg) {
|
||||||
switch (msg[0]) {
|
switch (msg[0]) {
|
||||||
case 'REQ':
|
case 'REQ':
|
||||||
relayReqCounter.inc();
|
|
||||||
handleReq(msg);
|
handleReq(msg);
|
||||||
return;
|
return;
|
||||||
case 'EVENT':
|
case 'EVENT':
|
||||||
relayEventCounter.inc({ kind: msg[1].kind.toString() });
|
|
||||||
handleEvent(msg);
|
handleEvent(msg);
|
||||||
return;
|
return;
|
||||||
case 'CLOSE':
|
case 'CLOSE':
|
||||||
handleClose(msg);
|
handleClose(msg);
|
||||||
return;
|
return;
|
||||||
case 'COUNT':
|
case 'COUNT':
|
||||||
relayCountCounter.inc();
|
|
||||||
handleCount(msg);
|
handleCount(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -93,6 +91,7 @@ function connectStream(socket: WebSocket) {
|
||||||
|
|
||||||
/** Handle EVENT. Store the event. */
|
/** Handle EVENT. Store the event. */
|
||||||
async function handleEvent([_, event]: NostrClientEVENT): Promise<void> {
|
async function handleEvent([_, event]: NostrClientEVENT): Promise<void> {
|
||||||
|
relayEventCounter.inc({ kind: event.kind.toString() });
|
||||||
try {
|
try {
|
||||||
// This will store it (if eligible) and run other side-effects.
|
// This will store it (if eligible) and run other side-effects.
|
||||||
await pipeline.handleEvent(event, AbortSignal.timeout(1000));
|
await pipeline.handleEvent(event, AbortSignal.timeout(1000));
|
||||||
|
|
|
||||||
|
|
@ -24,25 +24,16 @@ export const pipelineEventCounter = new Counter({
|
||||||
labelNames: ['kind'],
|
labelNames: ['kind'],
|
||||||
});
|
});
|
||||||
|
|
||||||
export const relayReqCounter = new Counter({
|
|
||||||
name: 'relay_reqs_total',
|
|
||||||
help: 'Total number of REQ messages processed by the relay',
|
|
||||||
});
|
|
||||||
|
|
||||||
export const relayEventCounter = new Counter({
|
export const relayEventCounter = new Counter({
|
||||||
name: 'relay_events_total',
|
name: 'relay_events_total',
|
||||||
help: 'Total number of EVENT messages processed by the relay',
|
help: 'Total number of EVENT messages processed by the relay',
|
||||||
labelNames: ['kind'],
|
labelNames: ['kind'],
|
||||||
});
|
});
|
||||||
|
|
||||||
export const relayCountCounter = new Counter({
|
|
||||||
name: 'relay_counts_total',
|
|
||||||
help: 'Total number of COUNT messages processed by the relay',
|
|
||||||
});
|
|
||||||
|
|
||||||
export const relayMessageCounter = new Counter({
|
export const relayMessageCounter = new Counter({
|
||||||
name: 'relay_messages_total',
|
name: 'relay_messages_total',
|
||||||
help: 'Total number of Nostr messages processed by the relay',
|
help: 'Total number of Nostr messages processed by the relay',
|
||||||
|
labelNames: ['verb'],
|
||||||
});
|
});
|
||||||
|
|
||||||
export const dbQueryCounter = new Counter({
|
export const dbQueryCounter = new Counter({
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue