Gestisci Amazon Managed Service for AWS Prometheus con Controller per Kubernetes - Amazon Managed Service per Prometheus

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), con supporto per la gestione della tua area di lavoro, Alert Manager e risorse Ruler in Amazon EKS. Puoi utilizzare le definizioni di risorse personalizzate (CRD) di AWS Controllers for Kubernetes e gli oggetti Kubernetes nativi senza dover definire risorse al di fuori del cluster.

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 e introducono il controller ACK per Amazon Managed Service for Prometheus.

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.

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
  1. 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 esempio us-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_REGION

    Dopo 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 il status: deployed.

  2. 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
  3. 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.

  4. Crea due nuovi file yaml come configurazione per i Rulegroups e AlertManager creerai successivamente utilizzando la seguente configurazione.

    Salva questa configurazione come rulegroup.yaml. Sostituisci WORKSPACE-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. Sostituisci WORKSPACE-ID con l'ID dell'area di lavoro della fase precedente. Sostituisci TOPIC-ARN con l'ARN per l'argomento Amazon SNS a cui inviare notifiche e REGION con quello che stai utilizzando. Regione AWS Ricorda che il servizio gestito da Amazon per Prometheus deve disporre delle autorizzazioni per l'argomento Amazon SNS.

    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

  5. 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 ResourceTypecon il tipo di risorsa che desideri eliminare WorkspaceAlertManagerDefinition, oRuleGroupNamespace. Sostituisci ResourceNamecon 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
  1. Utilizza il comando seguente per ottenere la relativa prometheusEndpoint area di lavoro. Sostituisci WORKSPACE-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.

  2. Crea un nuovo file con il seguente testo e chiamalo prometheus-config.yaml. Sostituisci account con l'ID dell'account, WorkspaceURL/ con l'URL appena trovato e la regione 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
  3. 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 essere 15.2.0

  4. Esegui il comando seguente, utilizzando PrometheusChartNamePrometheusNamespace, e PrometheusChartVersiontrovato nel passaggio precedente.

    helm upgrade PrometheusChartName prometheus-community/prometheus -n PrometheusNamespace -f prometheus-config.yaml --version PrometheusChartVersion

    Dopo alcuni minuti, verrà visualizzato un messaggio che indica che l'aggiornamento è stato completato.

  5. Facoltativamente, verifica che i parametri vengano inviati correttamente interrogando l'endpoint del servizio gestito da Amazon per Prometheus tramite awscurl. Sostituisci Region con Regione AWS quello che stai utilizzando e workspaceURL/ 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.