add metrics (without reporting, for now)
This commit is contained in:
parent
5585ffd6ea
commit
14b132e466
9 changed files with 183 additions and 9 deletions
|
|
@ -1,12 +1,12 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using App.Metrics;
|
||||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Extensions;
|
||||
using Humanizer;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using NodaTime;
|
||||
using Remora.Commands.Attributes;
|
||||
using Remora.Commands.Groups;
|
||||
using Remora.Discord.API.Abstractions.Objects;
|
||||
|
|
@ -15,6 +15,7 @@ using Remora.Discord.Commands.Feedback.Services;
|
|||
using Remora.Discord.Extensions.Embeds;
|
||||
using Remora.Discord.Gateway;
|
||||
using Remora.Results;
|
||||
using IClock = NodaTime.IClock;
|
||||
using IResult = Remora.Results.IResult;
|
||||
|
||||
namespace Catalogger.Backend.Bot.Commands;
|
||||
|
|
@ -22,11 +23,11 @@ namespace Catalogger.Backend.Bot.Commands;
|
|||
[Group("catalogger")]
|
||||
public class MetaCommands(
|
||||
IClock clock,
|
||||
DatabaseContext db,
|
||||
IMetrics metrics,
|
||||
DiscordGatewayClient client,
|
||||
IFeedbackService feedbackService,
|
||||
GuildCacheService guildCache,
|
||||
ChannelCacheService channelCache,
|
||||
IFeedbackService feedbackService,
|
||||
IDiscordRestChannelAPI channelApi) : CommandGroup
|
||||
{
|
||||
[Command("ping")]
|
||||
|
|
@ -37,7 +38,6 @@ public class MetaCommands(
|
|||
var msg = await feedbackService.SendContextualAsync("...").GetOrThrow();
|
||||
var elapsed = clock.GetCurrentInstant() - t1;
|
||||
|
||||
var messageCount = await db.Messages.CountAsync();
|
||||
var process = Process.GetCurrentProcess();
|
||||
var memoryUsage = process.WorkingSet64;
|
||||
|
||||
|
|
@ -49,11 +49,19 @@ public class MetaCommands(
|
|||
inline: true);
|
||||
embed.AddField("Memory usage", memoryUsage.Bytes().Humanize(), inline: true);
|
||||
|
||||
var messagesReceived = metrics.Snapshot.GetForContext("Bot").Meters
|
||||
.FirstOrDefault(m => m.MultidimensionalName == CataloggerMetrics.MessagesReceived.Name)?.Value;
|
||||
if (messagesReceived != null)
|
||||
embed.AddField("Messages received", $"{messagesReceived.OneMinuteRate * 60:F1}/m", true);
|
||||
|
||||
var messageCount = metrics.Snapshot.GetForContext("Bot").Gauges
|
||||
.FirstOrDefault(m => m.MultidimensionalName == CataloggerMetrics.MessagesStored.Name)?.Value ?? 0;
|
||||
|
||||
embed.AddField("Numbers",
|
||||
$"{messageCount:N0} messages from {guildCache.Size:N0} servers\nCached {channelCache.Size:N0} channels",
|
||||
inline: false);
|
||||
|
||||
List<IEmbed> embeds = [embed.Build().GetOrThrow()];
|
||||
IEmbed[] embeds = [embed.Build().GetOrThrow()];
|
||||
|
||||
return (Result)await channelApi.EditMessageAsync(msg.ChannelID, msg.ID, content: "", embeds: embeds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System.Text.RegularExpressions;
|
||||
using App.Metrics;
|
||||
using Catalogger.Backend.Cache;
|
||||
using Catalogger.Backend.Database;
|
||||
using Catalogger.Backend.Database.Models;
|
||||
|
|
@ -20,7 +21,8 @@ public class MessageCreateResponder(
|
|||
DatabaseContext db,
|
||||
MessageRepository messageRepository,
|
||||
UserCacheService userCache,
|
||||
PkMessageHandler pkMessageHandler)
|
||||
PkMessageHandler pkMessageHandler,
|
||||
IMetrics metrics)
|
||||
: IResponder<IMessageCreate>
|
||||
{
|
||||
private readonly ILogger _logger = logger.ForContext<MessageCreateResponder>();
|
||||
|
|
@ -29,6 +31,7 @@ public class MessageCreateResponder(
|
|||
public async Task<Result> RespondAsync(IMessageCreate msg, CancellationToken ct = default)
|
||||
{
|
||||
userCache.UpdateUser(msg.Author);
|
||||
metrics.Measure.Meter.Mark(CataloggerMetrics.MessagesReceived);
|
||||
|
||||
if (!msg.GuildID.IsDefined())
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue