Skip to main content

An extension for the discord.py library that enables Prometheus metrics

Project description

discord-ext-prometheus

PyPI Version PyPI Python Version Code style: black License MIT Grafana Dashboard Downloads

This is a extension library for discord.py that makes it easy to add prometheus metrics to your Python Discord bot.

Installation

pip install discord-ext-prometheus

Exposed Metrics

Name Documentation Labels
discord_connected Determines if the bot is connected to Discord shard
discord_latency_seconds Latency to Discord shard
discord_event_on_interaction Amount of interactions called by users shard, interaction, command
discord_event_on_command Amount of commands called by users shard, command
discord_stat_total_guilds Amount of guild this bot is a member of None
discord_stat_total_channels Amount of channels this bot is has access to None
discord_stat_total_users Amount of users this bot can see None
discord_stat_total_commands Amount of commands None
logging Log entries logger, level

Notes:

  • on_interaction are application interactions such as slash commands or modals
  • on_command are traditional message commands (usualy using the command prefix)

Grafana Dashboard

Dashboard Preview

Available to import from Grafana dashboards.

How to use

Once the cog is added to your bot, the Prometheus metric endpoint can be accessed at localhost:8000/metrics.

Sample code with the Prometheus Cog

import asyncio
from discord import Intents
from discord.ext import commands
from discord.ext.prometheus import PrometheusCog

async def main():
    bot = commands.Bot(
        command_prefix="!",
        intents=Intents.all(),
    )

    await bot.add_cog(PrometheusCog(bot))

    await bot.start("YOUR TOKEN")

asyncio.run(main())

Sample code with logging metrics

import asyncio
import logging
from discord import Intents
from discord.ext import commands
from discord.ext.prometheus import PrometheusCog, PrometheusLoggingHandler

logging.getLogger().addHandler(PrometheusLoggingHandler())

async def main():
    bot = commands.Bot(
        command_prefix="!",
        intents=Intents.all(),
    )

    await bot.add_cog(PrometheusCog(bot))

    @bot.listen()
    async def on_ready():
        logging.info(f"Logged in as {bot.user.name}#{bot.user.discriminator}")

    logging.info("Starting the bot")
    await bot.start("YOUR TOKEN")

asyncio.run(main())

Changing the Prometheus port

The default port is 8000 but can be changed while creating the cog.

await bot.add_cog(PrometheusCog(bot, port=7000))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

discord_ext_prometheus-0.2.1.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

discord_ext_prometheus-0.2.1-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file discord_ext_prometheus-0.2.1.tar.gz.

File metadata

  • Download URL: discord_ext_prometheus-0.2.1.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for discord_ext_prometheus-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a65c176d2205868bfa6cf0ad01633cc3846939696d59c21dcc4a27c949dec368
MD5 8438aa0bf7779a7f55b4372e125c90a0
BLAKE2b-256 a8e4553725e355e632a73dc27f251f40c8b57400c9ffb496504013f7b02f5741

See more details on using hashes here.

File details

Details for the file discord_ext_prometheus-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for discord_ext_prometheus-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c2e13115c3f0fbb1a3fd3d67bff2711604742fb8742cc5e9eb80488854bf12f8
MD5 ecc1fc18cd8b52fff3f0686154c49c14
BLAKE2b-256 2d0141648aaa4eb04f0be18ce5565ab7034c4dbf3b9fcc970222d24bb226a8bb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page