Remove unsupported Influx/Grafana analytics code
This commit is contained in:
		| @@ -7,7 +7,6 @@ services: | ||||
|     - bot_main.py | ||||
|     depends_on: | ||||
|     - db | ||||
|     - influx | ||||
|     environment: | ||||
|     - CLIENT_ID | ||||
|     - TOKEN | ||||
| @@ -17,9 +16,6 @@ services: | ||||
|     - "DATABASE_NAME=postgres" | ||||
|     - "DATABASE_HOST=db" | ||||
|     - "DATABASE_PORT=5432" | ||||
|     - "INFLUX_HOST=influx" | ||||
|     - "INFLUX_PORT=8086" | ||||
|     - "INFLUX_DB=pluralkit" | ||||
|     restart: always | ||||
|   api: | ||||
|     build: src/ | ||||
| @@ -42,22 +38,6 @@ services: | ||||
|     volumes: | ||||
|     - "db_data:/var/lib/postgresql/data" | ||||
|     restart: always | ||||
|   influx: | ||||
|     image: influxdb:alpine | ||||
|     volumes: | ||||
|     - "influx_data:/var/lib/influxdb:Z" | ||||
|     restart: always | ||||
|   grafana: | ||||
|     build: grafana | ||||
|     depends_on: | ||||
|     - influx | ||||
|     ports: | ||||
|     - "2938:3000" | ||||
|     environment: | ||||
|       GF_SECURITY_ADMIN_USER: "${GRAFANA_USERNAME}" | ||||
|       GF_SECURITY_ADMIN_PASSWORD: "${GRAFANA_PASSWORD}" | ||||
|     restart: always | ||||
|  | ||||
| volumes: | ||||
|   db_data: | ||||
|   influx_data: | ||||
| @@ -11,7 +11,6 @@ import discord | ||||
|  | ||||
| from pluralkit import db | ||||
| from pluralkit.bot import channel_logger, commands, proxy, embeds | ||||
| from pluralkit.stats import InfluxStatCollector, NullStatCollector | ||||
|  | ||||
| logging.basicConfig(level=logging.INFO, format="[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s") | ||||
|  | ||||
| @@ -29,13 +28,9 @@ class PluralKitBot: | ||||
|         self.client.event(self.on_message) | ||||
|         self.client.event(self.on_socket_raw_receive) | ||||
|  | ||||
|         self.stats = NullStatCollector() | ||||
|  | ||||
|         self.channel_logger = channel_logger.ChannelLogger(self.client) | ||||
|  | ||||
|         # "stats" passed here will be a NullStatsCollector, will get overwritten inside | ||||
|         # the Proxy object when the actual connection occurs | ||||
|         self.proxy = proxy.Proxy(self.client, token, self.channel_logger, self.stats) | ||||
|         self.proxy = proxy.Proxy(self.client, token, self.channel_logger) | ||||
|  | ||||
|     async def on_error(self, evt, *args, **kwargs): | ||||
|         self.logger.exception("Error while handling event {} with arguments {}:".format(evt, args)) | ||||
| @@ -110,12 +105,6 @@ class PluralKitBot: | ||||
|  | ||||
|         await self.client.send_message(channel, "```python\n{}```".format(traceback.format_exc()), embed=embed) | ||||
|  | ||||
|     async def periodical_stat_timer(self, pool): | ||||
|         async with pool.acquire() as conn: | ||||
|             while True: | ||||
|                 await self.stats.report_periodical_stats(conn) | ||||
|                 await asyncio.sleep(30) | ||||
|  | ||||
|     async def run(self): | ||||
|         try: | ||||
|             self.logger.info("Connecting to database...") | ||||
| @@ -131,20 +120,6 @@ class PluralKitBot: | ||||
|             async with self.pool.acquire() as conn: | ||||
|                 await db.create_tables(conn) | ||||
|  | ||||
|             if "INFLUX_HOST" in os.environ: | ||||
|                 self.logger.info("Connecting to InfluxDB...") | ||||
|                 self.stats = await InfluxStatCollector.connect( | ||||
|                     os.environ["INFLUX_HOST"], | ||||
|                     os.environ["INFLUX_PORT"], | ||||
|                     os.environ["INFLUX_DB"] | ||||
|                 ) | ||||
|  | ||||
|                 # Overwrite the NullCollector passed to proxy | ||||
|                 self.proxy.stats = self.stats | ||||
|  | ||||
|                 self.logger.info("Starting periodical stat reporting...") | ||||
|                 asyncio.get_event_loop().create_task(self.periodical_stat_timer(self.pool)) | ||||
|  | ||||
|             self.logger.info("Connecting to Discord...") | ||||
|             await self.client.start(self.token) | ||||
|         finally: | ||||
|   | ||||
| @@ -9,7 +9,6 @@ import discord | ||||
|  | ||||
| from pluralkit import db | ||||
| from pluralkit.bot import channel_logger, utils, embeds | ||||
| from pluralkit.stats import StatCollector | ||||
|  | ||||
| logger = logging.getLogger("pluralkit.bot.proxy") | ||||
|  | ||||
| @@ -87,13 +86,12 @@ class DeletionPermissionError(Exception): | ||||
|  | ||||
|  | ||||
| class Proxy: | ||||
|     def __init__(self, client: discord.Client, token: str, logger: channel_logger.ChannelLogger, stats: StatCollector): | ||||
|     def __init__(self, client: discord.Client, token: str, logger: channel_logger.ChannelLogger): | ||||
|         self.logger = logging.getLogger("pluralkit.bot.proxy") | ||||
|         self.session = aiohttp.ClientSession() | ||||
|         self.client = client | ||||
|         self.token = token | ||||
|         self.channel_logger = logger | ||||
|         self.stats = stats | ||||
|  | ||||
|     async def save_channel_webhook(self, conn, channel: discord.Channel, id: str, token: str) -> (str, str): | ||||
|         await db.add_webhook(conn, channel.id, id, token) | ||||
| @@ -172,9 +170,6 @@ class Proxy: | ||||
|             if resp.status == 200: | ||||
|                 message = await resp.json() | ||||
|  | ||||
|                 # Report webhook stats to Influx | ||||
|                 await self.stats.report_webhook(time.perf_counter() - time_before, True) | ||||
|  | ||||
|                 await db.add_message(conn, message["id"], message["channel_id"], member.id, original_message.author.id) | ||||
|  | ||||
|                 try: | ||||
| @@ -212,9 +207,6 @@ class Proxy: | ||||
|                                                                   message["timestamp"]), | ||||
|                                                               message_id=message["id"]) | ||||
|             elif resp.status == 404 and not has_already_retried: | ||||
|                 # Report webhook stats to Influx | ||||
|                 await self.stats.report_webhook(time.perf_counter() - time_before, False) | ||||
|  | ||||
|                 # Webhook doesn't exist. Delete it from the DB, create, and add a new one | ||||
|                 self.logger.warning("Webhook registered in DB doesn't exist, deleting hook from DB, re-adding, and trying again (channel={}, hook={})".format(original_message.channel.id, hook_id)) | ||||
|                 await db.delete_webhook(conn, original_message.channel.id) | ||||
| @@ -223,9 +215,6 @@ class Proxy: | ||||
|                 # Then try again all over, making sure to not retry again and go in a loop should it continually fail | ||||
|                 return await self.do_proxy_message(conn, member, original_message, text, attachment_url, has_already_retried=True) | ||||
|             else: | ||||
|                 # Report webhook stats to Influx | ||||
|                 await self.stats.report_webhook(time.perf_counter() - time_before, False) | ||||
|  | ||||
|                 raise discord.HTTPException(resp, await resp.text()) | ||||
|  | ||||
|     async def try_proxy_message(self, conn, message: discord.Message): | ||||
|   | ||||
| @@ -8,7 +8,6 @@ import asyncpg | ||||
| import asyncpg.exceptions | ||||
| from discord.utils import snowflake_time | ||||
|  | ||||
| from pluralkit import stats | ||||
| from pluralkit.system import System | ||||
| from pluralkit.member import Member | ||||
|  | ||||
| @@ -29,12 +28,8 @@ def db_wrap(func): | ||||
|             after = time.perf_counter() | ||||
|  | ||||
|             logger.debug(" - DB call {} took {:.2f} ms".format(func.__name__, (after - before) * 1000)) | ||||
|             # TODO: find some way to give this func access to the bot's stats object | ||||
|             #await stats.report_db_query(func.__name__, after - before, True) | ||||
|  | ||||
|             return res | ||||
|         except asyncpg.exceptions.PostgresError: | ||||
|             #await stats.report_db_query(func.__name__, time.perf_counter() - before, False) | ||||
|             logger.exception("Error from database query {}".format(func.__name__)) | ||||
|     return inner | ||||
|  | ||||
|   | ||||
| @@ -1,69 +0,0 @@ | ||||
| from aioinflux import InfluxDBClient | ||||
|  | ||||
|  | ||||
| class StatCollector: | ||||
|     async def report_db_query(self, query_name, time, success): | ||||
|         pass | ||||
|  | ||||
|     async def report_command(self, command_name, execution_time, response_time): | ||||
|         pass | ||||
|  | ||||
|     async def report_webhook(self, time, success): | ||||
|         pass | ||||
|  | ||||
|     async def report_periodical_stats(self, conn): | ||||
|         pass | ||||
|  | ||||
|  | ||||
| class NullStatCollector(StatCollector): | ||||
|     pass | ||||
|  | ||||
|  | ||||
| class InfluxStatCollector(StatCollector): | ||||
|     @staticmethod | ||||
|     async def connect(host: str, port: int, db: str): | ||||
|         client = InfluxDBClient(host=host, port=port, db=db) | ||||
|         await client.create_database(db=db) | ||||
|  | ||||
|         return InfluxStatCollector(client) | ||||
|  | ||||
|     def __init__(self, client): | ||||
|         self.client = client | ||||
|  | ||||
|     async def report_db_query(self, query_name, time, success): | ||||
|         await self.client.write({ | ||||
|             "measurement": "database_query", | ||||
|             "tags": {"query": query_name}, | ||||
|             "fields": {"response_time": time, "success": int(success)} | ||||
|         }) | ||||
|  | ||||
|     async def report_command(self, command_name, execution_time, response_time): | ||||
|         await self.client.write({ | ||||
|             "measurement": "command", | ||||
|             "tags": {"command": command_name}, | ||||
|             "fields": {"execution_time": execution_time, "response_time": response_time} | ||||
|         }) | ||||
|  | ||||
|     async def report_webhook(self, time, success): | ||||
|         await self.client.write({ | ||||
|             "measurement": "webhook", | ||||
|             "fields": {"response_time": time, "success": int(success)} | ||||
|         }) | ||||
|  | ||||
|     async def report_periodical_stats(self, conn): | ||||
|         from pluralkit import db | ||||
|  | ||||
|         systems = await db.system_count(conn) | ||||
|         members = await db.member_count(conn) | ||||
|         messages = await db.message_count(conn) | ||||
|         accounts = await db.account_count(conn) | ||||
|  | ||||
|         await self.client.write({ | ||||
|             "measurement": "stats", | ||||
|             "fields": { | ||||
|                 "systems": systems, | ||||
|                 "members": members, | ||||
|                 "messages": messages, | ||||
|                 "accounts": accounts | ||||
|             } | ||||
|         }) | ||||
		Reference in New Issue
	
	Block a user