Esercitazione: Configurare il monitoraggio per SAP HANA - Amazon CloudWatch

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à.

Esercitazione: Configurare il monitoraggio per SAP HANA

Questo tutorial dimostra come configurare CloudWatch Application Insights per configurare il monitoraggio dei database SAP HANA. Puoi utilizzare i dashboard automatici di CloudWatch Application Insights per visualizzare i dettagli dei problemi, accelerare la risoluzione dei problemi e facilitare il tempo medio di risoluzione (MTTR) per i tuoi database SAP HANA.

Ambienti supportati

CloudWatch Application Insights supporta l'implementazione di AWS risorse per i seguenti sistemi e modelli. È possibile fornire e installare il software di database SAP HANA e il software applicativo SAP supportato.

  • Database SAP HANA su una singola EC2 istanza Amazon: SAP HANA in un'architettura scalabile a nodo singolo, con un massimo di 24 TB di memoria.

  • Database SAP HANA su più EC2 istanze Amazon: SAP HANA in un'architettura multinodo e scalabile.

  • Configurazione ad alta disponibilità del database SAP HANA cross-AZ— SAP HANA con elevata disponibilità configurata su due zone di disponibilità utilizzando il clustering SUSE/RHEL.

Nota

CloudWatch Application Insights supporta solo ambienti HANA con SID singolo. Se SIDs sono collegati più HANA, il monitoraggio verrà impostato solo per il primo SID rilevato.

Sistemi operativi supportati

CloudWatch Application Insights for SAP HANA supporta l'architettura x86-64 sui seguenti sistemi operativi:

  • SuSE Linux 12 per SAP SP4

  • SuSE Linux 12 per SAP SP5

  • SuSE Linux 15

  • SuSE Linux 15 SP1

  • SuSE Linux 15 SP2

  • SuSE Linux 15 per SAP

  • SuSE Linux 15 SP1 per SAP

  • SuSE Linux 15 per SAP SP2

  • SuSE Linux 15 per SAP SP3

  • SuSE Linux 15 per SAP SP4

  • SuSE Linux 15 per SAP SP5

  • RedHat Linux 8.6 per SAP con alta disponibilità e servizi di aggiornamento

  • RedHat Linux 8.5 per SAP con alta disponibilità e servizi di aggiornamento

  • RedHat Linux 8.4 per SAP con alta disponibilità e servizi di aggiornamento

  • RedHat Linux 8.3 per SAP con alta disponibilità e servizi di aggiornamento

  • RedHat Linux 8.2 per SAP con alta disponibilità e servizi di aggiornamento

  • RedHat Linux 8.1 per SAP con alta disponibilità e servizi di aggiornamento

  • RedHat Linux 7.9 per SAP con alta disponibilità e servizi di aggiornamento

Funzionalità

CloudWatch Application Insights per SAP HANA offre le seguenti funzionalità:

  • Rilevamento automatico del carico di lavoro SAP HANA

  • Creazione automatica di allarmi SAP HANA in base alla soglia statica

  • Creazione automatica di allarmi SAP HANA in base al rilevamento di anomalie

  • Riconoscimento automatico del pattern di log SAP H

  • Pannello di controllo della Health per SAP HANA

  • Pannello di controllo dei problemi per SAP HANA

Prerequisiti

È necessario soddisfare i seguenti prerequisiti per configurare un database SAP HANA con Application Insights: CloudWatch

  • SAP HANA: installa un database SAP HANA 2.0 SPS05 funzionante e raggiungibile su un'istanza Amazon. EC2

  • Utente del database SAP HANA: è necessario creare un utente del database con ruoli di monitoraggio nel database SYSTEM e in tutti i tenant.

    Esempio

    I seguenti comandi SQL consentono di creare un utente con ruoli di monitoraggio.

    su - <sid>adm hdbsql -u SYSTEM -p <SYSTEMDB password> -d SYSTEMDB CREATE USER CW_HANADB_EXPORTER_USER PASSWORD <Monitoring user password> NO FORCE_FIRST_PASSWORD_CHANGE; CREATE ROLE CW_HANADB_EXPORTER_ROLE; GRANT MONITORING TO CW_HANADB_EXPORTER_ROLE; GRANT CW_HANADB_EXPORTER_ROLE TO CW_HANADB_EXPORTER_USER;
  • Python 3.8 — Installa Python 3.8 o versioni successive sul tuo sistema operativo. Utilizza l'ultima versione di Python. Se Python3 non viene rilevato sul sistema operativo, verrà installato Python 3.6.

    Per ulteriori informazioni, consulta installation example.

    Nota

    L'installazione manuale di Python 3.8 o versioni successive è richiesta per i sistemi operativi SuSE Linux 15 SP4, RedHat Linux 8.6 e versioni successive.

  • Pip3 — Installa il programma di installazione, pip3, sul tuo sistema operativo. Se pip3 non viene rilevato sul sistema operativo, verrà installato.

  • hdbclient — CloudWatch Application Insights utilizza il driver python per connettersi al database SAP HANA. Se il client non è installato in python3, assicurati di avere la versione del file tar hdbclient sotto. 2.10 or later /hana/shared/SID/hdbclient/

  • CloudWatch Agente Amazon: assicurati di non eseguire un CloudWatch agente preesistente sulla tua EC2 istanza Amazon. Se hai installato un CloudWatch agente, assicurati di rimuovere la configurazione delle risorse che stai utilizzando in CloudWatch Application Insights dal file di configurazione dell' CloudWatch agente esistente per evitare un conflitto di fusione. Per ulteriori informazioni, consulta Crea o modifica manualmente il file di configurazione CloudWatch dell'agente.

  • AWS Abilitazione di Systems Manager: installa SSM Agent sulle tue istanze e le istanze devono essere abilitate per SSM. Per informazioni su come installare l'agente SSM, vedere Working with SSM Agent nella AWS Systems Manager User Guide.

  • Ruoli delle EC2 istanze Amazon: devi collegare i seguenti ruoli di EC2 istanza Amazon per configurare il tuo database.

    • È necessario allegare il ruolo AmazonSSMManagedInstanceCore per abilitare Systems Manager. Per ulteriori informazioni, consulta Esempi di policy basate sull'identità nella AWS Systems Manager.

    • È necessario allegare il CloudWatchAgentServerPolicy per consentire l'emissione dei parametri e dei log dell'istanza. CloudWatch Per ulteriori informazioni, consulta Creare ruoli e utenti IAM da utilizzare con l'agente. CloudWatch

    • È necessario allegare la seguente policy in linea IAM al ruolo dell' EC2istanza Amazon per leggere la password memorizzata in AWS Secrets Manager. Per ulteriori informazioni sulle policy inline, consulta Policy gestite e policy inline nella Guida per l'utente di IAM AWS Identity and Access Management .

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*" } ] }
  • AWS gruppi di risorse: è necessario creare un gruppo di risorse che includa tutte le AWS risorse associate utilizzate dallo stack di applicazioni per l'onboarding delle applicazioni in Application Insights. CloudWatch Ciò include EC2 le istanze Amazon e i volumi Amazon EBS che eseguono il tuo database SAP HANA. Se ci sono più database per account, ti consigliamo di creare un gruppo di risorse che includa AWS le risorse per ogni sistema di database SAP HANA.

  • Autorizzazioni IAM: per gli utenti non amministratori:

    • È necessario creare una policy AWS Identity and Access Management (IAM) che consenta ad Application Insights di creare un ruolo collegato al servizio e collegarlo alla propria identità utente. Per le fasi di collegamento della policy, consulta Policy IAM per CloudWatch Application Insights.

    • L'utente deve disporre dell'autorizzazione per creare un account segreto per AWS Secrets Manager archiviare le credenziali utente del database. Per ulteriori informazioni, consulta la sezione Esempio: autorizzazione alla creazione di segreti.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret" ], "Resource": "arn:aws:secretsmanager:*:*:secret:ApplicationInsights-*" } ] }
  • Ruolo collegato al servizio: Application Insights utilizza ruoli collegati ai servizi AWS Identity and Access Management (IAM). Un ruolo collegato al servizio viene creato per te quando crei la tua prima applicazione Application Insights nella console Application Insights. Per ulteriori informazioni, consulta la pagina Utilizzo di ruoli collegati ai servizi per CloudWatch Application Insights.

Configurare il database SAP HANA per il monitoraggio

Per configurare il monitoraggio per il database SAP HANA, completa i seguenti passaggi.

  1. Apri la CloudWatch console.

  2. Nel pannello di navigazione a sinistra, scegli Application Insights sotto Application Insights (Informazioni dettagliate applicazione).

  3. La pagina Application Insights visualizza l'elenco delle applicazioni che sono monitorate con Application Insights e lo stato di monitoraggio per ciascuna applicazione. Nell'angolo in alto a destra, scegli Aggiungere un'applicazione.

  4. Nella pagina Specifica i dettagli dell'applicazione, dall'elenco a discesa sotto Resource group, seleziona il resource group AWS contenente le risorse del database SAP HANA. Se non hai creato un gruppo di risorse per l'applicazione, puoi crearne uno scegliendo Crea nuovo gruppo di risorse sotto il menu a discesa Resource Group (Gruppo di risorse). Per ulteriori informazioni sui resource groups, consulta la Guida per l'utente di Resource Groups AWS .

  5. In Monitor CloudWatch Events, seleziona la casella di controllo per integrare il monitoraggio di Application Insights con CloudWatch Events per ottenere informazioni da Amazon EBS EC2 AWS CodeDeploy, Amazon, Amazon ECS AWS Health APIs e notifiche, Amazon RDS, Amazon S3 e. AWS Step Functions

  6. In Integra con AWS Systems Manager OpsCenter, seleziona la casella di controllo accanto a Genera AWS Systems Manager OpsCenter OpsItems per azioni correttive per visualizzare e ricevere notifiche quando vengono rilevati problemi per le applicazioni selezionate. Per tenere traccia delle operazioni eseguite per risolvere gli elementi di lavoro operativi, denominati OpsItems, correlati alle AWS risorse, fornisci un argomento SNS ARN.

  7. Facoltativamente, puoi inserire tag per aiutarti a identificare e organizzare le tue risorse. CloudWatch Application Insights supporta gruppi di risorse AWS CloudFormation basati su tag e stack, ad eccezione dei gruppi. Application Auto Scaling Per ulteriori informazioni, consulta Tag Editor nella Guida per l'utente di AWS Resource Groups .

  8. Scegli Successivo per continuare a impostare il monitoraggio.

  9. Nella pagina Rivedi i componenti rilevati, sono elencati i componenti monitorati e i relativi carichi di lavoro rilevati automaticamente da CloudWatch Application Insights.

    1. Per aggiungere carichi di lavoro a un componente che contiene un carico di lavoro a nodo singolo SAP HANA rilevato, seleziona il componente, quindi scegli Modifica componente.

      Nota

      I componenti che contengono un carico di lavoro multi-nodo SAP HANA o HANA High Availability rilevato supportano solo un carico di lavoro su un componente.

      La pagina di revisione dei componenti per il monitoraggio della console di CloudWatch Application Insights: seleziona il componente da modificare.
    2. Per aggiungere un nuovo carico di lavoro, scegli Aggiungi nuovo carico di lavoro.

      La sezione di modifica dei componenti della console CloudWatch Application Insights: scegli il pulsante in basso a sinistra per aggiungere carico di lavoro.
    3. Al termine della modifica dei carichi di lavoro, scegli Salva modifiche.

  10. Scegli Next (Successivo).

  11. Sulla pagina Specifica i dettagli dei componenti, immetti il nome utente e la password.

  12. Esamina la configurazione del monitoraggio delle applicazioni e scegli Invia.

  13. Si apre la pagina dei dettagli dell'applicazione, in cui è possibile visualizzare riepilogo dell'applicazione, l'elenco di componenti e carichi di lavoro monitorati e i componenti e i carichi di lavoro non monitorati. Se si seleziona il pulsante di opzione accanto a un componente o a un carico di lavoro, è anche possibile visualizzare la cronologia della configurazione, i modelli di log e qualsiasi Tag creato. Quando si invia la configurazione, l'account distribuisce tutti i parametri e gli allarmi per il sistema SAP HANA, che possono richiedere fino a 2 ore.

Gestire il monitoraggio del tuo database SAP HANA

È possibile gestire le credenziali utente, i parametri e i percorsi di log per il database SAP HANA seguendo i seguenti passaggi:

  1. Apri la CloudWatch console.

  2. Nel pannello di navigazione a sinistra, scegli Application Insights sotto Application Insights (Informazioni dettagliate applicazione).

  3. La pagina Application Insights visualizza l'elenco delle applicazioni che sono monitorate con Application Insights e lo stato di monitoraggio per ciascuna applicazione.

  4. In Componenti monitorati, seleziona il pulsante di opzione accanto al nome del componente. Quindi, scegli Gestisci il monitoraggio.

  5. In EC2 Instance Group Logs, puoi aggiornare il percorso di log esistente, il set di pattern di log e il nome del gruppo di log. Inoltre, è possibile aggiungere fino a tre altri Log di applicazioni.

  6. In Parametri, è possibile scegliere i parametri SAP HANA in base alle proprie esigenze. I nomi dei parametri SAP HANA hanno il prefisso hanadb. È possibile aggiungere fino a 40 parametri per componente.

  7. In Configurazione HANA, immetti la password e il nome utente per il database SAP HANA. Si tratta del nome utente e della password che CloudWatch l'agente Amazon utilizza per connettersi al database SAP HANA.

  8. In Allarmi personalizzati, puoi aggiungere altri allarmi da monitorare con Application Insights. CloudWatch

  9. Esamina la configurazione del monitoraggio dell'applicazione e scegli Invia. Quando si invia la configurazione, l'account aggiorna tutti i parametri e gli allarmi per il sistema SAP HANA, che possono richiedere fino a 2 ore.

Visualizza e risolvi i problemi di SAP HANA rilevati da Application Insights CloudWatch

Nelle sezioni seguenti vengono forniti passaggi che consentono di risolvere gli scenari di risoluzione dei problemi comuni che si verificano durante la configurazione del monitoraggio per SAP HANA su Application Insights.

Il database SAP HANA raggiunge il limite di allocazione della memoria

Descrizione

L'applicazione SAP supportata da un database SAP HANA non funziona a causa dell'elevata pressione della memoria, con conseguente riduzione delle prestazioni delle applicazioni.

Risoluzione

È possibile identificare il livello di applicazione che causa il problema controllando il pannello di controllo creato dinamicamente che mostra i parametri correlati e i frammenti del file di log. Nell'esempio seguente, il problema potrebbe essere dovuto a un elevato carico di dati nel sistema SAP HANA.

Allocazione della memoria superata.

L'allocazione della memoria utilizzata supera la soglia dell'80% del limite totale di allocazione della memoria.

Il gruppo di log mostra la memoria esaurita.

Il gruppo di log mostra che lo schema BNR-DATA e la tabella IMDBMASTER_30003 hanno esaurito la memoria insufficiente. Inoltre, il gruppo di log mostra l'ora esatta del problema, il limite di posizione globale corrente, la memoria condivisa, la dimensione del codice e la dimensione dell'allocazione della prenotazione OOM.

Testo del gruppo di log.

Evento disco pieno

Descrizione

L'applicazione SAP supportata da un database SAP HANA smette di rispondere, il che comporta l'impossibilità di accedere al database.

Risoluzione

È possibile identificare il livello di database che causa il problema controllando il pannello di controllo creato dinamicamente che mostra i parametri correlati e i frammenti del file di log. Nell'esempio seguente, il problema potrebbe essere dovuto al fatto che l'amministratore non è riuscito ad abilitare il backup automatico dei log, causando il riempimento della sap/hana/log directory.

Il gruppo di log mostra la memoria esaurita.

Il widget del gruppo di log nel pannello di controllo dei problemi mostra l'evento DISKFULL.

Il gruppo di log mostra la memoria esaurita.

Il backup SAP HANA ha smesso di funzionare

Descrizione

L'applicazione SAP supportata da un database SAP HANA ha smesso di funzionare.

Risoluzione

È possibile identificare il livello di database che causa il problema controllando il pannello di controllo creato dinamicamente che mostra i parametri correlati e i frammenti del file di log.

Il widget del gruppo di log nel pannello di controllo dei problemi mostra l'evento ACCESS DENIED. Ciò include informazioni aggiuntive, ad esempio il bucket S3, la cartella del bucket S3 e la regione del bucket S3.

Il gruppo di log mostra la memoria esaurita.

Rilevamento delle anomalie per SAP HANA

Per metriche specifiche di SAP HANA, come il numero di thread, CloudWatch applica algoritmi statistici e di machine learning per definire la soglia. Questi algoritmi analizzano continuamente i parametri del database SAP HANA, determinano le normali linee di base e le anomalie superficiali con un intervento minimo dell'utente. Gli algoritmi generano un modello di rilevamento delle anomalie, che genera un intervallo di valori previsti che rappresentano il normale comportamento del parametro.

Gli algoritmi di rilevamento delle anomalie tengono conto delle variazioni di stagionalità e di tendenza dei parametri. Le variazioni di stagionalità potrebbero essere orarie, giornaliere o settimanali, come mostrato negli esempi seguenti dell'utilizzo della CPU di SAP HANA.

Il gruppo di log mostra la memoria esaurita.

Dopo aver creato un modello, il rilevamento delle CloudWatch anomalie valuta continuamente il modello e lo aggiusta per garantire che sia il più preciso possibile. Ciò include la riqualificazione del modello da regolare se i valori dei parametri si evolvono nel tempo o subiscono cambiamenti improvvisi. Include anche predittori per migliorare i modelli per i parametri stagionali, spikey o scarsi.

Risoluzione dei problemi relativi ad Application Insights per SAP HANA

Questa sezione fornisce i passaggi per aiutarti a risolvere gli errori comuni restituiti dal pannello di controllo di Application Insights.

Impossibile aggiungere più di 60 metriche monitorate

L'output mostra il seguente errore.

Component cannot have more than 60 monitored metrics

Causa principale: il limite metrico attuale è di 60 metriche monitorate per componente.

Risoluzione: per rimanere al di sotto del limite, rimuovi le metriche non necessarie.

Dopo il processo di onboarding non viene visualizzata alcuna SAP metrica

Utilizza le seguenti informazioni per scoprire perché le metriche SAP non vengono visualizzate nella dashboard dopo il processo di onboarding. Il primo passaggio consiste nel risolvere il motivo per cui le metriche SAP non vengono visualizzate utilizzando i log AWS Management Console o Exporter di un'istanza Amazon. EC2 Successivamente, esamina l'output dell'errore per trovare una soluzione.

Risolvi il motivo per cui le metriche SAP non vengono visualizzate dopo l'onboarding

Puoi utilizzare i log AWS Management Console o exporter di un' EC2 istanza Amazon per la risoluzione dei problemi.

AWS Management Console
Risolvi i problemi: nessuna metrica SAP viene visualizzata dopo l'onboarding tramite la console
  1. Apri AWS Systems Manager la console all'indirizzo. https://console.aws.amazon.com/systems-manager/

  2. Nel riquadro di navigazione a sinistra, scegli State Manager.

  3. In Associazioni, controlla lo stato del documentoAWSEC2-ApplicationInsightsCloudwatchAgentInstallAndConfigure. Se lo stato èFailed, in Execution id, seleziona l'ID fallito e visualizza l'output.

  4. In Associazioni, controlla lo stato del documentoAWS-ConfigureAWSPackage. Se lo stato èFailed, in Execution id, seleziona l'ID fallito e visualizza l'output.

Exporter logs from Amazon EC2 instance
Risolvi i problemi: nessuna metrica SAP viene visualizzata dopo l'onboarding utilizzando i log di esportazione
  1. Connect all' EC2 istanza Amazon in cui è in esecuzione il database SAP HANA.

  2. Trova la convenzione di denominazione corretta per WORKLOAD_SHORT_NAME utilizzare il seguente comando. Utilizzerai questo nome breve nei due passaggi seguenti.

    sudo systemctl | grep exporter
    Nota

    Application Insights aggiunge un suffisso WORKLOAD_SHORT_NAME al nome del servizio a seconda del carico di lavoro in esecuzione. I nomi brevi per le implementazioni SAP HANA a nodo singolo, a più nodi e ad alta disponibilità sono, e. HANA_SN HANA_MN HANA_HA

  3. Per verificare la presenza di errori nei log dei servizi di Exporter Manager, esegui il comando seguente sostituendolo WORKLOAD_SHORT_NAME con il nome breve che hai trovato in. Passo 2

    sudo journalctl -e --unit=prometheus-hanadb_exporter_manager_WORKLOAD_SHORT_NAME.service
  4. Se i registri di servizio di Exporter Manager non mostrano errori, verificate la presenza di errori nei log del servizio di esportazione eseguendo il comando seguente.

    sudo journalctl -e --unit=prometheus-hanadb_exporter_WORKLOAD_SHORT_NAME.service

Risoluzione delle cause principali comuni della mancata visualizzazione delle metriche SAP dopo l'onboarding

Gli esempi seguenti descrivono come risolvere le cause principali comuni della mancata visualizzazione delle metriche SAP dopo l'onboarding.

  • L'output mostra il seguente errore.

    Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/default ...
    Reading json config file path: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/ssm_AmazonCloudWatch-ApplicationInsights-SSMParameterForTESTCWEC2INSTANCEi0d88867f1f3e36285.tmp ...
    2023/11/30 22:25:17 Failed to merge multiple json config files.
    2023/11/30 22:25:17 Failed to merge multiple json config files.
    2023/11/30 22:25:17 Under path : /metrics/append_dimensions | Error : Different values are specified for append_dimensions
    2023/11/30 22:25:17 Under path : /metrics/metrics_collected/disk | Error : Different values are specified for disk
    2023/11/30 22:25:17 Under path : /metrics/metrics_collected/mem | Error : Different values are specified for mem
    2023/11/30 22:25:17 Configuration validation first phase failed. Agent version: 1.0. Verify the JSON input is only using features supported by this version.

    Risoluzione: Application Insights sta tentando di configurare le stesse metriche preconfigurate come parte del file di configurazione dell' CloudWatch agente esistente. Rimuovi i file esistenti dal file di configurazione dell' CloudWatch agente esistente /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/ o rimuovi le metriche che causano il conflitto.

  • L'output mostra il seguente errore.

    Unable to find a host with system database, for more info rerun using -v

    Risoluzione: il nome utente, la password o la porta del database potrebbero non essere corretti. Verifica che il nome utente, la password e la porta siano validi, quindi esegui nuovamente il processo di onboarding.

  • L'output mostra il seguente errore.

    This hdbcli installer is not compatible with your Python interpreter

    Risoluzione — Aggiorna pip3 e wheel come mostrato nell'esempio seguente per Python 3.6.

    python3.6 -m pip install --upgrade pip setuptools wheel
  • L'output mostra il seguente errore.

    Unable to install hdbcli using pip3. Please try to install it

    Risoluzione: assicurati di aver seguito i hdbclient prerequisiti o esegui l'installazione hdbclient manualmente in pip3.

  • L'output mostra il seguente errore.

    Package 'boto3' requires a different Python: 3.6.15 not in '>= 3.7'

    Risoluzione: per questa versione del sistema operativo è richiesto Python 3.8 o versione successiva. Controlla i prerequisiti di Python 3.8 e installalo.

  • L'output mostra uno dei seguenti errori di installazione.

    Can not execute `setup.py` since setuptools is not available in the build environment

    oppure

    [SSL: CERTIFICATE_VERIFY_FAILED]

    Risoluzione: installa Python utilizzando i comandi SUSE Linux come mostrato nell'esempio seguente. L'esempio seguente installa l'ultima versione di Python 3.8.

    wget https://www.python.org/ftp/python/3.8.<LATEST_RELEASE>/Python-3.8.<LATEST_RELEASE>.tgz tar xf Python-3.* cd Python-3.*/ sudo zypper install make gcc-c++ gcc automake autoconf libtool sudo zypper install zlib-devel sudo zypper install libopenssl-devel libffi-devel ./configure --with-ensurepip=install sudo make sudo make install sudo su python3.8 -m pip install --upgrade pip setuptools wheel