O slideshow foi denunciado.

Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check di ASP.NET Core

0

Compartilhar

Próximos SlideShares
Blazor, lo sapevi che...
Blazor, lo sapevi che...
Carregando em…3
×
1 de 31
1 de 31

Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check di ASP.NET Core

0

Compartilhar

Baixar para ler offline

In questa sessione scopriremo come utilizzare al meglio di Health Check, funzionalità che è stata introdotta in ASP.NET ancora dalla versione 2.2, ma che poche applicazioni sfruttano.
Uno strumento davvero utile anche per un primo debug, o per una semplice verifica dello stato delle nostre applicazioni...e non solo per chi utilizza container e orchestratori.
Cosa ci permettono di sapere gli Health Check?
Come possiamo essere notificati se qualcosa non va nel verso giusto?
A queste e ad altre domande daremo risposta nel corso della sessione

In questa sessione scopriremo come utilizzare al meglio di Health Check, funzionalità che è stata introdotta in ASP.NET ancora dalla versione 2.2, ma che poche applicazioni sfruttano.
Uno strumento davvero utile anche per un primo debug, o per una semplice verifica dello stato delle nostre applicazioni...e non solo per chi utilizza container e orchestratori.
Cosa ci permettono di sapere gli Health Check?
Come possiamo essere notificati se qualcosa non va nel verso giusto?
A queste e ad altre domande daremo risposta nel corso della sessione

Mais Conteúdo rRelacionado

Audiolivros relacionados

Gratuito durante 30 dias do Scribd

Ver tudo

Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check di ASP.NET Core

  1. 1. 1 TOPIC Come sta la nostra applicazione? Un viaggio alla scoperta degli Health Check di ASP.NET Core Andrea Dottor @dottor www.xedotnet.org | www.dottor.net
  2. 2. @cloudgen_verona #CodeGen2021
  3. 3. 3 Errori nelle nostre applicazioni Possiamo sapere se la nostra applicazione ha qualcosa che non funziona? (e magari saperlo prima che capiti ad un nostro utente?)
  4. 4. 4 Utilizzo dei log I log sono indispensabili ma non bastano I log ci raccontano il passato, riportano errori/eccezioni dopo che sono accaduti • Informazioni dettagliate dell'errore • Stack trace
  5. 5. 5 Cosa sono gli Health Check? Introdotti per la prima volta in ASP.NET Core 2.2.0-preview1 Middleware e librerie che permettono di monitorare lo stato di servizi e dipendenze utilizzati • Utili per esporre ad un Container Orchestrator (es Kubernetes) lo stato dell'applicazione eseguita in un container • Monitoraggio di servizi utilizzati: SQL Server, Azure Storage, MongoDB, … • Monitoraggio di informazioni di sistema: memoria, cpu, …
  6. 6. 6 Come funzionano gli HealthChecks Permettono di avere un endpoint dove viene ritornato lo stato dell'applicazione (al momento della sua invocazione) • Healthy 😀 • Degraded 😐 • Unhealthy 🤬
  7. 7. 7 Implementare un Health Check Creare una classe che implementa IHealthCheck Task<HealthCheckResult> CheckHealthAsync( HealthCheckContext context, CancellationToken cancellationToken) Ritornare: HealthCheckResult.Healthy("A healthy result.") HealthCheckResult.Degraded("A degraded result.") HealthCheckResult.Unhealthy("An unhealthy result.") Registrare l'HealthCheck nella classe di Startup .AddCheck<ExampleHealthCheck>("example_health_check")
  8. 8. Abilitare gli Health Check
  9. 9. 9 Entity Framework Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore Verifica che la connessione utilizzata nel DbContext specificato sia corretta • Esegue una "SELECT 1" Registrare l'HealthCheck nella classe di Startup • .AddDbContextCheck<PodcastDbContext>();
  10. 10. 10 AspNetCore.Diagnostics.HealthChecks Troviamo molti Health Check già implementati nel repository GitHub AspNetCore.Diagnostics.HealthChecks Nota: non sono mantenuti da Microsoft Sql Server MySql Oracle Sqlite RavenDB Postgres EventStore RabbitMQ IbmMQ Elasticsearch CosmosDb Solr Redis SendGrid System: Disk Storage, Private Memory, Virtual Memory, Process, Windows Service Azure Service Bus: EventHub, Queue and Topics Azure Storage: Blob, Queue and Table Azure Key Vault Azure DocumentDb Azure IoT Hub Amazon DynamoDb Amazon S3 Google Cloud Firestore Network: Ftp, SFtp, Dns, Tcp port, Smtp, Imap MongoDB Kafka Identity Server Uri: single uri and uri groups Consul Hangfire SignalR Kubernetes ArangoDB Gremlin
  11. 11. 11 AspNetCore.HealthChecks.System Install-Package AspNetCore.HealthChecks.System Spazio libero in una particolare unità .AddDiskStorageHealthCheck(s => s.AddDrive("C:", 1024)) Memoria massima allocata .AddProcessAllocatedMemoryHealthCheck(512) Processo è in esecuzione .AddProcessHealthCheck("ProcessName", p => p.Length > 0) Servizio è in esecuzione .AddWindowsServiceHealthCheck("someservice", s => s.Status == ServiceControllerStatus.Running)
  12. 12. 12 SQL Server Install-Package AspNetCore.HealthChecks.SqlServer Verifica la connessione a un database SQL Server .AddSqlServer(Configuration["Data:ConnectionStrings:Sql"]) .AddSqlServer( connectionString: Configuration["Data:ConnectionStrings:Sql"], healthQuery: "SELECT 1;", name: "sql", failureStatus: HealthStatus.Degraded, tags: new string[] { "db", "sql", "sqlserver" });
  13. 13. 13 Servizi e/o url esterni Install-Package AspNetCore.HealthChecks.Uris Verifica che l'url specificato non ritorni uno status code di errore .AddUrlGroup(new Uri("https://localhost:44318/weatherforecast"), "Weather API");
  14. 14. 14 AspNetCore.HealthChecks.Hangfire Install-Package AspNetCore.HealthChecks.Hangfire Permette di monitorare i Job di Hangfire .AddHangfire( setup => { setup.MaximumJobsFailed = 5; }, name: "Hangfire")
  15. 15. Configurare gli Health Check
  16. 16. 16 Install-Package AspNetCore.HealthChecks.UI HealthCheck UI
  17. 17. 17 HealthCheck UI
  18. 18. 18 HealthCheck UI - personalizzazione stili La UI di HealthCheck UI può essere personalizzata solo tramite CSS ed un minimo di settings • Fa uso di CSS Variables
  19. 19. HealthCheck UI
  20. 20. 20 Health Check Publisher Realizzando una classe che implementi IHealthCheckPublisher è possibile far si che periodicamente vengano verificati gli Health Check per poter inviare (in modalità push) i dati in un servizio esterno • Delay: default 5 secondi dopo l'avvio dell'app • Period: default ogni 30 secondi • Predicate: funzione che permette di fitrare gli health check da valutare • Timeout: default 30 secondi
  21. 21. 21 Health Check Publisher
  22. 22. 22 Health Check Publisher Esistono delle implementazioni per i servizi più utilizzati install-package AspNetcore.HealthChecks.Publisher.ApplicationInsights install-package AspNetcore.HealthChecks.Publisher.Datadog install-package AspNetcore.HealthChecks.Publisher.Prometheus install-package AspNetcore.HealthChecks.Publisher.Seq
  23. 23. 23 HealthCheck UI - Webhook HealthCheck UI permette di invocare servizi esterni tramite Webhook per notificare eventuali problematiche. Configurabili tramite appsettings e/o codice Molti applicativi permettono di ricevere messaggi tramite Webhhok • Microsoft Teams • Slack • SendGrid • Zapier • IFTTT • …
  24. 24. 24 Integrazione con Teams Tramite il connector Incoming Webhhok è possibile abilitare la ricezione di messaggi (generati da HealthCheck.UI) I messaggi possono venir indirizzati in un preciso Channel
  25. 25. 25 HealthCheck.UI configurazione Webhook { "Name": "Teams", "Uri": "https://zzzzzz.webhook.office.com/zzz/zzz....", "Payload": "{rn "@context": "http://schema.org/extensions",rn "@type": "MessageCard",rn "themeColor": "0072C6",rn "title": "[[LIVENESS]] has failed!",rn "text": "[[FAILURE]] Click **Learn More** to go to Status Monitoring Portal",rn "potentialAction": [rn {rn "@type": "OpenUri",rn "name": "Lear More",rn "targets": [rn { "os": "default", "uri": "http://status.dottor.net" }rn ]rn }rn ]rn}", "RestoredPayload": "{"text":"The HealthCheck [[LIVENESS]] is recovered. All is up and running"}" }
  26. 26. 26 Teams Webhook payload { "@context": "http://schema.org/extensions", "@type": "MessageCard", "themeColor": "0072C6", "title": "[[LIVENESS]] has failed!", "text": "[[FAILURE]] Click **Learn More** to go to Status Monitoring Portal", "potentialAction": [ { "@type": "OpenUri", "name": "Lear More", "targets": [{ "os": "default", "uri": "http://status.dottor.net" }] }] }
  27. 27. 27 Integrazione con Teams Notifica in Teams quando un Health Check fallisce e quando lo stato viene ripristinato
  28. 28. HealthCheckService + RazorPages
  29. 29. 29 Conclusioni Di facili utilizzo, e con molti HealthCheck già pronti Integrazione con strumenti esterni tramite Webhook • Teams, Slack, SendGrid, Zapier, IFTTT, … HealthCheck.UI fornisce un'applicazione di monitoraggio a costo zero Utili anche in ambito DevOps: possono essere utilizzati per verificare il corretto deploy di un'applicazione
  30. 30. Thank you Any questions? andreadottor @dottor andreadottor
  31. 31. Andrea Dottor @dottor https://github.com/andreadottor https://www.linkedin.com/in/andreadottor/ ANDREA DOTTOR www.xedotnet.org | www.dottor.net

×