Amazon EMR attivo EC2 : monitoraggio avanzato con CloudWatch l'utilizzo di parametri e log personalizzati - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Amazon EMR attivo EC2 : monitoraggio avanzato con CloudWatch l'utilizzo di parametri e log personalizzati

Panoramica

Amazon EMR offre funzionalità di elaborazione di big data potenti e convenienti. Per massimizzare le prestazioni e l'utilizzo delle risorse, è essenziale un monitoraggio efficace. Amazon CloudWatch offre un'osservabilità completa per i cluster EMR, consentendoti di tracciare metriche e log in tempo reale. Questo documento descrive come:

  1. Configurare l' CloudWatch agente a cui inviare EMR nei log EC2 CloudWatch

  2. Aggiungi Hadoop, YARN e metriche personalizzate tramite classificazioni HBase

  3. Monitora le metriche tramite dashboard integrate

  4. Tieni traccia dei log del cluster tramite gruppi di log CloudWatch

Prerequisiti e contesto

Per impostazione predefinita, Amazon EMR invia i parametri di base CloudWatch ogni cinque minuti senza costi aggiuntivi. Con EMR Release 7.0+, è possibile distribuire l'agente per: CloudWatch

  • Raccogli 34 metriche dettagliate aggiuntive a intervalli di un minuto (si applicano costi aggiuntivi)

  • Raccogli le metriche da tutti i nodi del cluster

  • Aggrega i dati sul nodo principale prima di inviarli a CloudWatch

  • Accedi alle metriche tramite la scheda Monitoraggio o la console della console EMR CloudWatch

EMR 7.1 estende queste funzionalità, consentendoti di configurare l'agente per acquisire metriche specializzate da Hadoop, YARN e componenti. HBase Per gli ambienti che utilizzano Prometheus, i parametri possono essere inoltrati ad Amazon Managed Service for Prometheus.

CloudWatch Configurazione dell'agente per i log

Per acquisire i log in EMR CloudWatch, crea un file cloudwatch-config.json che definisca quali file di registro raccogliere:

cloudwatch-config.json

{ "agent": {"metrics_collection_interval":60,"logfile":"/var/log/emr-cluster-metrics/amazon-cloudwatch-agent/amazon-cloudwatch-agent.log","run_as_user":"****","omit_hostname":true}, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/mnt/var/log/hadoop-yarn/hadoop-yarn-resourcemanager-*", "log_group_name": "/emr/yarn/resourcemnger", "log_stream_name": "{instance_id}", "publish_multi_logs" : true }, { "file_path": "/var/log/hadoop-hdfs/hadoop-hdfs-namenode-*", "log_group_name": "/emr/hdfs/namenode", "log_stream_name": "{instance_id}", "publish_multi_logs" : true } ] } } } }

Script Bootstrap per la configurazione dell'agente CloudWatch

Per applicare la tua CloudWatch configurazione personalizzata ai nodi EMR, crea uno script di bootstrap che riavvierà l' CloudWatch agente con le tue impostazioni. Questo script garantisce che l'agente venga eseguito con i parametri specifici di raccolta dei log dopo il provisioning del cluster.

Creazione dello script Bootstrap

Crea un file denominato cloudwatch-agent-bootstrap.sh con il seguente contenuto:

#!/bin/bash set -xe EMR_SECONDARY_BA_SCRIPT=$(cat << 'EOF' while true; do NODEPROVISIONSTATE=$(sed -n '/localInstance [{]/,/[}]/ {/nodeProvisionCheckinRecord [{]/,/[}]/ {/status:/ p}}' /emr/instance-controller/lib/info/job-flow-state.txt | awk '{ print $2 }') if [ "$NODEPROVISIONSTATE" == "SUCCESSFUL" ]; then sleep 10 echo "Running my post provision bootstrap" NODETYPE=$(cat /mnt/var/lib/instance-controller/extraInstanceData.json | jq -r '.instanceRole' | awk '{print tolower($0)}') # Copy config file on the instance sudo aws s3 cp s3://amzn-s3-demo-bucket1>/cloudwatch-config.json /etc/emr-cluster-metrics/amazon-cloudwatch-agent/conf/emr-amazon-cloudwatch-agent.json # Stop the current agent sudo /usr/bin/amazon-cloudwatch-agent-ctl -a stop # Start the agent with the created config file sudo /usr/bin/amazon-cloudwatch-agent-ctl -a fetch-config -s -m ec2 -c file:/etc/emr-cluster-metrics/amazon-cloudwatch-agent/conf/emr-amazon-cloudwatch-agent.json # Status CW Agent echo "Status CW Agent" sudo /usr/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status exit fi sleep 10 done EOF ) echo "${EMR_SECONDARY_BA_SCRIPT}" | tee -a /tmp/emr-secondary-ba.sh chmod u+x /tmp/emr-secondary-ba.sh /tmp/emr-secondary-ba.sh > /tmp/emr-secondary-ba.log 2>&1 & exit 0

Nota importante sulla configurazione

Importante

Prima di caricare lo script, sostituiscilo <amzn-s3-demo-bucket1> con il nome effettivo del tuo bucket S3 in cui hai archiviato il file cloudwatch-config.json del passaggio precedente. Ciò garantisce che lo script bootstrap possa recuperare il file di configurazione durante l'inizializzazione del cluster.

Questo script di bootstrap consentirà di:

  • Attendi il completamento del provisioning del nodo

  • Scarica la tua configurazione personalizzata CloudWatch

  • Arresta qualsiasi CloudWatch agente in esecuzione

  • Riavvia l'agente con la tua configurazione specifica

  • Registra lo stato dell'agente per la risoluzione dei problemi

Classificazioni metriche personalizzate per Hadoop, YARN e HBase

Oltre alle CloudWatch metriche predefinite, è possibile migliorare le capacità di monitoraggio configurando metriche personalizzate specifiche dell'applicazione per i componenti del cluster EMR. L'API di configurazione di Amazon EMR offre un modo flessibile per definire esattamente quali parametri desideri raccogliere.

Configurazione di metriche personalizzate

È possibile implementare la raccolta di metriche personalizzate in due modi:

  • Durante la creazione di cluster per nuovi cluster

  • Come riconfigurazione per i cluster esistenti tramite la console EMR

Creazione di un file di classificazione

Il file di classificazione definisce quali metriche specifiche dei componenti devono essere raccolte dal cluster. Di seguito è riportata una struttura di esempio per la raccolta di metriche Hadoop personalizzate:

[ { "Classification": "emr-metrics", "Configurations": [ { "Classification": "emr-hadoop-hdfs-datanode-metrics", "Properties": { "Hadoop:service=DataNode,name=DataNodeActivity-*": "DatanodeNetworkErrors,TotalReadTime,TotalWriteTime,BytesRead,BytesWritten,RemoteBytesRead,RemoteBytesWritten,ReadBlockOpNumOps,ReadBlockOpAvgTime,WriteBlockOpNumOps,WriteBlockOpAvgTime", "otel.metric.export.interval": "30000" } }, { "Classification": "emr-hadoop-yarn-nodemanager-metrics", "Properties": { "Hadoop:service=NodeManager,name=JvmMetrics": "MemNonHeapUsedM,MemNonHeapCommittedM,MemNonHeapMaxM,MemHeapUsedM,MemHeapCommittedM,MemHeapMaxM,MemMaxM", "Hadoop:service=NodeManager,name=NodeManagerMetrics": "ContainerCpuUtilization,NodeCpuUtilization,ContainersCompleted,ContainersFailed,ContainersKilled,ContainersLaunched,ContainersRolledBackOnFailure,ContainersRunning,ContainerUsedMemGB,ContainerUsedVMemGB,ContainerLaunchDurationNumOps,ContainerLaunchDurationAvgTime", "otel.metric.export.interval": "20000" } } ], "Properties": {} } ]

Passaggi dell'implementazione

  1. Crea un file JSON con le classificazioni metriche desiderate.

  2. Personalizza le metriche in base ai tuoi requisiti di monitoraggio.

  3. Salva il file e caricalo nel tuo bucket S3.

  4. Fai riferimento a questo file quando crei un nuovo cluster o ne riconfiguri uno esistente.

Best practice

  • Raccogli solo metriche che forniscono informazioni significative per i tuoi carichi di lavoro.

  • Considera l'intervallo di raccolta delle metriche in base alle tue esigenze di monitoraggio.

  • AWS Consulta la documentazione per l'elenco completo delle metriche disponibili per ciascun componente.

  • Raggruppa le metriche correlate all'interno della stessa classificazione per una migliore organizzazione.

Questo approccio consente di concentrare il monitoraggio sulle metriche più critiche per le applicazioni EMR specifiche, offrendo una visibilità più approfondita sulle prestazioni del cluster.

Implementazione di un cluster EMR con integrazione CloudWatch

Segui questi passaggi per creare un cluster Amazon EMR che invii automaticamente log e parametri personalizzati a: CloudWatch

Passaggio 1: abilitare l'agente CloudWatch

Quando si crea un cluster EMR tramite la console di AWS gestione:

  1. Passa alla sezione Applicazioni durante la creazione del cluster.

  2. Seleziona le caselle di controllo per le tue applicazioni principali (Hadoop, Spark, ecc.).

  3. Scorri per trovare e selezionare l'opzione Amazon CloudWatch Agent.

  4. Ciò abilita l'agente sul tuo cluster, il che è essenziale per raccogliere metriche e log avanzati.

L' CloudWatch agente verrà installato su tutti i nodi del cluster, consentendogli di raccogliere i parametri di sistema e delle applicazioni agli intervalli configurati.

Nome e applicazioni

Pacchetti di applicazioni

Creazione di un cluster e visualizzazione dei pacchetti disponibili.

Nota

L' CloudWatch agente è disponibile nella versione EMR 7.0 e successive. L'abilitazione di questo componente è necessaria per la raccolta di metriche personalizzate e l'inoltro dei log descritti in questa guida.

Passaggio 2: aggiungere l'azione Bootstrap per Log Collection

Per configurare l' CloudWatch agente per raccogliere e inoltrare file di registro specifici a CloudWatch:

  1. Nella procedura guidata per la creazione del cluster EMR, vai alla sezione Azioni Bootstrap

  2. Fai clic su Aggiungi azione bootstrap

  3. Seleziona Azione personalizzata dal menu a discesa

  4. Fornisci un nome per l'azione di bootstrap (ad esempio, Configure CloudWatch Agent)

  5. Nel campo Posizione dello script, inserisci il percorso S3 dello cloudwatch-agent-bootstrap script.sh (ad esempio, s3:///.sh) your-bucket-name cloudwatch-agent-bootstrap

  6. Fai clic su Aggiungi per salvare l'azione bootstrap

Questa azione di bootstrap verrà eseguita durante l'avvio del cluster, assicurando che CloudWatchagent sia configurata correttamente con le impostazioni personalizzate per raccogliere e inoltrare i file di registro specificati nel file di configurazione.

L'agente inizierà automaticamente a raccogliere i log una volta effettuato il provisioning dei nodi, fornendo una visibilità quasi in tempo reale delle operazioni del cluster tramite Logs. CloudWatch

Bootstrap actions (Operazioni di bootstrap)

Bootstrap actions (Operazioni di bootstrap)

Utilizzo delle azioni bootstrap.

Passaggio 3: configurare la raccolta di metriche personalizzate

Per abilitare la raccolta di Hadoop, YARN o HBase metriche personalizzate oltre al set predefinito:

  1. Nella procedura guidata per la creazione del cluster EMR, vai alla sezione Configurazioni.

  2. Fai clic sul pulsante Modifica configurazioni per espandere le opzioni di configurazione.

  3. Seleziona l'opzione Carica JSON da Amazon S3 dal menu a discesa del metodo di configurazione.

  4. Inserisci il percorso URI S3 del tuo file di classificazione delle metriche personalizzate (ad esempio, s3://amzn-s3-demo-bucket1/ .json). emr-metrics-classification

  5. Fai clic su Carica per analizzare la configurazione.

  6. Verifica che la configurazione appaia correttamente nell'interfaccia della console.

  7. Fai clic su Salva modifiche per applicare queste configurazioni di metriche al cluster.

Questo passaggio indica all' CloudWatch agente di raccogliere le metriche dei componenti specifiche definite nel file di classificazione. Le metriche verranno raccolte agli intervalli specificati nella configurazione e pubblicate su CloudWatch, dove potranno essere visualizzate e analizzate.

Le metriche personalizzate forniscono informazioni più approfondite sulle caratteristiche prestazionali del cluster, consentendo un monitoraggio e una risoluzione dei problemi più precisi delle applicazioni EMR.

Impostazioni software

Impostazioni software

Sostituisci le configurazioni predefinite.

Aggiornamento della configurazione delle metriche per Running Clusters

È possibile modificare le impostazioni di raccolta delle metriche per un cluster EMR esistente senza interrompere le operazioni seguendo questi passaggi:

  1. Accedere al cluster EMR attivo nella console di AWS gestione.

  2. Seleziona la scheda Configurazioni nella visualizzazione dei dettagli del cluster.

  3. Trova la sezione Configurazioni dei gruppi di istanze.

  4. Fai clic sul pulsante Riconfigura per modificare le impostazioni.

  5. Scegli Load JSON da Amazon S3 o modifica direttamente la configurazione.

  6. Inserisci la posizione del file di classificazione delle metriche aggiornato o apporta le modifiche nell'editor.

  7. Applica le modifiche per aggiornare il comportamento di raccolta delle metriche.

Questa funzionalità di riconfigurazione consente di ottimizzare l'approccio di monitoraggio man mano che i requisiti del carico di lavoro si evolvono. L' CloudWatch agente si adatterà automaticamente alla nuova configurazione, raccogliendo il set aggiornato di metriche senza richiedere riavvii o tempi di inattività del cluster.

Importante

La propagazione delle modifiche alla configurazione può richiedere diversi minuti su tutti i nodi del cluster. Continua a monitorare i CloudWatch dashboard per confermare che le nuove metriche vengano visualizzate come previsto.

Configurazioni cluster

Configurations tab showing cluster and instance group settings with options to view JSON and reconfigure.

Configurazioni dei gruppi di istanze.

Convalida dell'integrazione CloudWatch

Dopo aver completato i passaggi di configurazione, è il momento di verificare che la configurazione di monitoraggio funzioni correttamente:

Fase 1: Implementazione del cluster EMR

  1. Controlla tutte le impostazioni di configurazione per verificarne la precisione.

  2. Assicurati che le azioni di bootstrap e i file di classificazione siano referenziati correttamente.

  3. Fai clic su Crea cluster per avviare il tuo ambiente EMR.

  4. Attendi che il cluster raggiunga lo stato Running (in genere 5-15 minuti).

Fase 2: Eseguire le applicazioni di test

Invia diverse applicazioni Spark di prova per generare metriche significative:

  • Esegui un semplice job Spark che elabora dati di esempio.

  • Esegui un'attività di analisi di lunga durata per osservare l'utilizzo delle risorse.

  • Prova diverse configurazioni di applicazioni per confrontare le metriche delle prestazioni.

Una volta completate le applicazioni (o mentre sono in esecuzione):

  • Vai alla CloudWatch console.

  • Controlla i gruppi di log configurati per i log delle applicazioni.

  • Esamina i dashboard delle metriche per osservare le metriche specifiche di CPU, memoria e applicazioni.

  • Verifica che le metriche personalizzate definite nel tuo file di classificazione vengano visualizzate in. CloudWatch

Questo processo di convalida conferma che l' CloudWatch integrazione sta acquisendo correttamente sia i log che le metriche, offrendoti una visibilità completa sulle prestazioni e sul comportamento delle applicazioni del cluster EMR.

Accesso ai log EMR nei gruppi di log CloudWatch

Dopo l'esecuzione del cluster EMR e la corretta configurazione dell' CloudWatch agente, i registri dell'applicazione e del sistema saranno disponibili nella sezione Registri. CloudWatch Segui questi passaggi per accedervi e analizzarli:

Visualizzazione dei gruppi di log

  1. Accedere alla CloudWatch console in AWS Management Console.

  2. Seleziona Log groups dal riquadro di navigazione a sinistra.

  3. Cerca i gruppi di log creati dalla tua configurazione, ad esempio:

    • /emr/yarn/resourcemngerper i ResourceManager log YARN.

    • /emr/hdfs/namenodeper i log HDFS NameNode .

    • Eventuali gruppi di log aggiuntivi specificati nel file di configurazione.

Ogni gruppo di log contiene flussi di log organizzati per ID di istanza, che consentono di tracciare i log su nodi specifici del cluster.

Lavorare con i dati di registro

  • Cerca nei dati di registro: utilizza CloudWatch Logs Insights per eseguire query strutturate tra i tuoi gruppi di log.

  • Crea metriche: estrai le metriche dai modelli di registro per creare metriche personalizzate. CloudWatch

  • Imposta avvisi: configura gli allarmi in base a modelli di errore specifici o frequenze di registro.

  • Esporta registri: scarica i registri per l'analisi o l'archiviazione offline.

Retention dei log

Nota

Per impostazione predefinita, i log vengono conservati per 30 giorni. È possibile modificare la politica di conservazione per ogni gruppo di log per conservare i log per periodi più lunghi, se necessario per scopi di conformità o analisi.

CloudWatch Logs fornisce una posizione centralizzata per tutti i dati di registro EMR, eliminando la necessità di utilizzare SSH nei singoli nodi del cluster per risolvere problemi o analizzare il comportamento delle applicazioni.

Visualizzazione delle metriche personalizzate nel dashboard di monitoraggio EMR

Dopo l'esecuzione del cluster EMR con la configurazione dell' CloudWatch agente e delle metriche personalizzate, puoi monitorare facilmente queste metriche direttamente nella console EMR:

Accesso alle metriche personalizzate

  1. Accedi al tuo cluster EMR nella console di AWS gestione.

  2. Seleziona la scheda Monitoraggio nella pagina dei dettagli del cluster.

  3. Individua il menu a discesa di classificazione delle metriche Filter nella parte superiore dei dashboard di monitoraggio.

  4. Utilizza questo filtro per selezionare categorie di metriche specifiche:

    • Scegli HDFS per visualizzare NameNode e DataNode metriche.

    • Seleziona YARN per visualizzare ResourceManager e contenere le metriche.

    • Scegli HBaseper dati HBase prestazionali specifici.

    • Seleziona le classificazioni metriche personalizzate che hai definito.

La dashboard si aggiornerà dinamicamente per visualizzare i grafici relativi alle metriche selezionate, mostrando le tendenze delle prestazioni nel tempo.

Utilizzo delle visualizzazioni metriche

  • Modifica gli intervalli di tempo: modifica la finestra temporale per visualizzare le attività recenti o le tendenze storiche.

  • Confronta le metriche: visualizza più metriche correlate side-by-side per l'analisi della correlazione.

  • Funzioni di zoom: concentrati su periodi di tempo specifici in cui compaiono anomalie o schemi.

  • Aggiorna i dati: aggiorna le visualizzazioni con i dati delle metriche più recenti quasi in tempo reale.

Questo approccio di monitoraggio integrato consente di tenere traccia sia delle metriche EMR standard che delle metriche personalizzate in un dashboard unificato, semplificando l'identificazione di problemi di prestazioni, vincoli di risorse o colli di bottiglia delle applicazioni senza uscire dalla console EMR.

CloudWatch metriche

EMR cluster monitoring dashboard showing CloudWatch metrics and filter options.

Classificazione delle metriche di filtraggio.