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.