Gestione di operazioni ad alta cardinalità
Application Signals include impostazioni nell'agente CloudWatch che puoi utilizzare per gestire la cardinalità delle operazioni e l'esportazione delle metriche per ottimizzare i costi. Per impostazione predefinita, la funzione di limitazione delle metriche diventa attiva quando il numero di operazioni distinte per un servizio nel corso del tempo supera la soglia predefinita di 500. È possibile ottimizzare il comportamento modificando le impostazioni di configurazione.
Determinazione dell'attivazione della limitazione delle metriche
Puoi utilizzare i seguenti metodi per verificare se è in corso la limitazione predefinita delle metriche. In tal caso, dovresti valutare l'ottimizzazione del controllo della cardinalità seguendo i passaggi indicati nella sezione successiva.
Nella console CloudWatch, scegli Application Signals e poi Servizi. Se vedi un'Operazione denominata AllOtherOperations o una RemoteOperation denominata AllOtherRemoteOperations, allora è in corso la limitazione delle metriche.
Se sono presenti metriche raccolte da Application Signals che hanno il valore
AllOtherOperationsper la dimensioneOperation, allora è in corso la limitazione delle metriche.Se sono presenti metriche raccolte da Application Signals che hanno il valore
AllOtherRemoteOperationsper la dimensioneRemoteOperation, allora è in corso la limitazione delle metriche.
Ottimizzazione del controllo della cardinalità
Per ottimizzare il controllo della cardinalità, puoi eseguire le seguenti operazioni:
Creare regole personalizzate per aggregare le operazioni.
Configurare la policy di limitazione delle metriche.
Creazione di regole personalizzate per aggregare le operazioni
A volte, le operazioni con elevata cardinalità possono essere causate da valori univoci inappropriati estratti dal contesto. Ad esempio, l'invio di richieste HTTP/S che includono ID utente o ID di sessione nel percorso può generare centinaia di operazioni diverse. Per risolvere questi problemi, si consiglia di configurare l'agente CloudWatch con regole di personalizzazione per riscrivere tali operazioni.
Nei casi in cui si verifichi un'impennata nella generazione di numerose metriche diverse tramite chiamate RemoteOperation individuali, ad esempio PUT /api/customer/owners/123, PUT /api/customer/owners/456 e richieste simili, consigliamo di consolidare queste operazioni in un'unica RemoteOperation. Un approccio consiste nello standardizzare tutte le chiamate RemoteOperation che iniziano con PUT /api/customer/owners/ a un formato uniforme, nello specifico PUT /api/customer/owners/{ownerId}. Nell'esempio seguente viene descritto quanto segue. Per informazioni su altre regole di personalizzazione, consulta Attivazione di CloudWatch Application Signals.
{ "logs":{ "metrics_collected":{ "application_signals":{ "rules":[ { "selectors":[ { "dimension":"RemoteOperation", "match":"PUT /api/customer/owners/*" } ], "replacements":[ { "target_dimension":"RemoteOperation", "value":"PUT /api/customer/owners/{ownerId}" } ], "action":"replace" } ] } } } }
In altri casi, metriche ad alta cardinalità potrebbero essere state aggregate in AllOtherRemoteOperations e potrebbe non essere chiaro quali metriche specifiche siano incluse. L'agente CloudWatch è in grado di registrare le operazioni interrotte. Per identificare le operazioni interrotte, utilizza la configurazione nell'esempio seguente per attivare la registrazione fino alla ricomparsa del problema. Quindi ispeziona i log degli agenti CloudWatch (accessibili tramite container stdout o file di log EC2) e cerca la parola chiave drop metric data.
{ "agent": { "config": { "agent": { "debug": true }, "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { "limiter": { "log_dropped_metrics": true } } } } } } }
Creazione di una policy di limitazione delle metriche
Se la configurazione di limitazione delle metriche predefinita non riguarda la cardinalità del servizio, puoi personalizzare la configurazione del limitatore di metriche. Per configurarlo, aggiungi una sezione limiter in quella logs/metrics_collected/application_signals del file di configurazione dell'agente CloudWatch.
L'esempio seguente riduce la soglia di limitazione delle metriche da 500 metriche distinte a 100.
{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "drop_threshold": 100 } } } } }