From 8f252542043a7d2f92205062801bee3efb998b9f Mon Sep 17 00:00:00 2001 From: osmarks Date: Wed, 27 Jan 2021 20:35:32 +0000 Subject: [PATCH] fix prometheus sstuff --- src/achievement.py | 6 ++---- src/heavserver.py | 4 +--- src/main.py | 15 +++++++++++++++ src/metrics.py | 4 ++++ src/reminders.py | 6 ++---- 5 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 src/metrics.py diff --git a/src/achievement.py b/src/achievement.py index c2b3313..e09c73d 100644 --- a/src/achievement.py +++ b/src/achievement.py @@ -6,11 +6,9 @@ import discord from datetime import datetime import re import collections -import prometheus_client import util - -achievements_achieved = prometheus_client.Counter("abr_achievements", "Achievements achieved by users") +import metrics Achievement = collections.namedtuple("Achievement", ["name", "condition", "description"]) @@ -43,7 +41,7 @@ async def achieve(bot: commands.Bot, message: discord.Message, achievement): e = util.make_embed(description=description, title="Achievement achieved!", color=util.hashbow(achievement)) e.set_thumbnail(url=await util.get_asset(bot, f"achievements/{achievement}.png")) await channel.send(embed=e) - achievements_achieved.inc() + metrics.achievements_achieved.inc() await bot.database.execute("INSERT INTO achievements VALUES (?, ?, ?)", (uid, achievement, util.timestamp())) await bot.database.commit() logging.info("awarded achievement %s to %s", message.author.name, achievement) diff --git a/src/heavserver.py b/src/heavserver.py index c3d1b44..878d917 100644 --- a/src/heavserver.py +++ b/src/heavserver.py @@ -2,16 +2,14 @@ import util import random import logging import discord -import prometheus_client -heavserver_members = prometheus_client.Gauge("abr_heavserver_members", "Current member count of heavserver") +import metrics def setup(bot): @bot.listen() async def on_member_join(member): if member.guild.id == util.config["heavserver"]["id"]: logging.info("%s (%d) joined heavserver", member.display_name, member.id) - heavserver_members.set(len(bot.get_guild(util.config["heavserver"]["id"]).members)) if member.bot: await member.add_roles(discord.utils.get(member.guild.roles, id=util.config["heavserver"]["quarantine_role"])) await member.add_roles(discord.utils.get(member.guild.roles, id=random.choice(util.config["heavserver"]["moderator_roles"][:]))) \ No newline at end of file diff --git a/src/main.py b/src/main.py index 6b3a8a4..6431d75 100644 --- a/src/main.py +++ b/src/main.py @@ -225,6 +225,21 @@ async def on_ready(): await bot.change_presence(status=discord.Status.online, activity=discord.Activity(name=f"{bot.command_prefix}help", type=discord.ActivityType.listening)) +visible_users = prometheus_client.Gauge("abr_visible_users", "Users the bot can see") +def get_visible_users(): + return len(bot.users) +visible_users.set_function(get_visible_users) + +heavserver_members = prometheus_client.Gauge("abr_heavserver_members", "Current member count of heavserver") +def get_heavserver_members(): + return len(bot.get_guild(util.config["heavserver"]["id"]).members) +heavserver_members.set_function(get_heavserver_members) + +guild_count = prometheus_client.Gauge("abr_guilds", "Guilds the bot is in") +def get_guild_count(): + return len(bot.guilds) +guild_count.set_function(get_guild_count) + async def run_bot(): bot.database = await db.init(config["database"]) for ext in util.extensions: diff --git a/src/metrics.py b/src/metrics.py new file mode 100644 index 0000000..613d86e --- /dev/null +++ b/src/metrics.py @@ -0,0 +1,4 @@ +import prometheus_client + +achievements_achieved = prometheus_client.Counter("abr_achievements", "Achievements achieved by users") +reminders_fired = prometheus_client.Counter("abr_reminders", "Reminders successfully delivered to users") diff --git a/src/reminders.py b/src/reminders.py index de0aac8..0ca7619 100644 --- a/src/reminders.py +++ b/src/reminders.py @@ -2,11 +2,9 @@ import json import logging from datetime import datetime, timezone import discord.ext.tasks as tasks -import prometheus_client import util - -reminders_fired = prometheus_client.Counter("abr_reminders", "Reminders successfully delivered to users") +import metrics def setup(bot): @bot.command(brief="Set a reminder to be reminded about later.", rest_is_raw=True, help="""Sets a reminder which you will (probably) be reminded about at/after the specified time. @@ -89,7 +87,7 @@ def setup(bot): print("trying", method_name, rid) try: await func(extra, text) - reminders_fired.inc() + metrics.reminders_fired.inc() to_expire.append((1, rid)) # 1 = expired normally break except Exception as e: logging.warning("failed to send %d to %s", rid, method_name, exc_info=e)