mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
103 lines
3.3 KiB
TypeScript
103 lines
3.3 KiB
TypeScript
/**
|
|
* Copyright (c) 2021 Gitpod GmbH. All rights reserved.
|
|
* Licensed under the GNU Affero General Public License (AGPL).
|
|
* See License-AGPL.txt in the project root for license information.
|
|
*/
|
|
|
|
import * as prometheusClient from 'prom-client';
|
|
|
|
// Enable collection of default metrics.
|
|
prometheusClient.collectDefaultMetrics({ timeout: 5000 });
|
|
export const register = prometheusClient.register;
|
|
|
|
const loginCounter = new prometheusClient.Counter({
|
|
name: 'gitpod_server_login_requests_total',
|
|
help: 'Total amount of login requests',
|
|
labelNames: ['status', 'auth_host'],
|
|
registers: [prometheusClient.register]
|
|
});
|
|
|
|
export function increaseLoginCounter(status: string, auth_host: string) {
|
|
loginCounter.inc({
|
|
status,
|
|
auth_host,
|
|
});
|
|
}
|
|
|
|
const apiConnectionCounter = new prometheusClient.Counter({
|
|
name: 'gitpod_server_api_connections_total',
|
|
help: 'Total amount of established API connections',
|
|
registers: [prometheusClient.register],
|
|
});
|
|
|
|
export function increaseApiConnectionCounter() {
|
|
apiConnectionCounter.inc();
|
|
}
|
|
|
|
const apiConnectionClosedCounter = new prometheusClient.Counter({
|
|
name: 'gitpod_server_api_connections_closed_total',
|
|
help: 'Total amount of closed API connections',
|
|
registers: [prometheusClient.register],
|
|
});
|
|
|
|
export function increaseApiConnectionClosedCounter() {
|
|
apiConnectionClosedCounter.inc();
|
|
}
|
|
|
|
const apiCallCounter = new prometheusClient.Counter({
|
|
name: 'gitpod_server_api_calls_total',
|
|
help: 'Total amount of API calls per method',
|
|
labelNames: ['method', 'statusCode'],
|
|
registers: [prometheusClient.register],
|
|
});
|
|
|
|
export function increaseApiCallCounter(method: string, statusCode: number) {
|
|
apiCallCounter.inc({ method, statusCode });
|
|
}
|
|
|
|
const apiCallUserCounter = new prometheusClient.Counter({
|
|
name: 'gitpod_server_api_calls_user_total',
|
|
help: 'Total amount of API calls per user',
|
|
labelNames: ['method', 'user'],
|
|
registers: [prometheusClient.register],
|
|
});
|
|
|
|
export function increaseApiCallUserCounter(method: string, user: string) {
|
|
apiCallUserCounter.inc({ method, user });
|
|
}
|
|
|
|
const httpRequestTotal = new prometheusClient.Counter({
|
|
name: 'gitpod_server_http_requests_total',
|
|
help: 'Total amount of HTTP requests per express route',
|
|
labelNames: ['method', 'route', 'statusCode'],
|
|
registers: [prometheusClient.register],
|
|
});
|
|
|
|
export function increaseHttpRequestCounter(method: string, route: string, statusCode: number) {
|
|
httpRequestTotal.inc({ method, route, statusCode });
|
|
}
|
|
|
|
const httpRequestDuration = new prometheusClient.Histogram({
|
|
name: 'gitpod_server_http_request_duration_seconds',
|
|
help: 'Duration of HTTP requests in seconds',
|
|
labelNames: ['method', 'route', 'statusCode'],
|
|
buckets: [0.01, 0.05, 0.1, 0.5, 1, 5, 10],
|
|
registers: [prometheusClient.register],
|
|
});
|
|
|
|
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,
|
|
})
|
|
} |