Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen beskriver Azure Log Analytics-destinasjonen for Fabric Apache Spark Diagnostic Emitter ved å bruke Log Ingestion API.
Fabric Apache Spark Diagnostic Emitter gir en felles konfigurasjonsmodell for Spark-diagnostikk på tvers av destinasjoner. For Azure Log Analytics er Log Ingestion API den anbefalte inntaksmodellen.
Denne artikkelen viser hvordan man konfigurerer emitter-egenskaper, ruter Apache Spark-logger, hendelseslogger og målinger til Log Analytics, og spør de innsamlede dataene for overvåking og feilsøking.
For arkitektur og destinasjonsvalg på tvers av Fabric Apache Spark Diagnostic Emitter, se Fabric Apache Spark Diagnostic Emitter oversikt.
Migrer fra Data Collector API-et
Hvis du for øyeblikket bruker HTTP Data Collector API, migrer til Log Ingestion API for å tilpasse deg nåværende Azure Monitor-inntaksmønstre.
Viktige endringer i den nye modellen:
- Skjemadefinisjoner er eksplisitte gjennom Data Collection Rules (DCR), som gir deg forutsigbar skjemavalidering og mer konsistente spørringsresultater enn den eldre friformede nyttelastmetoden.
- Inntaket rutes gjennom Data Collection Endpoints (DCEs) og DCR-mappinger, som gir en mer kontrollert inntastingsvei enn å poste direkte til Data Collector API-endepunktet.
- Autentisering støtter både service principal client secret og sertifikatbaserte alternativer.
- Emittertypen endres fra
AzureLogAnalyticstilAzureLogIngestion.
Migrering inkluderer vanligvis opprettelse av DCR- og DCE-ressurser, oppdatering av Fabric-miljø Spark-egenskaper, og validering av datainntak i tilpassede Log Analytics-tabeller.
Oversikt over logginntaks-API-et
For Apache Spark-diagnostikk i Microsoft Fabric tilbyr Log Ingestion API en strukturert inntaksmodell for autentisering, skjemadefinisjon, ruting og tabelllevering i Azure Log Analytics.
Nøkkelkomponenter
| Komponent | Formål |
|---|---|
| App-registreringsinformasjon | Gir Microsoft Entra-appidentitet som brukes til å autentisere Log Ingestion API-forespørsler med enten en klienthemmelighet eller et sertifikat. |
| Log Analytics-tabell | Gir den måltilpassede tabellen hvor innkjøpte Spark-diagnostikk lagres for forespørsler og overvåking. |
| Datainnsamlingsregel (DCR) | Definerer inndatastrømmer, skjemakartlegging og valgfrie transformasjoner for inntasting. |
| Datainnsamlingsendepunkt (DCE) | Gir inntastingsendepunktet URI (dceUri) som klienter bruker for å sende data gjennom DCR-basert ruting. |
Kun brukeropprettede DCR-er konfigurert for Log Ingestion API kan brukes til programmatisk inntasting.
Trinnvis konfigurasjon
Trinn 1. Forbered Log Analytics-arbeidsområdet
Et Log Analytics-arbeidsområde kreves for å motta Spark-diagnostikk. Det er den grunnleggende lagrings- og spørringsenheten for Azure Monitor Logs.
Hvis du ikke har en, opprett et Log Analytics arbeidsområde i Azure-portalen.
Viktig!
Når du fullfører følgende steg, oppretter ressursene Data Collection Endpoint (DCE) og Data Collection Rule (DCR) i samme region som Log Analytics-arbeidsområdet.
Trinn 2. Opprett et datainnsamlingsendepunkt (DCE)
Create a Data Collection Endpoint (DCE) i Azure portal. DCE-en gir endepunkts-URI-en som du konfigurerer i Spark-egenskapene for Log Ingestion API. Regionen til DCE-en må være den samme som regionen til ditt Log Analytics-arbeidsområde.
I portalen Azure, gå til Monitor i venstre navigasjonspanel.
Under Innstillinger, velg datainnsamlingsendepunkter, og velg deretter Opprette.
Opprett endepunktet, og merk deretter DCE-navnet (for eksempel
DCEdemo).
Trinn 3. Forbered eksempel på JSON-skjema
Når du lager tilpassede loggtabeller, må du konfigurere en Data Collection Rule (DCR). Basert på datastrømdefinisjonene spesifisert i DCR, genererer systemet automatisk det tilsvarende tabellskjemaet i ditt Log Analytics-arbeidsområde.
Følgende forhåndsdefinerte JSON-skjema prøver hver kart til en spesifikk datatype. Last ned eksempelet som passer til ditt scenario, og last det opp når du oppretter den tilhørende tilpassede tabellen og DCR.
- Spark-hendelseslogger - Hendelsestabell JSON-skjema-eksempel
- Spark-driver- og executorlogger - Logtabell JSON-skjema-eksempel
- Spark-metrikker - Metric table JSON-skjema-eksempel
- Plattformmetadata - Plattformmetadatatabell JSON-skjemaeksempel
Her er et eksempel på en loggtabell med JSON-skjema for Spark-driver- og executorlogger i Azure Log Analytics. Bruk dette skjemaet som referanse når du lager dine egendefinerte tabeller og DCR-er for logginntak.
[
{
"applicationId_s": "<APPLICATION_ID>",
"applicationName_s": "<NOTEBOOK_NAME>",
"artifactId_g": "<ARTIFACT_GUID>",
"artifactType_s": "SynapseNotebook",
"capacityId_g": "<CAPACITY_GUID>",
"Category": "Log",
"executorId_s": "driver",
"executorMax_s": 9,
"executorMin_s": 1,
"ExtraFields": {
"Category": "Log",
"JobId": "1"
},
"fabricEnvId_g": "<FABRIC_ENV_GUID>",
"fabricLivyId_g": "<FABRIC_LIVY_GUID>",
"fabricTenantId_g": "<FABRIC_TENANT_GUID>",
"fabricWorkspaceId_g": "<FABRIC_WORKSPACE_GUID>",
"isHighConcurrencyEnabled_s": false,
"Level": "INFO",
"logger_name_s": "org.apache.spark.scheduler.dynalloc.ExecutorMonitor",
"Message": "Executor 1 is removed.",
"thread_name_s": "spark-listener-group-executorManagement",
"TimeGenerated": "<TIME_GENERATED>",
"userId_g": "<USER_ID>"
}
]
Trinn 4. Opprett egendefinert tabell (Direct Ingest)
Opprett en tilpasset tabell i Log Analytics-arbeidsområdet ditt med alternativet Log Ingestion API, og last opp JSON-skjemaeksempelet til den tilknyttede DCR-en. Dette steget kreves for å sette opp destinasjonen for Spark-diagnostikk og sikre at de innsamlede dataene følger det forventede skjemaet. Området for Log Analytics-arbeidsområdet, DCE og DCR må være det samme for vellykket inntak.
I portalen Azure portal åpner du arbeidsområdet ditt Log Analytics (for eksempel loganalyticsworkspacedemo).
Velg tabeller>Opprett>ny tilpasset logg (Direct Ingest).
Inn i bordinnstillingene:
- Tabellnavn: For eksempel SparkLogTest (suffikset "_CL" legges automatisk til).
- Tabellplan: Analyse
- Datainnsamlingsregel: Opprett en ny DCR (for eksempel SparkLogTestrule).
- Datainnsamlingsendepunkt: Velg DCE fra steget Opprett et datainnsamlingsendepunkt (DCE) (for eksempel DCEdemo).
Velg Neste.
I Schema og Transformasjon, last opp JSON-skjemaprøven. Du trenger ikke konfigurere DCR-transformasjon fordi skjemaet er fullt stabilisert på klientsiden.
Trinn 5. Forbered tjenesteprinsippet for autentisering
Registrer en app på Microsoft Entra ID.
Registrer TenantId, ClientId og ClientSecret (hvis du bruker Client Secret-autentisering). Du bruker disse verdiene i Spark-konfigurasjonen i steg 6.
Gi appen rollen Monitoring Metrics Publisher på hver tabells DCR-ressurs. For rollefordelingssteg, se Tildel Azure roller ved å bruke Azure-portalen.
Trinn 6. Konfigurer Spark-egenskaper
For å konfigurere Spark, opprett et miljø i Fabric og velg ett av følgende autentiseringsalternativer. Bruk kun ett alternativ for en gitt emitter.
Et miljø i Fabric lagrer Spark-innstillinger og biblioteker som notatbøker og Spark-jobbdefinisjoner bruker under kjøring. For steg for å opprette en, se Lag, konfigurer og bruk et miljø i Fabric.
- Velg alternativ 1 hvis du vil ha en enklere oppsett ved å bruke en klienthemmelighet.
- Velg Alternativ 2 hvis organisasjonen din krever sertifikatbasert autentisering og sentralisert sertifikathåndtering i Azure Key Vault.
I begge alternativene kan du velge Legg til fra .yml i miljøet for å importere en .yml konfigurasjonsfil.
Alternativ 1: Konfigurer med tjenesteprinsipp og klienthemmelig
Bruk dette alternativet for rask oppsett med tjenesteprincipal-legitimasjon og en klienthemmelighet.
Lag et miljø i Fabric.
Legg til følgende Spark-egenskaper med passende verdier i miljøet, eller velg Legg til fra .yml i båndet for å importere en
.ymlkonfigurasjonsfil.spark.synapse.diagnostic.emitters: <EMITTER_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type: AzureLogIngestion spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories: DriverLog,ExecutorLog,EventLog,Metrics spark.synapse.diagnostic.emitter.<EMITTER_NAME>.dceUri: https://<DCE_NAME>.<REGION>.ingest.monitor.azure.com spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logDcr: <LOG_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logStream: <LOG_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventDcr: <EVENT_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventStream: <EVENT_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricDcr: <METRIC_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricStream: <METRIC_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaDcr: <META_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaStream: <META_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.secret: <SP_CLIENT_SECRET> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.tenantId: <SP_TENANT_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.clientId: <SP_CLIENT_ID> spark.fabric.pools.skipStarterPools: 'true'Lagre og publiser endringene.
Alternativ 2: Konfigurer med autentisering av tjenesteprincipal-sertifikat
Bruk dette alternativet når organisasjonen din krever sertifikatbasert autentisering.
Før du begynner, sørg for at tjenesteansvarlig er opprettet med et sertifikat. For mer informasjon, se Opprett en tjenesteprinsipp som inneholder et sertifikat ved å bruke Azure CLI.
Lag et miljø i Fabric.
Legg til følgende Spark-egenskaper med passende verdier i miljøet, eller velg Legg til fra .yml i båndet for å importere en
.ymlkonfigurasjonsfil.spark.synapse.diagnostic.emitters: <EMITTER_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type: AzureLogIngestion spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories: DriverLog,ExecutorLog,EventLog,Metrics spark.synapse.diagnostic.emitter.<EMITTER_NAME>.dceUri: https://<DCE_NAME>.<REGION>.ingest.monitor.azure.com spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logDcr: <LOG_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logStream: <LOG_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventDcr: <EVENT_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventStream: <EVENT_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricDcr: <METRIC_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricStream: <METRIC_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaDcr: <META_DCR_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaStream: <META_STREAM_NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault.certificateName: <SP_CERT-NAME> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault: https://<KEYVAULT_NAME>.vault.azure.net/ spark.synapse.diagnostic.emitter.<EMITTER_NAME>.tenantId: <SP_TENANT_ID> spark.synapse.diagnostic.emitter.<EMITTER_NAME>.clientId: <SP_CLIENT_ID> spark.fabric.pools.skipStarterPools: 'true'Lagre og publiser endringer.
Trinn 7. Koble miljøet til notatbøker eller Spark-jobbdefinisjoner, eller sett det som arbeidsområdestandard
Bruk en av følgende tilnærminger basert på ditt ansvarsområde:
- Legg miljøet til spesifikke notatbøker eller Spark-jobbdefinisjoner når du ønsker målrettet utrulling, testing eller kontroll per punkt.
- Sett miljøet som arbeidsområdestandard når du vil ha konsistente Spark-diagnostikkinnstillinger brukt på tvers av arbeidsområdet.
For å knytte miljøet til notatbøker eller Spark-jobbdefinisjoner:
- Naviger til notatboken din eller Spark-jobbdefinisjonen i Fabric.
- Velg Miljø-menyen på Hjem-fanen, og velg det konfigurerte miljøet.
- Konfigurasjonen vil bli brukt etter at du har startet en Spark-økt.
For å sette miljøet som standard arbeidsområde:
- Gå til Workspace-innstillinger i Fabric.
- Finn Spark-innstillinger i arbeidsområdeinnstillinger (arbeidsområdeinnstilling>Data Engineering/Science>Spark-innstillinger).
- Velg Miljø-fanen , og velg miljøet med egenskaper for diagnosegnistegenskap konfigurert, og velg Lagre.
Trinn 8. Kjør Spark-arbeidsbelastninger og verifiser logger og måleparametere
Bruk miljøet du opprettet og la ved i forrige seksjon, kjør deretter Spark-arbeidsbelastninger og verifiser inntastingen i Log Analytics.
- Kjør Spark-arbeidsbelastninger ved å bruke miljøet som var konfigurert i forrige avsnitt. Du kan bruke en av følgende metoder:
- Kjør en notatbok i Fabric.
- Send inn en Spark-batchjobb gjennom en Spark-jobbdefinisjon.
- Kjør Spark-aktiviteter i en pipeline.
- Åpne det målrettede arbeidsområdet Log Analytics og verifiser at logger og målinger er hentet inn for den kjørende arbeidsbelastningen.
- For å validere inntasting og inspisere poster, bruk Kusto-eksemplene i Query data with Kusto.
Skrive egendefinerte programlogger
Bruk egendefinerte applikasjonslogger når du ønsker hendelser på forretningsnivå eller app-spesifikke i tillegg til plattformdiagnostikk. Disse loggene sendes gjennom samme diagnostiske pipeline og vises i Log Analytics sammen med Spark-logger, hendelseslogger og måleparametere.
Bruk Apache Log4j i Spark-koden din for å sende ut tilpassede loggmeldinger. Følgende eksempler viser et minimalt mønster for Scala og PySpark.
Scala-eksempel:
%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
1/0
} catch {
case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()
PySpark-eksempel:
%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
Spørringsdata med Kusto
Bruk Kusto-spørringer for å validere at inntaket fungerer og for å undersøke Spark-eksekveringsatferd. Erstatt plassholderverdier som {FabricWorkspaceId}, {ArtifactId}, og {LivyId} med verdier fra din egen gjennomspilling.
Start med hendelses- og loggforespørsler for å bekrefte dataankomst, og bruk deretter metriske spørringer for ytelsesanalyse.
Slik spør du Apache Spark-hendelser:
SparkEventTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Slik spør du spark-programdriveren og executor-loggene:
SparkLogTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Slik spør du Apache Spark-måledata:
SparkMetricsTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc
For å spørre plattformmetadata:
SparkMetadataTest_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Fabric-arbeidsområder med administrert virtuelt nettverk
Fabric-støtte som muliggjør beskyttelse mot dataeksfiltrasjon for arbeidsområder. Med eksfiltrasjonsbeskyttelse kan ikke logger og metrikker sendes direkte til destinasjonsendepunktene. Du kan opprette tilsvarende administrerte private endepunkter for forskjellige destinasjonsendepunkter i dette scenariet.
Tilgjengelige Apache Spark-konfigurasjoner
Tabellen nedenfor viser Spark-konfigurasjoner for å sende logger og metrikker til Azure Log Analytics ved å bruke Log Ingestion API.
Viktig!
For Azure Log Analytics, sett spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type til AzureLogIngestion.
AzureLogAnalytics er den eldre HTTP Data Collector API-typen. For legacy-veiledning, se Monitor Apache Spark-applikasjoner med Azure Log Analytics.
| Konfigurasjon | Beskrivelse |
|---|---|
spark.synapse.diagnostic.emitters |
De kommadelte målnavnene for diagnosedemittere. For eksempel MyDest1,MyDest2. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type |
Innebygd måltype. For å aktivere Azure Log Analytics via Log Ingestion API, sett denne verdien til AzureLogIngestion. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories |
De kommadelte valgte loggkategoriene. Tilgjengelige verdier inkluderer DriverLog, , ExecutorLog, EventLogMetrics. Hvis ikke satt, er standardverdien alle kategorier. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.dceUri |
Data Collection Endpoint (DCE) URI brukes til inntasting når data rutes via Data Collection Rules (DCR). |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logDcr |
Data Collection Rule (DCR)-ressurs-ID-en som brukes til å rute Spark-logger til destinasjonen. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.logStream |
Strømnavnet er definert i Data Collection Rule (DCR) for Spark-logger. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventDcr |
Data Collection Rule (DCR)-ressurs-ID-en som brukes til å rute Spark-hendelseslogger. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.eventStream |
Strømnavnet er definert i Data Collection Rule (DCR) for Spark-hendelseslogger. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricDcr |
Data Collection Rule (DCR)-ressurs-ID-en som brukes til å rute Spark-metrikker. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metricStream |
Strømnavnet definert i Data Collection Rule (DCR) for Spark-metrikker. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaDcr |
Data Collection Rule (DCR)-ressurs-ID-en som brukes til å rute Spark-metadata. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.metaStream |
Strømnavnet definert i Data Collection Rule (DCR) for Spark-metadata. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault.certificateName |
Navnet på sertifikatet lagret i Azure Key Vault, brukt til autentisering. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault |
Azure Key Vault URI som lagrer autentiseringssertifikatet. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.tenantId |
Microsoft Entra-leietaker-ID-en som brukes til autentisering. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.clientId |
Klient-ID-en (applikasjons-ID-en) registrert i Microsoft Entra ID. |
spark.fabric.pools.skipStarterPools |
Denne Spark-egenskapen brukes til å fremtvinge en behovsbetinget Spark-økt. Sett verdien til når true du bruker standardpoolen for å utløse bibliotekene til å sende logger og metrikker. |
spark.synapse.diagnostic.emitter.<EMITTER_NAME>.secret |
Klienthemmeligheten knyttet til Microsoft Entra ID (Azure AD)-applikasjonen, brukt sammen med leietaker-ID og klient-ID for å autentisere senderen ved sending av diagnostiske data. Denne innstillingen er gjensidig utelukkende med sertifikatbasert autentisering—konfigurer enten klienthemmeligheten eller sertifikatet, men ikke begge. |