Loupe

Comment ajouter du logging sur Azure avec aspnetcore et serilog

Logging as a Service avec Azure

Vous avez toujours rêvé d’avoir un système de log « à la ELK » (Elasticsearch, Logstash, Kibana), mais exploitable en tant que service depuis Azure ?

Et bien réjouissez-vous car nous allons voir dans cet article de blog comment utiliser le service Azure Log Analytics pour ajouter du logging as a service depuis Azure dans une application aspnetcore en seulement 2 packages NuGet et 5 lignes de code 😊.

Création d’un Azure Log Analytics Service depuis le portail Azure

Commençons par créer un workspace pour Azure Log Analytics depuis le portail Azure :

01-creation-workspace-azure-log-analytics.jpg

Note : Les 5 premiers GO de log par mois sont gratuits !

Une fois le service créé, naviguez sur la partie Advanced settings et récupérez votre WORKSPACE ID et PRIMARY KEY

02-recuperation-azure-log-analytics-workspace-id-et-authentication-id-primary-key.jpg

Parfait, c’est tout pour la configuration Azure !

Ajouter Serilog et configurer Serilog.Sinks.AzureAnalytics

Tout d’abord, ajoutez les 2 packages NuGet suivant au projet aspnetcore :

  • Serilog.AspNetCore qui permet de récupérer les packages Serilog et facilite son utilisatoin dans une application aspnetcore,
  • Serilog.Sinks.AzureAnalytics qui permet d’envoyer les logs directement sur le workspace d’Azure Log Analytics.

Puis dans votre application aspnetcore, plus précisément dans la méthode Main du fichier Program.cs, configurez Serilog en assignant à Log.logger un nouveau LoggerConfiguration() et en faisant bien attention d’appeler la méthode WriteTo.AzureAnalytics qui prend en paramètre les 2 configurations récupérées depuis Azure Log Analytics (WORKSPACE_ID et PRIMARY_KEY).

public static void Main(string[] args)
{
    Log.Logger = new LoggerConfiguration()
        .WriteTo.AzureAnalytics(workspaceId: "WORKSPACE ID", 
                                authenticationId: "PRIMARY KEY")
        .CreateLogger();

    CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseSerilog();

La dernière configuration à effectuer est d’appeler la méthode UseSerilog() juste après la méthode UseStartup<Startup>() de votre WebHostBuilder.

Voilà, ça sera tout !

Visualiser les logs depuis le portail Azure

Naviguez sur le service Azure Log Analytics, puis allez sur la partie Logs
Une section Custom Logs devrait être apparue, et à l’intérieur un type de log utilisé par défaut appelé DiagnosticsLog (qu’il est possible de changer par configuration bien entendu).

Sélectionnez une query, cliquez sur Run et vous devriez pouvoir visualiser vos logs depuis votre workspace Azure Log Analytics. Félicitations !

03-visualisation-des-logs-azure-log-analytics-depuis-portail-azure.PNG

J’espère vous avoir convaincu d’essayer d’utiliser ce service.

Note: au moment d'écrire cet article le service est toujours en preview (voir documentation officielle)

Que le code soit avec vous !

Photo de profil

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus