A Azure-erőforrások és -alkalmazások monitorozása

A Azure Monitor segítségével naplókat, metrikákat és riasztásokat gyűjthet a JavaScript-alkalmazásokban és az általuk használt Azure szolgáltatásokban. Azure Monitor a telemetria gyűjtését és tárolását ellátó központi platformszolgáltatás. Alkalmazásait az Application Insights segítségével is rendszerítheti. Figyelnie kell az üzemeltetett alkalmazásszolgáltatást, az alkalmazás által integrálható Azure szolgáltatásokat és magát az alkalmazás forráskódját.

Naplók, metrikák és riasztások ismertetése

A telemetriai adatok az alkalmazásokból és szolgáltatásokból az állapotuk, teljesítményük és használatuk figyelése érdekében gyűjtött adatok. A Azure a telemetria naplókba, metrikákba és riasztásokba van kategorizálva.

Azure négyféle telemetriát kínál:

Telemetriai típus Mit ad önnek? Hol található az egyes szolgáltatásokhoz?
Mértékek Numerikus, idősoros adatok (CPU, memória stb.) Metrikák a portálon vagy az monitor metrics a parancssori felületen
Figyelmeztetések Proaktív értesítések a küszöbértékek elérésekor Riasztások a portálon vagy az monitor metrics alert a parancssori felületen
Naplók Szöveges események és diagnosztikák (web, alkalmazás) App Service-naplók, Funkciók Monitorozás, Konténeralkalmazások diagnosztika
Egyéni naplók Saját alkalmazástelemetria az App Insightson keresztül Az Application Insights-erőforrás Naplók (Trace) táblája

Válassza ki a megfelelő telemetriát a kérdéséhez:

Forgatókönyv Naplók használata... Metrikák használata... Riasztások használata...
"A webalkalmazásom elindult és válaszolt?" App Service webkiszolgálói naplók (naplók) Nincs adat. Nincs adat.
"A függvényem időtúllépést vagy hibát jelez?" Függvénymeghívási naplók (Monitor) Függvényvégrehajtás időtartamának metrikája Riasztás a(z) ">0 függvényhiba" miatt
"Mennyire van kihasználva a szolgáltatásom, és skálázható-e?" Nincs adat. Szolgáltatás átviteli sebessége/CPU a metrikákban Automatikus skálázási riasztás a CPU% esetében, ha meghaladja a 70% szintet >
Milyen kivételeket dob a kódom? Egyéni nyomkövetési naplók az Application Insightsban Nincs adat. "ServerExceptions >0" riasztás
"Túlléptem a tranzakciós vagy kvótakorlátokat?" Nincs adat. Kvótával kapcsolatos metrikák (tranzakciók, szabályozás) Riasztás a "ThrottlingCount >0" beállításról

Költségoptimalizálás

Jelentősen csökkentheti az Azure Monitor költségeit a konfigurációs beállítások legjobb gyakorlatainak, valamint a gyűjtött adatok mennyiségének csökkentésére szolgáló lehetőségek megismerésével.

Naplózás és metrikák engedélyezése az összes Azure erőforráshoz

A Azure minden szolgáltatása saját naplózási és metrikafunkciókkal rendelkezik. Engedélyezze a naplózást minden Azure erőforráson, hogy biztosan rendelkezzen a teljes teljes körű alkalmazás figyeléséhez szükséges telemetriával.

Azure Monitor erőforrás létrehozása

Létrehozhat egy Azure Monitor erőforrást, amely naplókat és metrikákat gyűjt a Azure erőforrásokból. Ez az erőforrás általában egy Log Analytics munkaterület, ahol a naplókat és metrikákat tárolják.

Ezt az erőforrást többféleképpen is létrehozhatja:

  • Azure portál: A Azure portál használatával hozzon létre egy Log Analytics munkaterületet, és konfigurálja az erőforrások diagnosztikai beállításait.
  • Azure CLI: A Azure CLI használatával hozzon létre egy Log Analytics munkaterületet, és konfigurálja az erőforrások diagnosztikai beállításait.
  • PowerShell: A PowerShell használatával hozzon létre egy Log Analytics munkaterületet, és konfigurálja az erőforrások diagnosztikai beállításait.
  • Bicep: Bicep-sablonok használatával deklaratív módon definiálhatja és helyezheti üzembe a Azure Monitor-erőforrásokat.

Log Analytics munkaterület létrehozása az Azure CLI használatával

A Azure CLI használatával hozzon létre egy Log Analytics munkaterületet, ahol a naplókat és metrikákat tárolja. Példa:

# Variables
resourceGroup="myResourceGroup"
location="eastus"
workspaceName="myWorkspace"
webAppName="myWebApp"
diagName="${webAppName}/appServiceLogging"
SUBSCRIPTION_ID=$(az account show --query id -o tsv)

# 1) Create a Log Analytics workspace
workspaceId=$(az monitor log-analytics workspace create \
  --resource-group $resourceGroup \
  --workspace-name $workspaceName \
  --location $location \
  --query id -o tsv)

# 2) Enable diagnostic settings on your App Service
az monitor diagnostic-settings create \
  --name "$diagName" \
  --resource "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$webAppName" \
  --workspace $workspaceId \
  --logs '[{"category": "Administrative", "enabled": true},{"category":"AppServiceConsoleLogs","enabled":true},{"category":"AppServiceHTTPLogs","enabled":true}]' \
  --metrics '[{"category":"AllMetrics","enabled":true}]'

Log Analytics-munkaterület létrehozása a Bicep használatával

A Bicep használatával deklaratív módon definiálhatja és helyezheti üzembe a Azure Monitor-erőforrásokat. Ez a példa létrehoz egy Log Analytics munkaterületet, és konfigurálja az App Service diagnosztikai beállításait.

Az IaC-sablonokba belefoglalhatja a naplózást, a metrikákat és a riasztásokat egy Bicep diagnosticSettings erőforrás-referenciával. Példa (Bicep):

param webAppName string

resource webApp 'Microsoft.Web/sites@2022-09-01' existing = {
  name: webAppName
}

resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
  name: 'myWorkspace'
  location: resourceGroup().location
}

resource diagSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
  name: '${webApp.name}/appServiceLogging'
  properties: {
    workspaceId: logAnalytics.id
    logs: [
      { category: 'AppServiceConsoleLogs'; enabled: true }
      { category: 'AppServiceHTTPLogs'; enabled: true }
    ]
    metrics: [
      { category: 'AllMetrics'; enabled: true }
    ]
  }
}

Riasztások létrehozása az erőforrásokhoz

A metrikákra vonatkozó riasztásokat a Azure portálon vagy a Azure CLI használatával állíthatja be. A riasztások tartalmazhatnak bizonyos metrikákat, kommunikációs streameket (például e-maileket) és gyakoriságot.

Az alábbi példák segítségével metrikariasztásokat hozhat létre a portálon vagy programozási úton.

  • Azure CLI: gyors telepítés az monitor metrics alert által
  • Bicep: deklaratív IaC-architektúra meghatározás Microsoft.Insights/metricAlerts

A riasztások megadhatnak célmetrikákat, értesítési csatornákat (e-mail, webhook), súlyosságot, kiértékelési gyakoriságot és műveletcsoportokat.

az monitor metrics alert create \
  --name HighCpuAlert \
  --resource-group MyResourceGroup \
  --scopes /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/myApp \
  --condition "avg CpuPercentage > 70" \
  --description "Alert when CPU goes above 70%" \
  --severity 2 \
  --window-size 5m \
  --evaluation-frequency 1m \
  --action /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup
resource cpuAlert 'Microsoft.Insights/metricAlerts@2018-03-01' = {
  name: 'highCpuAlert'
  location: resourceGroup().location
  properties: {
    description: 'Alert when CPU goes above 70%'
    severity: 2
    enabled: true
    scopes: [
      webApp.id
    ]
    evaluationFrequency: 'PT1M'
    windowSize: 'PT5M'
    criteria: {
      allOf: [
        {
          criterionType: 'StaticThresholdCriterion'
          name: 'HighCpu'
          metricName: 'CpuPercentage'
          metricNamespace: 'Microsoft.Web/sites'
          operator: 'GreaterThan'
          threshold: 70
          timeAggregation: 'Average'
        }
      ]
    }
    autoMitigate: false
    actions: [
      {
        actionGroupId: '/subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup'
      }
    ]
  }
}

Naplóadatok megtekintése

A naplóadatok Azure portálon való megtekintéséhez lépjen a Log Analytics munkaterületre, és válassza a Naplók lehetőséget. Kusto Query Language (KQL) lekérdezéseket futtathat a naplókon.

Naplók megtekintése

Használja az alábbi táblázatot, hogy többet megtudjon a naplók közvetítéséről.

Azure MCP-kiszolgáló

A helyi fejlesztés során az Azure MCP Servermonitor eszközzel anélkül kérdezhet le naplókat, hogy elhagyná az IDE-t. Miután telepítette a kiszolgálót a következő Copilot kérések például a következők:

  • Munkaterületek listázása: "Az előfizetés összes Log Analytics munkaterületének megjelenítése".
  • Táblák keresése: "A munkaterület összes táblájának listázása "security-logs"
  • Összetett lekérdezés: "A webkiszolgálók processzorhasználati trendjének megjelenítése az elmúlt 24 órában"

Add hozzá a naplózást a kódhoz

Az alkalmazásnaplózáshoz az Application Insights az alábbiakat nyújtja:

  • Standard naplózás a Azure szolgáltatásban és a forráskódban az inicializálástól függően.
  • Egyéni naplózás az üzembehelyezési folyamatból és a forráskódban.

Standard konzolnaplózás (stdout/stderr)

Azure webalkalmazások és Azure Functions automatikusan egyéni naplózást biztosítanak stdout és stderr, ha a megfelelő naplózási függvényeket használja:

  • A webalkalmazások használják a console.log('your message here').
  • Függvényalkalmazások használják a context.log('your message here').

Egyéni Application Insights-naplózás hozzáadása

A Application Insights használatával részletesebb egyéni naplózást adhat hozzá a Azure Monitor. Az Application Insights kiszolgálói (Node.js) és ügyféloldali (böngészős) forgatókönyveket kínál:

  • Adja hozzá az Application Insights SDK-t a forráskódhoz.
  • Készítsen naplót a Node.js-ból egy npm csomag használatával.
    • Egyéni konzolnaplók gyűjtéséhez mindenképpen konfigurálja a Node.js SDK-t enableAutoCollectConsole: true .
  • Jelentkezzen be az ügyfélkódból egy npm-csomag használatával.
  • Jelentkezzen be a Kubernetes-fürtbe vagy Azure virtuális gépbe.

SDK-folyamatnaplók engedélyezése (@Azure/logger)

Az SDK részletességének szabályozása a környezeti változó vagy az AZURE_LOG_LEVEL@azure/logger npm-csomag használatával:

import { setLogLevel } from "@azure/logger";
// Options: 'error', 'warning', 'info', 'verbose'
setLogLevel(process.env.AZURE_LOG_LEVEL || "info");

Az Application Insights Node.js SDK konfigurálása

Inicializálja az Application Insights for Node.js SDK-t mintavételezéssel, függőséggyűjtéssel és konzolnapló-rögzítéssel:

import appInsights from "applicationinsights";
appInsights
  .setup(process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR_CONNECTION_STRING>")
  .setAutoCollectConsole(true, true)        // collect console.log
  .setAutoCollectDependencies(true)        // track outgoing requests
  .setInternalLogging(false, true)         // SDK internal logs
  .start();

// Optional: add custom properties to all telemetry
appInsights.defaultClient.commonProperties = { serviceName: "my-service" };

Korreláció és elosztott nyomkövetés hozzáadása

Az Application Insights SDK automatikusan injektálja a műveletet és a korrelációs azonosítókat a kérelmekbe. Egyéni korreláció vagy tulajdonságok hozzáadása:

appInsights.defaultClient.trackTrace({
  message: "Custom trace",
  properties: { userId: user.id }
});

További információ: elosztott nyomkövetési útmutató

Telemetriai adatok kiürítése fejlesztői szkriptekben

Győződjön meg arról, hogy a naplók küldése a folyamatból való kilépés előtt történik a helyi fejlesztés során:

appInsights.defaultClient.flush({
  callback: () => process.exit(0)
});

Ügyféloldali telemetria beállítása

Ügyfélalkalmazások esetén használja a @microsoft/applicationinsights-web csomagot :

import { ApplicationInsights } from "@microsoft/applicationinsights-web";
const ai = new ApplicationInsights({ config: {
  connectionString: "<YOUR_CONNECTION_STRING>",
  enableAutoRouteTracking: true
}});
ai.loadAppInsights();