Files
outline/server/collaboration/MetricsExtension.ts
Tom Moor 7380f6d5ae fix: Maximum number of connections reached, closes #5446
The opposite of onDisconnect is connected, not onConnect. smh.
2023-10-28 10:32:58 -04:00

73 lines
1.8 KiB
TypeScript

import {
onChangePayload,
onDisconnectPayload,
onLoadDocumentPayload,
Extension,
connectedPayload,
} from "@hocuspocus/server";
import Metrics from "@server/logging/Metrics";
import { withContext } from "./types";
export default class MetricsExtension implements Extension {
async onLoadDocument({
documentName,
instance,
}: withContext<onLoadDocumentPayload>) {
Metrics.increment("collaboration.load_document", {
documentName,
});
Metrics.gaugePerInstance(
"collaboration.documents_count",
instance.getDocumentsCount()
);
}
onAuthenticationFailed({ documentName }: { documentName: string }) {
Metrics.increment("collaboration.authentication_failed", {
documentName,
});
}
async connected({ documentName, instance }: withContext<connectedPayload>) {
Metrics.increment("collaboration.connect", {
documentName,
});
Metrics.gaugePerInstance(
"collaboration.connections_count",
instance.getConnectionsCount() + 1
);
Metrics.gaugePerInstance(
"collaboration.documents_count",
instance.getDocumentsCount()
);
}
async onDisconnect({
documentName,
instance,
}: withContext<onDisconnectPayload>) {
Metrics.increment("collaboration.disconnect", {
documentName,
});
Metrics.gaugePerInstance(
"collaboration.connections_count",
instance.getConnectionsCount()
);
Metrics.gaugePerInstance(
"collaboration.documents_count",
instance.getDocumentsCount()
);
}
async onStoreDocument({ documentName }: withContext<onChangePayload>) {
Metrics.increment("collaboration.change", {
documentName,
});
}
async onDestroy() {
Metrics.gaugePerInstance("collaboration.connections_count", 0);
Metrics.gaugePerInstance("collaboration.documents_count", 0);
}
}