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",
|
"name": "mtproto_exporter",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "1.2.0",
|
"version": "1.3.0",
|
||||||
"packageManager": "pnpm@10.6.5",
|
"packageManager": "pnpm@10.6.5",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ console.log("Logged in as", user.username);
|
||||||
|
|
||||||
registry.registerMetric(metrics.newStaticPeerInfoGauge(tg));
|
registry.registerMetric(metrics.newStaticPeerInfoGauge(tg));
|
||||||
registry.registerMetric(metrics.newUnreadCountGauge(tg));
|
registry.registerMetric(metrics.newUnreadCountGauge(tg));
|
||||||
registry.registerMetric(metrics.newMessagesCounter(dp));
|
metrics.collectNewMessageMetrics(dp, registry);
|
||||||
|
|
||||||
if (config.keywords) {
|
if (config.keywords) {
|
||||||
const counter = new metrics.KeywordsCounter(dp, rawToPatterns(config.keywords));
|
const counter = new metrics.KeywordsCounter(dp, rawToPatterns(config.keywords));
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import type { Dispatcher } from "@mtcute/dispatcher";
|
import type { Dispatcher } from "@mtcute/dispatcher";
|
||||||
import type { TelegramClient } from "@mtcute/node";
|
import type { TelegramClient } from "@mtcute/node";
|
||||||
|
import type { Registry } from "prom-client";
|
||||||
import { PropagationAction } from "@mtcute/dispatcher";
|
import { PropagationAction } from "@mtcute/dispatcher";
|
||||||
import { Counter, Gauge } from "prom-client";
|
import { Counter, Gauge } from "prom-client";
|
||||||
|
|
||||||
|
|
@ -7,20 +8,74 @@ import { config } from "./config.js";
|
||||||
import { peersConfigBoolFilter, peersConfigFilter } from "./filters.js";
|
import { peersConfigBoolFilter, peersConfigFilter } from "./filters.js";
|
||||||
import { KeywordsCounter } from "./keywords.js";
|
import { KeywordsCounter } from "./keywords.js";
|
||||||
|
|
||||||
function newMessagesCounter(dp: Dispatcher) {
|
function collectNewMessageMetrics(dp: Dispatcher, registry: Registry) {
|
||||||
const counter = new Counter({
|
const messages = new Counter({
|
||||||
name: "messenger_dialog_messages_count",
|
name: "messenger_dialog_messages_count",
|
||||||
help: "Messages count since exporter startup",
|
help: "Messages count since exporter startup",
|
||||||
labelNames: ["peerId"],
|
labelNames: ["peerId"],
|
||||||
});
|
});
|
||||||
|
|
||||||
dp.onNewMessage(peersConfigFilter(config), async (msg) => {
|
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({
|
counter.inc({
|
||||||
peerId: msg.chat.id,
|
peerId: msg.chat.id,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
messages.inc({
|
||||||
|
peerId: msg.chat.id,
|
||||||
|
});
|
||||||
|
|
||||||
return PropagationAction.Continue;
|
return PropagationAction.Continue;
|
||||||
});
|
});
|
||||||
return counter;
|
|
||||||
|
registry.registerMetric(media);
|
||||||
|
registry.registerMetric(stickers);
|
||||||
|
registry.registerMetric(voice);
|
||||||
|
registry.registerMetric(messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
function newStaticPeerInfoGauge(tg: TelegramClient) {
|
function newStaticPeerInfoGauge(tg: TelegramClient) {
|
||||||
|
|
@ -87,8 +142,8 @@ function newWordsCounter(dp: Dispatcher) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
collectNewMessageMetrics,
|
||||||
KeywordsCounter,
|
KeywordsCounter,
|
||||||
newMessagesCounter,
|
|
||||||
newStaticPeerInfoGauge,
|
newStaticPeerInfoGauge,
|
||||||
newUnreadCountGauge,
|
newUnreadCountGauge,
|
||||||
newWordsCounter,
|
newWordsCounter,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue