Skip to content

Commit

Permalink
Update dependencies + add metrics
Browse files Browse the repository at this point in the history
  • Loading branch information
manuelmayer-dev committed Feb 5, 2024
1 parent 8239d02 commit 53a7508
Show file tree
Hide file tree
Showing 9 changed files with 90 additions and 23 deletions.
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
Expand Down
38 changes: 21 additions & 17 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,41 @@
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="AutoMapper" Version="12.0.1" />
<PackageVersion Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageVersion Include="Discord.Net" Version="3.12.0" />
<PackageVersion Include="AutoMapper" Version="13.0.0" />
<PackageVersion Include="Discord.Net" Version="3.13.0" />
<PackageVersion Include="Evolve" Version="3.2.0" />
<PackageVersion Include="JetBrains.Annotations" Version="2023.2.0" />
<PackageVersion Include="JetBrains.Annotations" Version="2023.3.0" />
<PackageVersion Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Extensions" Version="2.2.0" />
<PackageVersion Include="Microsoft.AspNetCore.Http.Features" Version="5.0.17" />
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="7.0.15" />
<PackageVersion Include="Microsoft.AspNetCore.WebUtilities" Version="8.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="8.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.15" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.15" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="7.0.1" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="7.0.0" />
<PackageVersion Include="NCalcSync" Version="3.8.0" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageVersion Include="NCalcSync" Version="3.10.0" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.11" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0" />
<PackageVersion Include="Octokit" Version="9.1.2" />
<PackageVersion Include="Serilog" Version="3.0.1" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="7.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="4.1.0" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" />
<PackageVersion Include="Serilog" Version="3.1.1" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="5.0.1" />
<PackageVersion Include="SharpAbp.Abp.OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="3.1.6" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.5.0" />
<PackageVersion Include="Swashbuckle.AspNetCore.Swagger" Version="6.5.0" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.5.0" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.5.0" />
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="7.0.15" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
<PackageVersion Include="NUnit" Version="3.14.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageVersion Include="NUnit" Version="4.0.1" />
<PackageVersion Include="NUnit3TestAdapter" Version="4.5.0" />
<PackageVersion Include="NUnit.Analyzers" Version="3.10.0" />
<PackageVersion Include="NUnit.Analyzers" Version="4.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="coverlet.collector" Version="6.0.0" />
</ItemGroup>
</Project>
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM mcr.microsoft.com/dotnet/sdk:7.0.405-bullseye-slim-amd64
FROM mcr.microsoft.com/dotnet/sdk:8.0.101-bookworm-slim-amd64

WORKDIR /src

Expand Down
24 changes: 24 additions & 0 deletions src/MacroBot.Core/Metrics/UsersMetrics.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Diagnostics.Metrics;

namespace MacroBot.Core.Metrics;

public class UsersMetrics
{
private readonly Counter<int> _usersCounter;

public UsersMetrics(IMeterFactory meterFactory)
{
var meter = meterFactory.Create("MacroBot");
_usersCounter = meter.CreateCounter<int>("macrobot.users");
}

public void UserJoined()
{
_usersCounter.Add(1);
}

public void UserLeft()
{
_usersCounter.Add(-1);
}
}
8 changes: 7 additions & 1 deletion src/MacroBot.Core/Services/DiscordService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using MacroBot.Core.Discord;
using MacroBot.Core.Discord.Modules.ExtensionStore;
using MacroBot.Core.Extensions;
using MacroBot.Core.Metrics;
using MacroBot.Core.Models.Webhook;
using MacroBot.Core.ServiceInterfaces;
using Microsoft.Extensions.DependencyInjection;
Expand All @@ -31,6 +32,7 @@ public class DiscordService : IDiscordService, IHostedService
private readonly InteractionService _interactionService;
private readonly IHttpClientFactory _httpClientFactory;
private readonly IServiceScopeFactory _serviceScopeFactory;
private readonly UsersMetrics _usersMetrics;

public bool DiscordReady { get; private set; }

Expand All @@ -42,14 +44,16 @@ public DiscordService(
IStatusCheckService statusCheckService,
InteractionService interactionService,
IHttpClientFactory httpClientFactory,
IServiceScopeFactory serviceScopeFactory)
IServiceScopeFactory serviceScopeFactory,
UsersMetrics usersMetrics)
{
_discordSocketClient = discordSocketClient;
_serviceProvider = serviceProvider;
_statusCheckService = statusCheckService;
_interactionService = interactionService;
_httpClientFactory = httpClientFactory;
_serviceScopeFactory = serviceScopeFactory;
_usersMetrics = usersMetrics;
}

public Task StopAsync(CancellationToken cancellationToken)
Expand Down Expand Up @@ -193,13 +197,15 @@ private async Task Ready ()

private async Task UserJoined (SocketGuildUser member)
{
_usersMetrics.UserJoined();
await MemberMovement(member, true);
}

private async Task UserLeft (SocketGuild guild, SocketUser user)
{
if (user is SocketGuildUser guildUser)
{
_usersMetrics.UserLeft();
await MemberMovement(guildUser, false);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/MacroBot/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ARG BASE_IMAGE
FROM mcr.microsoft.com/dotnet/aspnet:7.0.15-bullseye-slim-amd64 AS base
FROM mcr.microsoft.com/dotnet/aspnet:8.0.1-bookworm-slim-amd64 AS base
WORKDIR /app

FROM ${BASE_IMAGE} AS build
Expand Down
3 changes: 2 additions & 1 deletion src/MacroBot/MacroBot.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper"/>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection"/>
<PackageReference Include="Evolve"/>
<PackageReference Include="JetBrains.Annotations"/>
<PackageReference Include="Microsoft.EntityFrameworkCore"/>
Expand All @@ -14,9 +13,11 @@
<PackageReference Include="Microsoft.Extensions.Http"/>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL"/>
<PackageReference Include="Octokit"/>
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
<PackageReference Include="Serilog"/>
<PackageReference Include="Serilog.Extensions.Hosting"/>
<PackageReference Include="Serilog.Sinks.Console"/>
<PackageReference Include="SharpAbp.Abp.OpenTelemetry.Exporter.Prometheus.AspNetCore" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations"/>
<PackageReference Include="Swashbuckle.AspNetCore.Swagger"/>
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen"/>
Expand Down
6 changes: 5 additions & 1 deletion src/MacroBot/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using MacroBot.Core.Extensions;
using MacroBot.Core.Manager;
using MacroBot.Core.ManagerInterfaces;
using MacroBot.Core.Metrics;
using MacroBot.Core.ServiceInterfaces;
using MacroBot.Core.Services;
using MacroBot.StartupConfig;
Expand All @@ -33,7 +34,7 @@ public void ConfigureServices(IServiceCollection services)
};

services.AddDbContext<MacroBotContext>();
services.AddAutoMapper(typeof(Startup).Assembly);
services.AddAutoMapper(GetType());
services.AddTransient<ITagRepository, TagRepository>();
services.AddTransient<ICountingRepository, CountingRepository>();
services.AddTransient<TaggingUtils>();
Expand All @@ -44,10 +45,12 @@ public void ConfigureServices(IServiceCollection services)
services.AddInjectableHostedService<IDiscordService, DiscordService>();
services.AddInjectableHostedService<IStatusCheckService, StatusCheckService>();
services.AddInjectableHostedService<ITimerService, TimerService>();
services.AddSingleton<UsersMetrics>();
services.AddScoped<IKoFiManager, KoFiManager>();
services.AddHttpClient();
services.AddSwagger();
services.AddControllers();
services.AddMetricsConfiguration();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
Expand All @@ -61,6 +64,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapPrometheusScrapingEndpoint();
endpoints.MapControllers();
});
app.ConfigureSwagger();
Expand Down
28 changes: 28 additions & 0 deletions src/MacroBot/StartupConfig/MetricsConfiguration.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using OpenTelemetry.Metrics;

namespace MacroBot.StartupConfig;

public static class MetricsConfiguration
{
public static void AddMetricsConfiguration(this IServiceCollection services)
{
services.AddOpenTelemetry()
.WithMetrics(builder =>
{
builder.AddPrometheusExporter();

builder.AddMeter(
"Microsoft.AspNetCore.Hosting",
"Microsoft.AspNetCore.Server.Kestrel");
builder.AddView("http.server.request.duration",
new ExplicitBucketHistogramConfiguration
{
Boundaries =
[
0, 0.005, 0.01, 0.025, 0.05,
0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10
]
});
});
}
}

0 comments on commit 53a7508

Please sign in to comment.