← l-artikli kollha

Azure

Il-benefiċċji ta’ Azure Application Insights

X’juri Application Insights, x’dejta jiġbor OpenTelemetry f’.NET, kif il-monitoraġġ tal-browser huwa differenti, u kif iżżid telemetrija bażika ma’ ASP.NET Core.

Karta tal-artiklu dwar il-benefiċċji ta’ Azure Application Insights

Meta applikazzjoni tfalli fil-produzzjoni, l-ewwel problema ħafna drabi mhijiex li tirranġa l-bug. Hija li tifhem x’ġara.

Azure Application Insights jgħin f’din l-investigazzjoni. Jiġbor it-telemetrija ta’ applikazzjoni u jlaqqa’ f’Azure Monitor it-talbiet, id-dipendenzi, l-eċċezzjonijiet, il-logs u l-informazzjoni dwar il-prestazzjoni. Minflok tfittex f’fajls separati u tipprova tibni mill-ġdid falliment manwalment, tista’ ssegwi l-operazzjoni f’post wieħed, mit-talba li tidħol sas-sejħiet li tagħmel l-applikazzjoni.

Dan huwa utli anke għal applikazzjoni .NET żgħira. Il-konfigurazzjoni inizjali hija sempliċi u d-dejta miġbura tista’ twieġeb mistoqsijiet prattiċi bħal:

  • Liema endpoints qed ifallu?
  • Liema talbiet huma bil-mod?
  • Id-database jew API esterna qed tikkawża d-dewmien?
  • Liema eċċezzjoni seħħet waqt talba?
  • Il-problema affettwat operazzjoni waħda jew ħafna utenti?

Application Insights ma jsolvix dawn il-problemi awtomatikament. Il-benefiċċju ewlieni tiegħu huwa li jissostitwixxi parti mill-konġetturi b’evidenza.

X’tiġbor l-integrazzjoni ma’ .NET

Microsoft tirrakkomanda d-distribuzzjoni OpenTelemetry ta’ Azure Monitor għal applikazzjonijiet ASP.NET Core ġodda. OpenTelemetry jaħdem bi tliet sinjali ewlenin: traces, metriċi u logs.

Bil-konfigurazzjoni standard ta’ ASP.NET Core, Application Insights jista’ jirċievi:

  • talbiet HTTP deħlin, inklużi t-tul u l-istatus tagħhom;
  • sejħiet ħerġin magħmula b’HttpClient;
  • sejħiet ta’ dipendenzi appoġġjati lejn SQL u l-Azure SDKs;
  • eċċezzjonijiet mhux immaniġġjati u l-stack traces tagħhom;
  • logs miktuba permezz ta’ ILogger;
  • metriċi u dejta ta’ korrelazzjoni li jgħaqqdu operazzjoni mat-telemetrija relatata.

Il-korrelazzjoni hija waħda mill-aktar partijiet utli. Talba li falliet tista’ tintrabat mal-eċċezzjoni tagħha u mas-sejħa tad-dipendenza li falliet waqt l-istess operazzjoni.

Għal-logs tal-applikazzjoni, il-livelli l-aktar rilevanti fil-produzzjoni normalment huma:

  • Information għal avvenimenti magħżula tal-applikazzjoni;
  • Warning meta tiġri xi ħaġa mhux mistennija iżda l-operazzjoni tista’ tkompli;
  • Error meta operazzjoni tfalli;
  • Critical meta l-applikazzjoni jew funzjoni essenzjali ma tistax tkompli b’mod sigur.

Debug u Trace huma utli waqt l-iżvilupp, iżda jekk jintbagħtu fi kwantitajiet kbar fil-produzzjoni jistgħu joħolqu storbju u jżidu l-volum tat-telemetrija.

Logs strutturati jagħmlu wkoll id-dejta aktar faċli biex tfittex fiha:

logger.LogWarning(
    "Order {OrderId} could not be sent to provider {Provider}",
    orderId,
    providerName);

F’dan l-eżempju, OrderId u Provider isiru proprjetajiet li tista’ tfittex minflok ma jibqgħu moħbija f’messaġġ wieħed twil.

ASP.NET Core jibqa’ jikkontrolla liema livelli ta’ log jiġu esportati. Konfigurazzjoni sempliċi għall-produzzjoni tista’ żżomm l-informazzjoni tal-applikazzjoni filwaqt li tnaqqas l-istorbju normali tal-framework:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  }
}

Dan huwa biss punt tat-tluq. Servizz jista’ jkollu bżonn logs aktar dettaljati għal namespace wieħed u inqas għal ieħor. L-għan huwa li jinżammu l-avvenimenti li jgħinu investigazzjoni u jitneħħew messaġġi ripetuti li ma jbiddlux id-dijanjosi.

X’ma jinġabarx awtomatikament

L-istrumentazzjoni awtomatika għandha l-limiti tagħha. Application Insights ma jistax jirrapporta informazzjoni li l-applikazzjoni qatt ma pproduċiet.

Eżempji jinkludu:

  • eċċezzjoni li tinqabad u mbagħad tiġi injorata mingħajr ma tinkiteb f’log;
  • avveniment tan-negozju li ma jipproduċix log, trace jew telemetrija personalizzata;
  • xogħol magħmul minn librerija mingħajr strumentazzjoni appoġġjata;
  • il-kontenut tat-talbiet u t-tweġibiet;
  • fallimenti li jiġru qabel it-traffiku jasal għand l-applikazzjoni;
  • page views u żbalji JavaScript meta l-browser SDK ma jkunx installat.

Informazzjoni sensittiva m’għandhiex tiżdied biex timla dawn in-nuqqasijiet. Passwords, access tokens, connection strings, dettalji tal-ħlas u dejta personali ma għandhomx ikunu parti mit-telemetrija.

Monitoraġġ tal-backend u tal-browser

Il-monitoraġġ tal-backend jaħdem ġewwa l-applikazzjoni .NET. Josserva t-talbiet tas-server, l-eċċezzjonijiet, il-logs tal-applikazzjoni, is-sejħiet lejn id-database u l-operazzjonijiet HTTP ħerġin.

Il-monitoraġġ tal-browser jaħdem fuq it-tagħmir tal-viżitatur permezz tal-Application Insights JavaScript SDK. Jista’ jirrapporta page views, il-prestazzjoni fuq in-naħa tal-klijent, sessions u żbalji JavaScript.

Dawn iż-żewġ perspettivi jwieġbu mistoqsijiet differenti. It-telemetrija tal-backend tista’ turi li API rritornat żball. It-telemetrija tal-browser tista’ turi x’esperjenza l-viżitatur qabel ma saret dik it-talba. API tista’ teħtieġ biss monitoraġġ tal-backend, filwaqt li applikazzjoni Razor Pages, Angular jew React tista’ tuża t-tnejn meta l-imġiba fuq in-naħa tal-klijent tkun importanti.

Konfigurazzjoni bażika f’ASP.NET Core

Installa l-pakkett Azure Monitor OpenTelemetry fil-proġett web:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore

Imbagħad irreġistra Azure Monitor f’Program.cs:

using Azure.Monitor.OpenTelemetry.AspNetCore;

var builder = WebApplication.CreateBuilder(args);

builder.Services
    .AddOpenTelemetry()
    .UseAzureMonitor();

var app = builder.Build();
app.Run();

Application Insights juża connection string biex jidentifika fejn għandha tintbagħat it-telemetrija. Fil-produzzjoni, Microsoft tirrakkomanda li din tingħata permezz tal-ambjent:

APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...;IngestionEndpoint=...

Il-valur jinsab fir-riżorsa Application Insights fil-portal ta’ Azure u għandu jibqa’ barra mill-kontroll tal-verżjoni. Wara li l-applikazzjoni tibda tirċievi traffiku, it-telemetrija tista’ tieħu ftit minuti biex tidher.

L-ewwel query KQL

Il-portal ta’ Azure diġà jinkludi veduti għall-fallimenti, il-prestazzjoni, il-live metrics u d-dipendenzi tal-applikazzjoni. Għal mistoqsijiet aktar speċifiċi, Log Analytics juża Kusto Query Language.

Din il-query turi t-talbiet li fallew fl-aħħar 24 siegħa:

AppRequests
| where TimeGenerated > ago(24h)
| where Success == false
| project TimeGenerated, Name, ResultCode, DurationMs, OperationId
| order by TimeGenerated desc

L-OperationId jgħin biex talba tintrabat mat-traces, id-dipendenzi u l-eċċezzjonijiet relatati.

Il-logs tal-applikazzjoni jinħażnu f’AppTraces. Din il-query tiffoka fuq l-entrati Warning, Error u Critical:

AppTraces
| where TimeGenerated > ago(24h)
| where SeverityLevel >= 2
| project TimeGenerated, SeverityLevel, Message, Properties, OperationId
| order by TimeGenerated desc

Pass utli li jmiss huwa li tieħu l-OperationId minn riżultat interessanti u tfittex telemetrija oħra mill-istess operazzjoni. Hawnhekk il-korrelazzjoni ssir aktar utli milli taqra messaġġi ta’ log waħedhom.

Spiża u volum tat-telemetrija

Application Insights mhuwiex sempliċement servizz bi spiża fissa. Il-ħlas għal Azure Monitor jiddependi prinċipalment mill-ammont ta’ telemetrija miġbura u minn kemm iddum tinżamm.

Logs dettaljati żżejjed, eċċezzjonijiet ripetuti, traffiku għoli u proprjetajiet personalizzati mhux meħtieġa jistgħu jżidu dan il-volum. Sampling u filtering jistgħu jnaqqsuh, filwaqt li cost alerts u daily caps jistgħu jgħinu biex tinstab żieda mhux mistennija. Dawn il-kontrolli jeħtieġu bilanċ: jekk titneħħa wisq telemetrija, tista’ tintilef ukoll l-informazzjoni meħtieġa biex jiġi investigat falliment.

Punt tat-tluq raġonevoli huwa t-telemetrija awtomatika tal-backend, logs strutturati f’livelli utli u numru żgħir ta’ queries għal problemi komuni. Tista’ tiżdied aktar telemetrija meta jkun hemm mistoqsija ċara li trid twieġeb.

Referenzi