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à.
Gestisci Amazon Managed Service for AWS Prometheus con Controller per Kubernetes
Il servizio gestito da Amazon per Prometheus è integrato con AWS Controllers for Kubernetes (ACK)
Questa sezione descrive come configurare AWS i controller per Kubernetes e Amazon Managed Service for Prometheus in un cluster Amazon EKS esistente.
Puoi anche leggere i post del blog che introducono AWS Controller for Kubernetes
Prerequisiti
Prima di iniziare a integrare AWS Controller for Kubernetes e Amazon Managed Service for Prometheus con il tuo cluster Amazon EKS, devi avere i seguenti prerequisiti.
-
È necessario disporre di un account Account AWS e delle autorizzazioni esistenti per creare i ruoli Amazon Managed Service for Prometheus e IAM a livello di codice.
-
È necessario disporre di un cluster Amazon EKS esistente con OpenID Connect (OIDC) abilitato.
Se l'OIDC non è abilitato, è possibile utilizzare il comando seguente per abilitarlo. Ricordati di sostituire
YOUR_CLUSTER_NAME
eAWS_REGION
con i valori corretti per il tuo account.eksctl utils associate-iam-oidc-provider \ --cluster ${
YOUR_CLUSTER_NAME
} --region ${AWS_REGION
} \ --approvePer ulteriori informazioni sull'utilizzo di OIDC con Amazon EKS, consulta Autenticazione tramite provider di identità OIDC e Creazione di un provider IAM OIDC nella Guida per l'utente di Amazon EKS.
-
È necessario che il driver CSI di Amazon EBS sia installato nel cluster Amazon EKS.
-
È necessaria l'installazione di AWS CLI. AWS CLI Viene utilizzato per richiamare funzionalità dalla riga di comando AWS .
-
È necessario installare Helm, il gestore di pacchetti per Kubernetes.
-
I parametri del piano di controllo con Prometheus devono essere configurate nel tuo cluster Amazon EKS.
-
È necessario disporre di un argomento Amazon Simple Notification Service (Amazon SNS) a cui desideri inviare gli avvisi dalla nuova area di lavoro. Assicurati di aver autorizzato il servizio gestito da Amazon per Prometheus a inviare messaggi sull'argomento.
Quando il tuo cluster Amazon EKS è configurato correttamente, dovresti essere in grado di vedere i parametri formattati per Prometheus chiamando kubectl get --raw
/metrics
. Ora sei pronto per installare un AWS controller di servizio Controllers for Kubernetes e utilizzarlo per distribuire le risorse di Amazon Managed Service for Prometheus.
Implementazione di uno spazio di lavoro con Controllers for Kubernetes AWS
Per distribuire un nuovo spazio di lavoro Amazon Managed Service for Prometheus, installerai AWS un controller Controllers for Kubernetes e lo utilizzerai per creare l'area di lavoro.
Implementare un nuovo spazio di lavoro Amazon Managed Service per Prometheus con Controllers for Kubernetes AWS
-
Usa i seguenti comandi per utilizzare Helm per installare il controller del servizio gestito da Amazon per Prometheus. Per ulteriori informazioni, consulta Installare un controller ACK
nella documentazione di Controllers for Kubernetes su. AWS GitHub Usa la regione
corretta per il tuo sistema, ad esempious-east-1
.export SERVICE=prometheusservice export RELEASE_VERSION=`curl -sL https://api.github.com/repos/aws-controllers-k8s/$SERVICE-controller/releases/latest | grep '"tag_name":' | cut -d'"' -f4` export ACK_SYSTEM_NAMESPACE=ack-system export AWS_REGION=
region
aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws helm install --create-namespace -n $ACK_SYSTEM_NAMESPACE ack-$SERVICE-controller \ oci://public.ecr.aws/aws-controllers-k8s/$SERVICE-chart --version=$RELEASE_VERSION --set=aws.region=$AWS_REGIONDopo alcuni istanti, si avrà una risposta simile alla seguente, che indica che la risposta è stata completata.
You are now able to create Amazon Managed Service for Prometheus (AMP) resources! The controller is running in "cluster" mode. The controller is configured to manage AWS resources in region: "us-east-1"
Facoltativamente, puoi verificare che il AWS controller Controllers for Kubernetes sia stato installato correttamente con il seguente comando.
helm list --namespace $ACK_SYSTEM_NAMESPACE -o yaml
Ciò restituirà informazioni sul controller
ack-prometheusservice-controller
, incluso ilstatus: deployed
. -
Crea un file denominato
workspace.yaml
, con il testo seguente. Verrà utilizzato come configurazione per l'area di lavoro che stai creando.apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: Workspace metadata: name: my-amp-workspace spec: alias: my-amp-workspace tags: ClusterName: EKS-demo
-
Esegui il comando seguente per creare la tua area di lavoro (questo comando dipende dalle variabili di sistema che hai impostato nel passaggio 1).
kubectl apply -f workspace.yaml -n $ACK_SYSTEM_NAMESPACE
Entro pochi istanti, dovresti essere in grado di vedere una nuova area di lavoro, denominata
my-amp-workspace
nel tuo account.Esegui il seguente comando per visualizzare i dettagli e lo stato della tua area di lavoro, incluso l'ID dell'area di lavoro. In alternativa, puoi visualizzare la nuova area di lavoro nella console del servizio gestito da Amazon per Prometheus
. kubectl describe workspace my-amp-workspace -n $ACK_SYSTEM_NAMESPACE
Nota
Puoi anche utilizzare un'area di lavoro esistente
anziché crearne una nuova. -
Crea due nuovi file yaml come configurazione per i Rulegroups e AlertManager creerai successivamente utilizzando la seguente configurazione.
Salva questa configurazione come
rulegroup.yaml
. SostituisciWORKSPACE-ID
con l'ID dell'area di lavoro della fase precedente.apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: RuleGroupsNamespace metadata: name: default-rule spec: workspaceID:
WORKSPACE-ID
name: default-rule configuration: | groups: - name: example rules: - alert: HostHighCpuLoad expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 60 for: 5m labels: severity: warning event_type: scale_up annotations: summary: Host high CPU load (instance {{ $labels.instance }}) description: "CPU load is > 60%\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" - alert: HostLowCpuLoad expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) < 30 for: 5m labels: severity: warning event_type: scale_down annotations: summary: Host low CPU load (instance {{ $labels.instance }}) description: "CPU load is < 30%\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"Salva la seguente configurazione come
alertmanager.yaml
. SostituisciWORKSPACE-ID
con l'ID dell'area di lavoro della fase precedente.Sostituisci
Regione AWS Ricorda che il servizio gestito da Amazon per Prometheus deve disporre delle autorizzazioni per l'argomento Amazon SNS.TOPIC-ARN
con l'ARN per l'argomento Amazon SNS a cui inviare notifiche e REGION con quello che stai utilizzando.apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: AlertManagerDefinition metadata: name: alert-manager spec: workspaceID:
WORKSPACE-ID
configuration: | alertmanager_config: | route: receiver: default_receiver receivers: - name: default_receiver sns_configs: - topic_arn:TOPIC-ARN
sigv4: region:REGION
message: | alert_type: {{ .CommonLabels.alertname }} event_type: {{ .CommonLabels.event_type }}Nota
Per ulteriori informazioni sui formati di questi file di configurazione, consulta e. RuleGroupsNamespaceDataAlertManagerDefinitionData
-
Esegui i seguenti comandi per creare la configurazione del gruppo di regole e di alert manager (questo comando dipende dalle variabili di sistema impostate nel passaggio 1).
kubectl apply -f rulegroup.yaml -n $ACK_SYSTEM_NAMESPACE kubectl apply -f alertmanager.yaml -n $ACK_SYSTEM_NAMESPACE
Le modifiche saranno disponibili in pochi istanti.
Nota
Per aggiornare una risorsa, anziché crearla, è sufficiente aggiornare il file yaml ed eseguire nuovamente il
kubectl apply
comando.Per eliminare una risorsa, esegui il seguente comando. Sostituisci
ResourceType
con il tipo di risorsa che desideri eliminareWorkspace
AlertManagerDefinition
, oRuleGroupNamespace
. SostituisciResourceName
con il nome della risorsa da eliminare.kubectl delete
ResourceType
ResourceName
-n $ACK_SYSTEM_NAMESPACE
Ciò completa la distribuzione della nuova area di lavoro. La sezione successiva descrive la configurazione del cluster per l'invio di parametri a quell'area di lavoro.
Configurazione del cluster Amazon EKS per la scrittura nell'area di lavoro del servizio gestito da Amazon per Prometheus
Questa sezione descrive come usare Helm per configurare Prometheus in esecuzione nel tuo cluster Amazon EKS per la scrittura remota dei parametri nell'area di lavoro del servizio gestito da Amazon per Prometheus che hai creato nella sezione precedente.
Per questa procedura, avrai bisogno del nome del ruolo IAM che hai creato da utilizzare per inserire i parametri. Se non l'hai già stato fatto, consulta Configura i ruoli di servizio per l'acquisizione di metriche dai cluster Amazon EKS. per ulteriori informazioni e istruzioni. Se segui queste istruzioni, il ruolo IAM verrà denominato amp-iamproxy-ingest-role
.
Per configurare il cluster Amazon EKS per la scrittura da remoto
-
Utilizza il comando seguente per ottenere la relativa
prometheusEndpoint
area di lavoro. SostituisciWORKSPACE-ID
con l'ID dell'area di lavoro della sezione precedente.aws amp describe-workspace --workspace-id
WORKSPACE-ID
Il prometheusEndpoint sarà presente nei risultati restituiti e sarà formattato in questo modo:
https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-a1b2c3d4-a123-b456-c789-ac1234567890/
Salva questo URL per utilizzarlo nei prossimi passaggi.
-
Crea un nuovo file con il seguente testo e chiamalo
prometheus-config.yaml
. Sostituisciaccount
con l'ID dell'account,WorkspaceURL/
con l'URL appena trovato e laregione
con quella appropriata Regione AWS per il tuo sistema.serviceAccounts: server: name: "amp-iamproxy-ingest-service-account" annotations: eks.amazonaws.com/role-arn: "arn:aws:iam::
account
:role/amp-iamproxy-ingest-role" server: remoteWrite: - url:workspaceURL/
api/v1/remote_write sigv4: region:region
queue_config: max_samples_per_send: 1000 max_shards: 200 capacity: 2500 -
Trova i nomi del grafico e del namespace di Prometheus, nonché la versione del grafico, con il seguente comando Helm.
helm ls --all-namespaces
In base ai passaggi precedenti, il grafico e lo spazio dei nomi di Prometheus dovrebbero avere entrambi un nome
prometheus
, e la versione del grafico potrebbe essere15.2.0
-
Esegui il comando seguente, utilizzando
PrometheusChartName
, ePrometheusNamespace
PrometheusChartVersion
trovato nel passaggio precedente.helm upgrade
PrometheusChartName
prometheus-community/prometheus -nPrometheusNamespace
-f prometheus-config.yaml --versionPrometheusChartVersion
Dopo alcuni minuti, verrà visualizzato un messaggio che indica che l'aggiornamento è stato completato.
-
Facoltativamente, verifica che i parametri vengano inviati correttamente interrogando l'endpoint del servizio gestito da Amazon per Prometheus tramite
awscurl
. SostituisciRegion
con Regione AWS quello che stai utilizzando eworkspaceURL/
con l'URL che hai trovato nel passaggio 1.awscurl --service="aps" --region="
Region
" "workspaceURL/
api/v1/query?query=node_cpu_seconds_total"
Ora hai creato un'area di lavoro Amazon Managed Service per Prometheus e ti sei connesso ad esso dal tuo cluster Amazon EKS, utilizzando i file YAML come configurazione. Questi file, denominati Custom Resource Definitions (CRD), risiedono all'interno del tuo cluster Amazon EKS. Puoi utilizzare il AWS controller Controllers for Kubernetes per gestire tutte le tue risorse Amazon Managed Service for Prometheus direttamente dal cluster.