diff --git a/components/gitpod-messagebus/src/messagebus.ts b/components/gitpod-messagebus/src/messagebus.ts index c52ebbc9c02dc0..f1c2b2c31c0469 100644 --- a/components/gitpod-messagebus/src/messagebus.ts +++ b/components/gitpod-messagebus/src/messagebus.ts @@ -442,11 +442,11 @@ export abstract class AbstractTopicListener implements MessagebusListener { constructor(protected readonly exchangeName: string, protected readonly listener: TopicListener) { } async establish(channel: Channel): Promise { - const topic = await this.topic(); + const topic = this.topic(); return this.doEstablish(channel, topic); } - abstract topic(): Promise; + abstract topic(): string; protected async doEstablish(channel: Channel, topic: string): Promise { if (channel === undefined) { diff --git a/components/server/src/consensus/rabbitmq-consensus-leader-messenger.ts b/components/server/src/consensus/rabbitmq-consensus-leader-messenger.ts index b1e94f5f1d20f6..cdf97d9a715c57 100644 --- a/components/server/src/consensus/rabbitmq-consensus-leader-messenger.ts +++ b/components/server/src/consensus/rabbitmq-consensus-leader-messenger.ts @@ -98,7 +98,7 @@ export class RabbitMQConsensusLeaderMessenger extends AbstractMessageBusIntegrat class EventListener extends AbstractTopicListener { - async topic(): Promise { + topic(): string { return ''; } diff --git a/components/server/src/prometheus-metrics.ts b/components/server/src/prometheus-metrics.ts index 5ef36ea4c236be..ddf410d17db390 100644 --- a/components/server/src/prometheus-metrics.ts +++ b/components/server/src/prometheus-metrics.ts @@ -88,3 +88,16 @@ const httpRequestDuration = new prometheusClient.Histogram({ export function observeHttpRequestDuration(method: string, route: string, statusCode: number, durationInSeconds: number) { httpRequestDuration.observe({ method, route, statusCode }, durationInSeconds); } + +const messagebusTopicReads = new prometheusClient.Counter({ + name: 'gitpod_server_topic_reads_total', + help: 'The amount of reads from messagebus topics.', + labelNames: ['topic'], + registers: [prometheusClient.register] +}); + +export function increaseMessagebusTopicReads(topic: string) { + messagebusTopicReads.inc({ + topic, + }) +} \ No newline at end of file diff --git a/components/server/src/workspace/messagebus-integration.ts b/components/server/src/workspace/messagebus-integration.ts index 006e7627f4087f..1886ea06d72a0a 100644 --- a/components/server/src/workspace/messagebus-integration.ts +++ b/components/server/src/workspace/messagebus-integration.ts @@ -13,6 +13,7 @@ import { Channel, Message } from "amqplib"; import { TraceContext } from "@gitpod/gitpod-protocol/lib/util/tracing"; import * as opentracing from "opentracing"; import { CancellationTokenSource } from "vscode-ws-jsonrpc"; +import { increaseMessagebusTopicReads } from '../prometheus-metrics'; export class WorkspaceInstanceUpdateListener extends AbstractTopicListener { @@ -20,7 +21,7 @@ export class WorkspaceInstanceUpdateListener extends AbstractTopicListener cancellationTokenSource.cancel()) } @@ -131,6 +133,7 @@ export class MessageBusIntegration extends AbstractMessageBusIntegration { const listener = new WorkspaceInstanceUpdateListener(this.messageBusHelper, callback, userId); const cancellationTokenSource = new CancellationTokenSource() this.listen(listener, cancellationTokenSource.token); + increaseMessagebusTopicReads(listener.topic()) return Disposable.create(() => cancellationTokenSource.cancel()) } diff --git a/components/ws-manager-bridge/src/messagebus-integration.ts b/components/ws-manager-bridge/src/messagebus-integration.ts index 2ae9eac266c8bc..e22b46244e7fb6 100644 --- a/components/ws-manager-bridge/src/messagebus-integration.ts +++ b/components/ws-manager-bridge/src/messagebus-integration.ts @@ -104,7 +104,7 @@ class WorkspaceStatusUpdateListener extends AbstractTopicListener