Risoluzione dei problemi relativi ai parametri Prometheus su Amazon ECS - 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à.

Risoluzione dei problemi relativi ai parametri Prometheus su Amazon ECS

Questa sezione offre informazioni sulla risoluzione dei problemi relativi all'impostazione dei parametri di Prometheus su cluster Amazon ECS.

Non vedo le metriche di Prometheus inviate a Logs CloudWatch

Le metriche di Prometheus devono essere inserite come eventi di registro nel gruppo di log/. aws/ecs/containerinsights/cluster-name/Prometheus Se il gruppo di log non viene creato o le metriche di Prometheus non vengono inviate al gruppo di log, è necessario innanzitutto verificare se gli obiettivi Prometheus sono stati scoperti con successo dall'agente. CloudWatch Quindi controlla il gruppo di sicurezza e le impostazioni di autorizzazione dell'agente. CloudWatch I seguenti passaggi guidano l'utente per eseguire il debug.

Passaggio 1: abilitare la modalità di debug CloudWatch dell'agente

Innanzitutto, imposta l' CloudWatch agente in modalità di debug aggiungendo le seguenti righe in grassetto al file AWS CloudFormation modello, oppure. cwagent-ecs-prometheus-metric-for-bridge-host.yaml cwagent-ecs-prometheus-metric-for-awsvpc.yaml Quindi salvare il file.

cwagentconfig.json: | { "agent": { "debug": true }, "logs": { "metrics_collected": {

Crea un nuovo AWS CloudFormation changeset rispetto allo stack esistente. Imposta gli altri parametri nel changeset sugli stessi valori dello stack esistente. AWS CloudFormation L'esempio seguente riguarda un CloudWatch agente installato in un cluster Amazon ECS utilizzando il tipo di EC2 avvio e la modalità di rete bridge.

ECS_NETWORK_MODE=bridge CREATE_IAM_ROLES=True ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name NEW_CHANGESET_NAME=your_selected_ecs_execution_role_name aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \ --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \ ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \ ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \ ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \ ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \ --capabilities CAPABILITY_NAMED_IAM \ --region $AWS_REGION \ --change-set-name $NEW_CHANGESET_NAME

Vai alla AWS CloudFormation console per esaminare il nuovo changeset,. $NEW_CHANGESET_NAME Dovrebbe essere applicata una modifica alla risorsa CWAgentConfig. SSMParameter Esegui il changeset e riavvia l'attività dell' CloudWatch agente inserendo i seguenti comandi.

aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 0 \ --service your_service_name_here \ --region $AWS_REGION

Attendi circa 10 secondi e inserisci il comando seguente.

aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 1 \ --service your_service_name_here \ --region $AWS_REGION

Passaggio 2: controllo dei log di individuazione del servizio ECS

La definizione del task ECS dell' CloudWatch agente abilita i log per impostazione predefinita nella sezione seguente. I log vengono inviati a Logs nel gruppo di CloudWatch log /ecs/. ecs-cwagent-prometheus

LogConfiguration: LogDriver: awslogs Options: awslogs-create-group: 'True' awslogs-group: "/ecs/ecs-cwagent-prometheus" awslogs-region: !Ref AWS::Region awslogs-stream-prefix: !Sub 'ecs-${ECSLaunchType}-awsvpc'

Filtra i log in base alla stringa ECS_SD_Stats per ottenere i parametri relativi all'individuazione dei servizi ECS, come mostrato nell'esempio seguente.

2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeContainerInstances: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeInstancesRequest: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeTaskDefinition: 2 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeTasks: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_ListTasks: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: Exporter_DiscoveredTargetCount: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Get_EC2MetaData: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Get_TaskDefinition: 2 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Size_ContainerInstance: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Size_TaskDefinition: 2 2020-09-1T01:53:14Z D! ECS_SD_Stats: Latency: 43.399783ms

Il significato di ogni parametro per un particolare ciclo di individuazione dei servizi ECS è il seguente:

  • AWSCLI_DescribeContainerInstances— il numero di chiamate API effettuate. ECS::DescribeContainerInstances

  • AWSCLI_DescribeInstancesRequest— il numero di chiamate ECS::DescribeInstancesRequest API effettuate.

  • AWSCLI_DescribeTaskDefinition— il numero di chiamate ECS::DescribeTaskDefinition API effettuate.

  • AWSCLI_DescribeTasks— il numero di chiamate ECS::DescribeTasks API effettuate.

  • AWSCLI_ListTasks— il numero di chiamate ECS::ListTasks API effettuate.

  • ExporterDiscoveredTargetCount— il numero di obiettivi Prometheus che sono stati scoperti ed esportati con successo nel file dei risultati di destinazione all'interno del contenitore.

  • LRUCache_Get_ EC2 MetaData: il numero di volte in cui i metadati delle istanze del contenitore sono stati recuperati dalla cache.

  • LRUCache_Get_ TaskDefinition: il numero di volte in cui i metadati di definizione delle attività ECS sono stati recuperati dalla cache.

  • LRUCache_Size_ ContainerInstance: il numero di metadati di un'istanza di contenitore univoca memorizzati nella cache.

  • LRUCache_Size_ TaskDefinition: il numero di definizioni di attività ECS univoche memorizzate nella cache.

  • Latency (Latenza): quanto tempo richiede il ciclo di individuazione dei servizi.

Verifica il valore di ExporterDiscoveredTargetCount per vedere se le destinazioni Prometheus individuate corrispondono alle tue aspettative. In caso contrario, i possibili motivi sono i seguenti:

  • La configurazione dell'individuazione del servizio ECS potrebbe non corrispondere all'impostazione dell'applicazione. Per il rilevamento dei servizi basati su etichette docker, i contenitori di destinazione potrebbero non avere l'etichetta docker necessaria configurata nell'agente CloudWatch per individuarli automaticamente. Per la definizione delle attività ARN Regular Expression-based service discovery di ECS, l'impostazione regex nell'agente potrebbe non corrispondere CloudWatch alla definizione dell'attività dell'applicazione.

  • Il ruolo del task ECS dell' CloudWatch agente potrebbe non disporre dell'autorizzazione per recuperare i metadati delle attività ECS. Verifica che all' CloudWatch agente siano state concesse le seguenti autorizzazioni di sola lettura:

    • ec2:DescribeInstances

    • ecs:ListTasks

    • ecs:DescribeContainerInstances

    • ecs:DescribeTasks

    • ecs:DescribeTaskDefinition

Passaggio 3: controllo della connessione di rete e delle policy dei ruoli delle attività ECS

Se non ci sono ancora eventi di registro inviati al gruppo di log CloudWatch Logs di destinazione, anche se il valore di Exporter_DiscoveredTargetCount indica che sono stati scoperti obiettivi Prometheus, ciò potrebbe essere causato da una delle seguenti cause:

  • L' CloudWatch agente potrebbe non essere in grado di connettersi alle porte di destinazione Prometheus. Controlla l'impostazione del gruppo di sicurezza dietro l'agente. CloudWatch L'IP privato dovrebbe consentire all' CloudWatch agente di connettersi alle porte dell'esportatore Prometheus.

  • Il ruolo del task ECS dell' CloudWatch agente potrebbe non avere la policy gestita. CloudWatchAgentServerPolicy Il task role ECS dell' CloudWatchagente deve avere questa politica per poter inviare le metriche di Prometheus come eventi di registro. Se hai utilizzato il AWS CloudFormation modello di esempio per creare automaticamente i ruoli IAM, sia il ruolo di attività ECS che il ruolo di esecuzione ECS dispongono del privilegio minimo per eseguire il monitoraggio di Prometheus.