As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Gerencie o Amazon Managed Service para Prometheus AWS com controladores para Kubernetes
O Amazon Managed Service for Prometheus é integrado aos AWS Controllers for Kubernetes (ACK)
Esta seção descreve como configurar AWS controladores para Kubernetes e Amazon Managed Service para Prometheus em um cluster Amazon EKS existente.
Você também pode ler as postagens do blog que apresentam AWS os controladores para Kubernetes
Pré-requisitos
Antes de começar a integrar AWS os Controllers for Kubernetes e o Amazon Managed Service for Prometheus com seu cluster Amazon EKS, você deve ter os seguintes pré-requisitos.
-
Você deve ter uma conta existente Conta da AWS e ter permissões para criar programaticamente as funções do Amazon Managed Service para Prometheus e IAM.
-
Você deve ter um cluster do Amazon EKS existente com o OpenID Connect (OIDC) habilitado.
Se o OIDC não estiver habilitado, você pode usar o comando a seguir para habilitá-lo. Lembre-se de substituir o
YOUR_CLUSTER_NAMEeAWS_REGIONpelos valores corretos para sua conta.eksctl utils associate-iam-oidc-provider \ --cluster ${YOUR_CLUSTER_NAME} --region ${AWS_REGION} \ --approvePara obter mais informações sobre o uso do OIDC com o Amazon EKS, consulte Autenticação do provedor de identidade do OIDC e Criação de um provedor OIDC do IAM no Guia do usuário do Amazon EKS.
-
Você deve ter o driver da CSI do Amazon EBS instalado no seu cluster do Amazon EKS.
-
É necessário ter a AWS CLI instalada. O AWS CLI é usado para chamar a AWS funcionalidade a partir da linha de comando.
-
O Helm, o gerenciador de pacotes do Kubernetes, deve estar instalado.
-
As métricas do ambiente de gerenciamento com o Prometheus devem ser configuradas em seu cluster do Amazon EKS.
-
Você deve ter um tópico do Amazon Simple Notification Service (Amazon SNS) para o qual você deseja enviar alertas do seu novo espaço de trabalho. Verifique se você concedeu permissão ao Amazon Managed Service for Prometheus para enviar mensagens para o tópico.
Quando seu cluster do Amazon EKS estiver configurado adequadamente, você poderá ver as métricas formatadas para o Prometheus chamando kubectl get --raw
/metrics. Agora você está pronto para instalar um controlador de serviço AWS Controllers for Kubernetes e usá-lo para implantar recursos do Amazon Managed Service for Prometheus.
Implantação de um espaço de trabalho com AWS controladores para Kubernetes
Para implantar um novo espaço de trabalho do Amazon Managed Service para Prometheus, você instalará AWS um controlador Controllers for Kubernetes e o usará para criar o espaço de trabalho.
Para implantar um novo espaço de trabalho AWS do Amazon Managed Service para Prometheus com controladores para Kubernetes
-
Use os comandos a seguir para usar o Helm para instalar o controlador de serviço do Amazon Managed Service for Prometheus. Para obter mais informações, consulte Instalar um controlador ACK
na documentação de AWS Controllers for Kubernetes em. GitHub Use o correto regionpara o seu sistema, comous-east-1.export SERVICE=prometheusservice export RELEASE_VERSION=`curl -sL https://api.github.com/repos/aws-controllers-k8s/$SERVICE-controller/releases/latest | jq -r '.tag_name | ltrimstr("v")'` export ACK_SYSTEM_NAMESPACE=ack-system export AWS_REGION=regionaws 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_REGIONApós alguns instantes, você verá um resultado semelhante ao seguinte, indicando êxito.
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"Opcionalmente, você pode verificar se o AWS controlador Controllers for Kubernetes foi instalado com êxito com o comando a seguir.
helm list --namespace $ACK_SYSTEM_NAMESPACE -o yamlIsso retornará informações sobre o controlador
ack-prometheusservice-controller, incluindo ostatus: deployed. -
Crie um arquivo denominado
workspace.yamlcom o seguinte texto. Ele será usado como configuração para o espaço de trabalho que você está criando.apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: Workspace metadata: name: my-amp-workspace spec: alias: my-amp-workspace tags: ClusterName: EKS-demo -
Execute o comando a seguir para criar seu espaço de trabalho (esse comando depende das variáveis do sistema que você configurou na etapa 1).
kubectl apply -f workspace.yaml -n $ACK_SYSTEM_NAMESPACEEm alguns instantes, você poderá ver um novo espaço de trabalho, chamado
my-amp-workspaceem sua conta.Executando o comando a seguir para visualizar os detalhes e o status do seu espaço de trabalho, incluindo o ID do espaço de trabalho. Como alternativa, você pode visualizar o novo espaço de trabalho no console do Amazon Managed Service for Prometheus
. kubectl describe workspace my-amp-workspace -n $ACK_SYSTEM_NAMESPACEnota
Você também pode usar um espaço de trabalho existente
em vez de criar um novo. -
Crie dois novos arquivos yaml como configuração para os grupos de regras e AlertManager que você criará em seguida usando a configuração a seguir.
Salve essa configuração como
rulegroup.yaml.WORKSPACE-IDSubstitua pela ID do espaço de trabalho da etapa anterior.apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: RuleGroupsNamespace metadata: name: default-rule spec: workspaceID:WORKSPACE-IDname: 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 }}"Salve a configuração a seguir como
alertmanager.yaml.WORKSPACE-IDSubstitua pela ID do espaço de trabalho da etapa anterior.TOPIC-ARNSubstitua pelo ARN do tópico do Amazon SNS para o qual enviar notificaçõesREGIONe pelo que você está usando Região da AWS . Lembre-se de que o Amazon Managed Service for Prometheus deve ter permissões para o tópico do Amazon SNS.apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: AlertManagerDefinition metadata: name: alert-manager spec: workspaceID:WORKSPACE-IDconfiguration: | alertmanager_config: | route: receiver: default_receiver receivers: - name: default_receiver sns_configs: - topic_arn:TOPIC-ARNsigv4: region:REGIONmessage: | alert_type: {{ .CommonLabels.alertname }} event_type: {{ .CommonLabels.event_type }}nota
Para saber mais sobre os formatos desses arquivos de configuração, consulte RuleGroupsNamespaceData e AlertManagerDefinitionData.
-
Execute os comandos a seguir para criar seu grupo de regras e a configuração do gerenciador de alertas (esse comando depende das variáveis do sistema que você configurou na etapa 1).
kubectl apply -f rulegroup.yaml -n $ACK_SYSTEM_NAMESPACE kubectl apply -f alertmanager.yaml -n $ACK_SYSTEM_NAMESPACEAs mudanças estarão disponíveis em instantes.
nota
Para atualizar um recurso, em vez de criá-lo, basta atualizar o arquivo yaml e executar o comando
kubectl applynovamente.Para excluir um recurso, execute o comando a seguir.
ResourceTypeSubstitua pelo tipo de recurso que você deseja excluirWorkspaceAlertManagerDefinition, ouRuleGroupNamespace.ResourceNameSubstitua pelo nome do recurso a ser excluído.kubectl deleteResourceTypeResourceName-n $ACK_SYSTEM_NAMESPACE
Isso conclui a implantação do novo espaço de trabalho. A próxima seção descreve como configurar seu cluster para enviar métricas para esse espaço de trabalho.
Configuração do cluster do Amazon EKS para gravar no espaço de trabalho do Amazon Managed Service for Prometheus
Esta seção descreve como usar o Helm para configurar o Prometheus em execução no seu cluster do Amazon EKS para gravar de forma remota métricas no espaço de trabalho do Amazon Managed Service for Prometheus que você criou na seção anterior.
Para esse procedimento, você precisará do nome do perfil do IAM que você criou para usar na ingestão de métricas. Se ainda não o tiver feito isso, consulte Configurar perfis de serviço para a ingestão de métricas de clusters do Amazon EKS para obter mais informações e instruções. Se você seguir essas instruções, o perfil do IAM será chamado amp-iamproxy-ingest-role.
Para configurar o cluster do Amazon EKS para gravação remota
-
Use o comando a seguir para obter o
prometheusEndpointpara o espaço de trabalho.WORKSPACE-IDSubstitua pela ID do espaço de trabalho da seção anterior.aws amp describe-workspace --workspace-idWORKSPACE-IDO prometheusEndpoint estará nos resultados de retorno e será formatado assim:
https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-a1b2c3d4-a123-b456-c789-ac1234567890/Salve esse URL para uso nas próximas etapas.
-
Crie um arquivo com o texto a seguir e chame-o de
prometheus-config.yaml.accountSubstitua pelo ID da sua conta,workspaceURL/pelo URL que você acabou de encontrar eregionpelo apropriado Região da AWS para o seu 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:regionqueue_config: max_samples_per_send: 1000 max_shards: 200 capacity: 2500 -
Encontre os nomes do gráfico e do namespace do Prometheus, bem como a versão do gráfico, com o seguinte comando Helm.
helm ls --all-namespacesCom base nas etapas até aqui, o gráfico e o namespace do Prometheus devem ser nomeados
prometheus, e a versão do gráfico pode ser15.2.0 -
Execute o comando a seguir
PrometheusChartName, usando oPrometheusNamespace,, ePrometheusChartVersionencontrado na etapa anterior.helm upgradePrometheusChartNameprometheus-community/prometheus -nPrometheusNamespace-f prometheus-config.yaml --versionPrometheusChartVersionDepois de alguns minutos, você verá uma mensagem informando que a atualização ocorreu com êxito.
-
Opcionalmente, valide se as métricas estão sendo enviadas com êxito consultando o endpoint do Amazon Managed Service for Prometheus via
awscurl.RegionSubstitua pelo Região da AWS que você está usando eworkspaceURL/pelo URL encontrado na etapa 1.awscurl --service="aps" --region="Region" "workspaceURL/api/v1/query?query=node_cpu_seconds_total"
Agora você criou um espaço de trabalho do Amazon Managed Service for Prometheus e se conectou a ele a partir do seu cluster do Amazon EKS usando arquivos YAML como configuração. Esses arquivos, chamados de definições de recursos personalizados (CRDs), residem em seu cluster Amazon EKS. Você pode usar o controlador AWS Controllers for Kubernetes para gerenciar todos os seus recursos do Amazon Managed Service for Prometheus diretamente do cluster.