Použití Azure Log Analytics v Tvůrci rozhraní Data API

Azure Log Analytics je centralizovaná platforma protokolování, která agreguje protokoly z aplikací, prostředků Azure, virtuálních počítačů, kontejnerů a dalších. Integrace s tvůrcem rozhraní DATA API (DAB) pomáhá podnikům splňovat požadavky na dodržování předpisů, zásady správného řízení a pozorovatelnost. Na rozdíl od Application Insights (který se zaměřuje na APM), poskytuje Služba Log Analytics širší agregaci protokolů s podporou jazyka KQL (Kusto Query Language).

Diagram znázorňující tok telemetrie Log Analytics

Požadavky

  • Existující konfigurační soubor DAB.
  • Předplatné Azure s oprávněními k vytváření prostředků Log Analytics
  • Pracovní prostor Služby Azure Log Analytics s:
    • Vlastní tabulka (končící na _CL)
    • Pravidlo shromažďování dat (DCR)
    • Koncový bod shromažďování dat (DCE)
  • Spravovaná identita povolená na hostiteli DAB (Azure App Service, Container Apps, virtuální počítač atd.).
  • Rozhraní příkazového řádku pro tvorbu API dat. Instalace rozhraní příkazového řádku

Nastavení prostředků Azure Log Analytics

Před konfigurací DAB vytvořte požadované prostředky Azure.

Vytvoření pracovního prostoru služby Log Analytics

  1. Přejděte dopracovních prostorů Služby Log Analytics na >.
  2. Vyberte + Vytvořit.
  3. Zvolte své předplatné, skupinu prostředků a oblast.
  4. Zadejte název pracovního prostoru.
  5. Vyberte Zkontrolovat + vytvořit>Vytvořit.

Vytvoření vlastní tabulky

Vlastní tabulky pro rozhraní API pro příjem protokolů musí končit _CL.

  1. V pracovním prostoru služby Log Analytics přejděte na Tabulky.
  2. Vyberte + Vytvořit>nový vlastní protokol (založený na DCR).
  3. Zadejte název tabulky (například DabLogs_CL).
  4. Definujte schéma pomocí těchto sloupců:
    • Time (datum a čas)
    • LogLevel (řetězec)
    • Message (řetězec)
    • Component (řetězec)
    • Identifier (řetězec)
  5. Vyberte Vytvořit.

Vytvoření koncového bodu shromažďování dat (DCE)

  1. Přejděte do Monitor>Koncových Bodů Shromažďování Dat.
  2. Vyberte + Vytvořit.
  3. Zvolte své předplatné, skupinu prostředků a oblast.
  4. Zadejte název (například my-dce).
  5. Vyberte Zkontrolovat + vytvořit>Vytvořit.
  6. Zkopírujte adresu URL koncového bodu příjmu protokolů (například https://my-dce.eastus-1.ingest.monitor.azure.com).

Vytvoření pravidla shromažďování dat (DCR)

  1. Přejděte do Monitor>Pravidla shromažďování dat.
  2. Vyberte + Vytvořit.
  3. Zvolte předplatné, skupinu prostředků, oblast.
  4. Zadejte název (například my-dcr).
  5. Ve Zdrojích dat vyberte Vlastní textové protokoly.
  6. Konfigurovat:
    • Koncový bod shromažďování dat: Vyberte DCE.
    • Cíl: Váš pracovní prostor služby Log Analytics
    • Tabulka: Vlastní tabulka (DabLogs_CL).
  7. Vyberte Zkontrolovat + vytvořit>Vytvořit.
  8. Zkopírujte neměnné ID (začíná na dcr-).

Konfigurace ověřování

DAB používá spravovanou identitu Azure k ověření ve službě Log Analytics. V konfiguraci se neukládají žádné přihlašovací údaje.

Povolení spravované identity

az webapp identity assign \
  --name my-app \
  --resource-group my-rg

Přiřadit oprávnění

Udělte roli Vydavatele metrik monitorování vaší spravované identitě na DCR.

# Get Managed Identity principal ID
PRINCIPAL_ID=$(az webapp identity show \
  --name my-app \
  --resource-group my-rg \
  --query principalId -o tsv)

# Get DCR resource ID
DCR_ID=$(az monitor data-collection rule show \
  --name my-dcr \
  --resource-group my-rg \
  --query id -o tsv)

# Assign role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role "Monitoring Metrics Publisher" \
  --scope $DCR_ID

Důležité

Bez tohoto přiřazení role nemůže DAB odesílat protokoly do Log Analytics ani se správnou konfigurací.

Konfigurace služby Log Analytics

Do souboru konfigurace přidejte oddíl azure-log-analytics pod runtime.telemetry.

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "my-dab-instance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Vlastnosti konfigurace

Vlastnictví Description Výchozí Constraints
enabled Povolte nebo zakažte integraci Log Analytics. false logický
dab-identifier Jedinečný řetězec pro identifikaci položek protokolu z této instance DAB. DabLogs Libovolný řetězec
flush-interval-seconds Jak často se protokoly (v sekundách) vyprázdní do Log Analytics. 5 Musí být > 0.
auth.custom-table-name Vlastní název tabulky v pracovním prostoru služby Log Analytics (povinné) Musí končit na _CL
auth.dcr-immutable-id Neměnné ID pravidla shromažďování dat (povinné) Začíná na dcr-
auth.dce-endpoint Adresa URL koncového bodu shromažďování dat. (povinné) HTTPS URL

Command-line

Nakonfigurujte Log Analytics pomocí dab configure.

Povolení Log Analytics

dab configure \
  --runtime.telemetry.azure-log-analytics.enabled true

Nastavení identifikátoru DAB

dab configure \
  --runtime.telemetry.azure-log-analytics.dab-identifier my-dab-instance

Nastavení intervalu vyprázdnění

dab configure \
  --runtime.telemetry.azure-log-analytics.flush-interval-seconds 10

Nastavení vlastního názvu tabulky

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.custom-table-name DabLogs_CL

Nastavení neměnitelného ID DCR

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Nastavení koncového bodu DCE

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dce-endpoint https://my-dce.eastus-1.ingest.monitor.azure.com

Spustit DAB

Spusťte DAB s konfiguračním souborem:

dab start

Zkontrolujte spouštěcí protokoly DAB:

Azure Log Analytics is enabled.

Jak to funguje

Pokud je povolená služba Log Analytics, DAB:

  1. Ověřuje se v Azure pomocí spravované identity hostitele.
  2. Seskupuje položky protokolu na základě flush-interval-seconds.
  3. Odesílá protokoly do koncového bodu shromažďování dat (DCE).
  4. DCE směruje logy prostřednictvím pravidla shromažďování dat (DCR) pro transformaci.
  5. DCR ingestuje protokoly do vaší vlastní tabulky Log Analytics.

Tok dat

DAB Application
    ↓
ILogger (ASP.NET Core)
    ↓
Log Analytics Logger Provider
    ↓
Managed Identity Authentication
    ↓
Data Collection Endpoint (DCE)
    ↓
Data Collection Rule (DCR)
    ↓
Log Analytics Workspace (Custom Table)

Co se zachytí

Typ telemetrie Zdroj Examples
Trasování ILogger volání v DAB Spouštěcí protokoly, protokoly spouštění dotazů, upozornění
Errors Zpracování výjimek Chyby za běhu, chyby konfigurace, chyby databáze
Informace o komponentách Vnitřní části DAB Který modul vygeneroval protokol
Identifikátor instance Konfigurace dab-identifier hodnota pro filtrování

Struktura protokolu

Každá položka protokolu odeslaná do Log Analytics obsahuje tato pole:

Obor Typ Description Example
Time datetime Časové razítko (ISO 8601) 2026-01-27T14:30:00Z
LogLevel řetězec Závažnost logu Information, WarningError
Message řetězec Zpráva protokolu Request completed successfully
Component řetězec Komponenta DAB, která vygenerovala záznam Azure.DataApiBuilder.Service.Startup
Identifier řetězec Hodnota z dab-identifier konfigurace my-dab-instance

Poznámka:

Vlastní sloupce tabulky v Log Analytics mají přípony: _s pro textové řetězce, _d pro desetinné číslo, _t pro datum a čas atd.

Protokoly dotazů v Log Analytics

  1. Otevřete pracovní prostor služby Log Analytics na webu Azure Portal.

  2. Přejděte do protokolů a spusťte dotaz KQL:

    DabLogs_CL
    | where Identifier_s == "my-dab-instance"
    | where LogLevel_s in ("Warning", "Error")
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, LogLevel_s, Message_s, Component_s
    | order by TimeGenerated desc
    

Příkladové dotazy

Počet protokolů podle úrovně:

DabLogs_CL
| where TimeGenerated > ago(24h)
| summarize Count=count() by LogLevel_s

Vyhledání chyb v konkrétní komponentě:

DabLogs_CL
| where Component_s contains "SqlQueryExecutor"
| where LogLevel_s == "Error"
| project TimeGenerated, Message_s

Aspekty výkonu a nákladů

Chování seskupování

DAB shromažďuje záznamy a odesílá je každých flush-interval-seconds:

  • 5 sekund (výchozí): Dobrá rovnováha pro většinu scénářů.
  • 1–2 sekundy: Protokolování téměř v reálném čase (vyšší volání rozhraní API, vyšší náklady).
  • 10–60 sekund: Omezená volání rozhraní API, ale zpožděné logy.

Optimalizace nákladů

Ceny Log Analytics jsou založené na:

  1. Příjem dat: Přijatý počet GB
  2. Uchovávání dat: Za GB za měsíc po úrovni Free.

Snížení nákladů:

  • Zvýšte flush-interval-seconds pro dávkování více protokolů.
  • K vyloučení podrobných protokolů použijte filtry protokolové úrovně. Další informace naleznete v tématu Přizpůsobení podrobností protokolu.
  • Nastavte v pracovním prostoru služby Log Analytics odpovídající uchovávání dat.

Příklad: Filtrování pro snížení hlasitosti

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Default": "Warning",
        "Microsoft": "Error"
      },
      "azure-log-analytics": {
        "enabled": true,
        "flush-interval-seconds": 30,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Tím se odesílají pouze protokoly upozornění a chyb , což výrazně snižuje objem.

Uchovávání dat

Uchovávání dat Log Analytics je možné konfigurovat pro každý pracovní prostor:

Tier Výchozí uchovávání Maximální doba uchovávání
úroveň Free 7 dní 7 dní
Platba dle skutečné spotřeby 30 dní 730 dní (2 roky)

Konfigurace uchovávání informací: Pracovní prostor služby Log Analytics → využití a odhadované nákladyuchovávání dat.

Návod

V případě požadavků na dodržování předpisů zvažte archivaci starších protokolů do služby Azure Storage za účelem dlouhodobého uchovávání.

Řešení problémů

Protokoly se nezobrazují v Log Analytics

Příznak: DAB se úspěšně spustí, ale v pracovním prostoru služby Log Analytics se nezobrazují žádné protokoly.

Možné příčiny:

  • Nekompletní konfigurace: Zkontrolujte, jestli spouštěcí protokoly DAB obsahují chyby, jako jsou Logs won't be sent to Azure Log Analytics because the Custom Table Name is not available in the config file. Ověření všech požadovaných vlastností ověřování: custom-table-name, dcr-immutable-id, dce-endpoint.

  • Spravovaná identita není přiřazena: Ověřte, že az webapp identity show --name my-app --resource-group my-rg je spravovaná identita povolená. Zkontrolujte přiřazení role pomocí az role assignment list --assignee <principal-id> --scope <dcr-id>příkazu .

  • Nesprávný koncový bod DCE nebo ID DCR: Ověřte, že formát koncového bodu DCE je https://<dce-name>.<region>-1.ingest.monitor.azure.com. Ověřte, že ID neměnnosti DCR začíná na dcr-.

  • Vlastní tabulka neexistuje: Vlastní tabulky musí končit _CL. Schéma tabulky musí odpovídat struktuře protokolu.

Chyba: Interval vyprázdnění musí být kladný.

Příčina: flush-interval-seconds je nastavena na 0 nebo zápornou hodnotu.

Řešení: Nastaví flush-interval-seconds se na kladné celé číslo (minimum 1).

Protokoly DAB ukazují, že Služba Azure Log Analytics je zakázaná

Příčina: enabled je false nebo chybí v konfiguraci.

Řešení: Nastavte enabled: true v konfiguraci.

Log Analytics vs. Application Insights

Schopnost Application Insights Analýza protokolů
Soustředění Monitorování výkonu aplikací (APM) Centralizovaná agregace protokolů
Dotazovací jazyk KQL KQL
Scope Jedna aplikace Aplikace, virtuální počítače, kontejnery, prostředky Azure
Případ použití Výkon, výjimky, sledování Dodržování předpisů, zásady správného řízení, korelace mezi prostředky
Autentizace Připojovací řetězec Spravovaná identita (prostřednictvím DCR/DCE)

Application Insights použijte, když potřebujete funkce APM, jako je sledování požadavků, mapování závislostí a profilace výkonu. Log Analytics použijte, když potřebujete centralizované protokolování napříč několika prostředky s požadavky na dodržování předpisů podniku.