Add metrics

This commit is contained in:
2022-02-12 16:10:31 +03:00
parent d635578d23
commit 4d03bebb38
4 changed files with 1752 additions and 1 deletions

View File

@@ -0,0 +1,41 @@
export default class UsersCounter {
static bots: {[key: string]: Set<number>} = {};
static allUsers: Set<number> = new Set();
static take(userId: number, bot: string) {
const isExists = this.bots[bot];
if (!isExists) {
this.bots[bot] = new Set();
}
this.bots[bot].add(userId);
this.allUsers.add(userId);
}
static getAllUsersCount(): number {
return this.allUsers.size;
}
static getUsersByBots(): {[bot: string]: number} {
const result: {[bot: string]: number} = {};
Object.keys(this.bots).forEach((bot: string) => result[bot] = this.bots[bot].size);
return result;
}
static getMetrics(): string {
const lines = [];
lines.push(`all_users_count ${this.getAllUsersCount()}`);
const usersByBots = this.getUsersByBots();
Object.keys(usersByBots).forEach((bot: string) => {
lines.push(`users_count{bot="${bot}"} ${usersByBots[bot]}`)
});
return lines.join("\n");
}
}