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á.
Gerenciar o Amazon Managed Service for Prometheus com controladores da AWS para Kubernetes
O Amazon Managed Service for Prometheus é integrado aos AWS Controllers for Kubernetes (ACK)
Esta seção descreve como configurar o AWS Controllers for Kubernetes e Amazon Managed Service for Prometheus em um cluster do Amazon EKS existente.
Você também pode ler as postagens do blog apresentando o AWS Controllers for Kubernetes
Pré-requisitos
Antes de começar a integrar o AWS Controllers for Kubernetes e o Amazon Managed Service for Prometheus com seu cluster do Amazon EKS, você deve ter os seguintes pré-requisitos.
-
Você deve ter uma Conta da AWS e permissões existentes para criar programaticamente os perfis do Amazon Managed Service for Prometheus e do 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
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. A AWS CLI é usada para chamar a funcionalidade da AWS 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 Controllers for Kubernetes
Para implantar um novo espaço de trabalho do Amazon Managed Service for Prometheus, você instalará um controlador do AWS Controllers for Kubernetes e o usará para criar o espaço de trabalho.
Para implantar um novo espaço de trabalho do Amazon Managed Service for Prometheus com AWS Controllers for 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 do AWS Controllers para Kubernetes no GitHub. Use a regiãocorreta para 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 controlador do AWS 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 arquivos yaml como configuração para o Rulegroups e o AlertManager que você criará em seguida usando a configuração a seguir.
Salve essa configuração como
rulegroup.yaml. SubstituaWORKSPACE-IDpelo 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. SubstituaWORKSPACE-IDpelo ID do espaço de trabalho da etapa anterior. SubstituaTOPIC-ARNpelo ARN do tópico do Amazon SNS para enviar notificações eREGIONpela Região da AWS que você está usando. 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. Substitua
ResourceTypepelo tipo de recurso que você deseja excluirWorkspace,AlertManagerDefinitionouRuleGroupNamespace. SubstituaResourceNamepelo 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. SubstituaWORKSPACE-IDpelo 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. Substituaaccountpelo ID da sua conta,workspaceURL/pelo URL que você acabou de encontrar eregionpela Região da AWS apropriada 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 usando o
PrometheusChartName, oPrometheusNamespacee oPrometheusChartVersionencontrados 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. SubstituaRegiãopela 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), estão localizados em seu cluster do 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.