add media, stickers, voice messages metrics
This commit is contained in:
parent
fb5fd57238
commit
ba6b39bd80
3 changed files with 63 additions and 8 deletions
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "mtproto_exporter",
|
||||
"type": "module",
|
||||
"version": "1.2.0",
|
||||
"version": "1.3.0",
|
||||
"packageManager": "pnpm@10.6.5",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ console.log("Logged in as", user.username);
|
|||
|
||||
registry.registerMetric(metrics.newStaticPeerInfoGauge(tg));
|
||||
registry.registerMetric(metrics.newUnreadCountGauge(tg));
|
||||
registry.registerMetric(metrics.newMessagesCounter(dp));
|
||||
metrics.collectNewMessageMetrics(dp, registry);
|
||||
|
||||
if (config.keywords) {
|
||||
const counter = new metrics.KeywordsCounter(dp, rawToPatterns(config.keywords));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import type { Dispatcher } from "@mtcute/dispatcher";
|
||||
import type { TelegramClient } from "@mtcute/node";
|
||||
import type { Registry } from "prom-client";
|
||||
import { PropagationAction } from "@mtcute/dispatcher";
|
||||
import { Counter, Gauge } from "prom-client";
|
||||
|
||||
|
|
@ -7,20 +8,74 @@ import { config } from "./config.js";
|
|||
import { peersConfigBoolFilter, peersConfigFilter } from "./filters.js";
|
||||
import { KeywordsCounter } from "./keywords.js";
|
||||
|
||||
function newMessagesCounter(dp: Dispatcher) {
|
||||
const counter = new Counter({
|
||||
function collectNewMessageMetrics(dp: Dispatcher, registry: Registry) {
|
||||
const messages = new Counter({
|
||||
name: "messenger_dialog_messages_count",
|
||||
help: "Messages count since exporter startup",
|
||||
labelNames: ["peerId"],
|
||||
});
|
||||
|
||||
dp.onNewMessage(peersConfigFilter(config), async (msg) => {
|
||||
counter.inc({
|
||||
const media = new Counter({
|
||||
name: "messenger_dialog_media_sent_count",
|
||||
help: "Medias sent since exporter startup",
|
||||
labelNames: ["peerId"],
|
||||
});
|
||||
|
||||
const stickers = new Counter({
|
||||
name: "messenger_dialog_stickers_sent_count",
|
||||
help: "Stickers sent since exporter startup",
|
||||
labelNames: ["peerId"],
|
||||
});
|
||||
|
||||
const voice = new Counter({
|
||||
name: "messenger_dialog_voice_messages_count",
|
||||
help: "Voice messages sent since exporter startup",
|
||||
labelNames: ["peerId"],
|
||||
});
|
||||
|
||||
dp.onNewMessage(peersConfigFilter(config), (msg) => {
|
||||
if (msg.media) {
|
||||
let counter;
|
||||
switch (msg.media.type) {
|
||||
case "photo": case "audio": case "document": {
|
||||
counter = media;
|
||||
break;
|
||||
}
|
||||
case "sticker": {
|
||||
counter = stickers;
|
||||
break;
|
||||
}
|
||||
case "voice": {
|
||||
counter = voice;
|
||||
break;
|
||||
}
|
||||
case "video": {
|
||||
if (msg.media.isRound) {
|
||||
counter = voice;
|
||||
} else {
|
||||
counter = media;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (counter) {
|
||||
counter.inc({
|
||||
peerId: msg.chat.id,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
messages.inc({
|
||||
peerId: msg.chat.id,
|
||||
});
|
||||
|
||||
return PropagationAction.Continue;
|
||||
});
|
||||
return counter;
|
||||
|
||||
registry.registerMetric(media);
|
||||
registry.registerMetric(stickers);
|
||||
registry.registerMetric(voice);
|
||||
registry.registerMetric(messages);
|
||||
}
|
||||
|
||||
function newStaticPeerInfoGauge(tg: TelegramClient) {
|
||||
|
|
@ -87,8 +142,8 @@ function newWordsCounter(dp: Dispatcher) {
|
|||
}
|
||||
|
||||
export {
|
||||
collectNewMessageMetrics,
|
||||
KeywordsCounter,
|
||||
newMessagesCounter,
|
||||
newStaticPeerInfoGauge,
|
||||
newUnreadCountGauge,
|
||||
newWordsCounter,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue