Shromažďování protokolů a metrik aplikací Apache Spark pomocí účtu úložiště Azure (Preview)
Rozšíření diagnostického emitoru Apache Sparku infrastruktury je knihovna, která umožňuje aplikacím Apache Sparku generovat protokoly, protokoly událostí a metriky do několika cílů, včetně Azure Log Analytics, Azure Storage a Azure Event Hubs.
V tomto kurzu se dozvíte, jak pomocí rozšíření diagnostického emitoru Apache Sparku fabric odesílat protokoly aplikací Apache Spark, protokoly událostí a metriky do vašeho účtu Azure Storage.
Shromažďování protokolů a metrik do účtu úložiště
Krok 1: Vytvoření účtu úložiště
Ke shromažďování diagnostických protokolů a metrik můžete použít existující účet Azure Storage. Pokud ho nemáte, můžete si vytvořit účet úložiště objektů blob v Azure nebo vytvořit účet úložiště, který se použije s Azure Data Lake Storage Gen2.
Krok 2: Vytvoření artefaktu prostředí infrastruktury s konfigurací Apache Sparku
Možnost 1: Konfigurace s identifikátorem URI služby Azure Storage a přístupovým klíčem
Vytvoření artefaktu prostředí infrastruktury v prostředcích infrastruktury
Přidejte následující vlastnosti Sparku s příslušnými hodnotami do artefaktu prostředí nebo vyberte Přidat z .yml na pásu karet stáhněte ukázkový soubor yaml, který již obsahuje následující vlastnosti.
spark.synapse.diagnostic.emitters: MyStorageBlob spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyStorageBlob.secret: <storage-access-key> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Do konfiguračního souboru zadejte následující parametry:
<my-blob-storage>
,<container-name>
,<folder-name>
,<storage-access-key>
. Další podrobnosti o těchto parametrech najdete v tématu Konfigurace služby Azure Storage.
Možnost 2: Konfigurace se službou Azure Key Vault
Poznámka:
Známý problém: Nelze spustit relaci pomocí možnosti 2 prozatímně. Ukládání tajných kódů ve službě Key Vault v současné době brání spuštění relací Sparku. Určete prioritu konfigurace pomocí metody popsané v možnosti 1.
Ujistěte se, že uživatelům, kteří odesílají aplikace Apache Spark, mají udělená oprávnění ke čtení tajných kódů. Další informace najdete v tématu Poskytnutí přístupu ke klíčům, certifikátům a tajným kódům služby Key Vault pomocí řízení přístupu na základě role v Azure.
Konfigurace služby Azure Key Vault pro ukládání klíče pracovního prostoru:
Vytvořte trezor klíčů na webu Azure Portal a přejděte do trezoru klíčů.
Na stránce nastavení trezoru klíčů vyberte Tajné kódy a pak vygenerovat/importovat.
Na obrazovce Vytvoření tajného kódu zvolte následující hodnoty:
- Název: Zadejte název tajného kódu.
-
Hodnota: Zadejte
<storage-access-key>
tajný kód. - U ostatních hodnot ponechte jejich výchozí nastavení. Pak vyberte Vytvořit.
Vytvořte artefakt prostředí infrastruktury v prostředcích infrastruktury.
Přidejte následující vlastnosti Sparku. Nebo vyberte Přidat z .yml na pásu karet a nahrajte ukázkový soubor yaml, který obsahuje následující vlastnosti Sparku.
spark.synapse.diagnostic.emitters: <MyStorageBlob> spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault: <AZURE_KEY_VAULT_NAME> spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Do konfiguračního souboru zadejte následující parametry:
<my-blob-storage>
,<container-name>
,<folder-name>
,<AZURE_KEY_VAULT_NAME>
, .<AZURE_KEY_VAULT_SECRET_KEY_NAME>
Další podrobnosti o těchto parametrech najdete v tématu Konfigurace služby Azure Storage.Uložte a publikujte změny.
Krok 3: Připojení artefaktu prostředí k poznámkovému bloku nebo definicím úloh Sparku nebo jeho nastavení jako výchozího pracovního prostoru
Připojení prostředí k definicím úloh Poznámkové bloky nebo Sparku:
- Přejděte do konkrétního poznámkového bloku nebo definice úlohy Sparku v prostředcích infrastruktury.
- Na kartě Domů vyberte nabídku Prostředí a vyberte prostředí s nakonfigurovanými vlastnostmi Sparku diagnostiky.
- Konfigurace se použije při spuštění relace Sparku.
Nastavení prostředí jako výchozího pracovního prostoru:
- Přejděte do nastavení pracovního prostoru v prostředcích infrastruktury.
- Najděte nastavení Sparku v nastavení pracovního prostoru (nastavení pracovního prostoru –> Datoví technici/Věda –> Nastavení Sparku).
- Vyberte kartu Prostředí a zvolte prostředí s nakonfigurovanými vlastnostmi sparku diagnostiky a klikněte na Uložit.
Poznámka:
Konfigurace pracovních prostorů můžou spravovat jenom správci pracovního prostoru. Změny provedené zde budou platit pro všechny poznámkové bloky a definice úloh Sparku připojené k nastavení pracovního prostoru. Další informace najdete v tématu Nastavení pracovního prostoru infrastruktury.
Krok 4: Zobrazení souborů protokolů v účtu úložiště Azure
Po odeslání úlohy do nakonfigurované relace Sparku můžete zobrazit protokoly a soubory metrik v cílovém účtu úložiště. Protokoly jsou uloženy v odpovídajících cestách na základě různých aplikací identifikovaných .<workspaceId>.<fabricLivyId>
Všechny soubory protokolu jsou ve formátu JSON Lines (označované také jako JSON s oddělovači newline nebo ndjson), což je vhodné pro zpracování dat.
Dostupné konfigurace
Konfigurace | Popis |
---|---|
spark.synapse.diagnostic.emitters |
Požadováno. Cílové názvy diagnostických emitorů oddělené čárkami. Například MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Požadováno. Předdefinovaný cílový typ Pokud chcete povolit cíl úložiště Azure, AzureStorage musí být zahrnut do tohoto pole. |
spark.synapse.diagnostic.emitter.<destination>.categories |
Nepovinné. Vybrané kategorie protokolu oddělené čárkami. Mezi dostupné hodnoty patří DriverLog , ExecutorLog , EventLog , Metrics . Pokud není nastavená, výchozí hodnota je všechny kategorie. |
spark.synapse.diagnostic.emitter.<destination>.auth |
Požadováno.
AccessKey pro použití autorizace přístupového klíče účtu úložiště.
SAS pro autorizaci sdílených přístupových podpisů . |
spark.synapse.diagnostic.emitter.<destination>.uri |
Požadováno. Identifikátor URI cílové složky kontejneru objektů blob. Měl by se shodovat se vzorem https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> . |
spark.synapse.diagnostic.emitter.<destination>.secret |
Nepovinné. Tajný kód (AccessKey nebo SAS) obsah. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Povinné, pokud .secret není zadáno. Název trezoru klíčů Azure, ve kterém je uložený tajný klíč (AccessKey nebo SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Vyžaduje se, pokud .secret.keyVault je zadáno. Název tajného kódu služby Azure Key Vault, ve kterém je uložený tajný klíč (AccessKey nebo SAS). |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Nepovinné. Názvy událostí Spark oddělených čárkami můžete určit, které události se mají shromažďovat. Příklad: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Nepovinné. Názvy protokolovacího nástroje oddělené čárkami, můžete určit, které protokoly se mají shromažďovat. Příklad: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Nepovinné. Přípony názvů sparkových metrik oddělených čárkami můžete určit, které metriky se mají shromažďovat. Příklad: jvm.heap.used |
spark.fabric.pools.skipStarterPools |
Požadováno. Tato vlastnost Sparku se používá k vynucení relace Sparku na vyžádání. Hodnotu True byste měli nastavit při použití výchozího fondu, aby se knihovny aktivovaly pro generování protokolů a metrik. |
Ukázka dat protokolu
Tady je ukázkový záznam protokolu ve formátu JSON:
{
"timestamp": "2024-09-06T03:09:37.235Z",
"category": "Log|EventLog|Metrics",
"fabricLivyId": "<fabric-livy-id>",
"applicationId": "<application-id>",
"applicationName": "<application-name>",
"executorId": "<driver-or-executor-id>",
"fabricTenantId": "<my-fabric-tenant-id>",
"capacityId": "<my-fabric-capacity-id>",
"artifactType": "SynapseNotebook|SparkJobDefinition",
"artifactId": "<my-fabric-artifact-id>",
"fabricWorkspaceId": "<my-fabric-workspace-id>",
"fabricEnvId": "<my-fabric-environment-id>",
"executorMin": "<executor-min>",
"executorMax": "<executor-max>",
"isHighConcurrencyEnabled": "true|false",
"properties": {
// The message properties of logs, events and metrics.
"timestamp": "2024-09-06T03:09:37.235Z",
"message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
"logger_name": "org.apache.spark.storage.BlockManager",
"level": "INFO",
"thread_name": "dispatcher-Executor"
//...
}
}
Pracovní prostory infrastruktury se spravovanou virtuální sítí
Vytvořte spravovaný privátní koncový bod pro cílovou službu Azure Blob Storage. Podrobné pokyny najdete v tématu Vytvoření a použití spravovaných privátních koncových bodů v Microsoft Fabric – Microsoft Fabric.
Po schválení spravovaného privátního koncového bodu můžou uživatelé začít generovat protokoly a metriky do cílové služby Azure Blob Storage.