Use o monitoramento do Managed Service for Prometheus para visualizar os painéis de monitoramento predefinidos e as métricas de desempenho do ACK Edge cluster. Ative o monitoramento para o ACK Edge cluster com o Managed Service for Prometheus .
Pré-requisitos
Crie um ACK Edge cluster que execute a versão 1.18.8-aliyunedge.1 ou posterior.
Certifique-se de que o ACK Edge cluster tenha o ack-arms-prometheus versão 1.1.4 ou posterior instalado. Caso contrário, atualize o ack-arms-prometheus.
-
Se a versão do cluster for anterior à 1.26, certifique-se de que o ConfigMap
kube-system/edge-tunnel-server-cfgesteja com o encaminhamento de porta ativado para o Node Exporter na porta 9100 e para o GPU Exporter na porta 9445. Use a seguinte configuração:http-proxy-ports: 9445 https-proxy-ports: 9100
Visão geral do monitoramento do Managed Service for Prometheus
O Managed Service for Prometheus integra-se totalmente ao ecossistema de código aberto do Prometheus e oferece suporte ao monitoramento de uma ampla variedade de componentes. Ele fornece vários painéis de monitoramento predefinidos prontos para uso e disponibiliza um service Prometheus totalmente gerenciado. Com o monitoramento do Managed Service for Prometheus , você não precisa criar seu próprio sistema de monitoramento do Prometheus nem se preocupar com questões subjacentes, como armazenamento de dados, apresentação de dados e O&M do sistema.
O ACK Edge cluster é compatível com o Container Monitoring Basic Edition.
Visualize os painéis do Grafana no Managed Service for Prometheus
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
-
Na página Clusters, clique no nome do cluster que você deseja gerenciar. No painel de navegação à esquerda, escolha .
NotaNo primeiro acesso, siga as instruções na tela e clique em Install abaixo do add-on. O console instala o add-on automaticamente e verifica os painéis de monitoramento. Após a conclusão da instalação, o console redireciona você para a página de detalhes do Prometheus Monitoring.
Na página Prometheus Monitoring, é possível utilizar os painéis de monitoramento integrados, como Node Monitoring, Application Monitoring e GPU Monitoring, para visualizar os dados de monitoramento dos nós, aplicações e GPUs no cluster.
Configure alertas de monitoramento do Prometheus
A criação de alertas para tarefas de monitoramento ajuda a detectar anomalias de forma proativa. Quando as condições de alerta são atendidas, os alertas são enviados em tempo real por meio de canais como chamadas telefônicas, e-mails, mensagens de texto, DingTalk, WeCom e webhooks. Ao acionar uma regra de alerta, uma notificação é enviada para o grupo de contatos especificado. É necessário criar um contato antes de criar um grupo de contatos. Ao criar um contato, você pode especificar o número de celular e o endereço de e-mail usados para receber notificações. Também é possível especificar um grupo de recebimento em uma política de notificação para receber alertas, permitindo que você gerencie os alertas prontamente.
Para obter informações sobre como criar um robô do DingTalk, consulte chatbot do DingTalk.
Para obter informações sobre como criar um robô do WeCom, consulte Enviar notificações de alerta para chats em grupo do WeCom.
kubectl describe node cn-beijing.47.100.***.***
Etapa 1: Crie um contato
Faça login no ARMS console. No painel de navegação à esquerda, escolha .
Na aba Contacts, clique em Create Contact.
-
Na caixa de diálogo Create Contact, configure os parâmetros e clique em Confirm.
Parâmetro
Descrição
Name
Especifique um nome personalizado para o contato.
Mobile phone number
Após especificar um número de celular, o contato poderá receber notificações de alerta por chamada telefônica e mensagem de texto.
NotaApenas números de celular verificados podem ser usados para notificações por chamada telefônica em uma política de notificação. Para obter informações sobre como verificar um número de celular, consulte Verificar um número de telefone.
Email address
Após especificar um endereço de e-mail, o contato poderá receber notificações de alerta por e-mail.
ImportanteVocê pode adicionar até 100 contatos.
Etapa 2: Crie uma regra de alerta do Prometheus
Crie uma regra de alerta do Prometheus usando um limiar estático
O tipo de verificação de limiar estático fornece métricas de alerta predefinidas pelo sistema. Ao selecionar uma métrica de alerta existente, você pode criar rapidamente uma regra de alerta para essa métrica usando opções descritivas.
Faça login no ARMS console.
No painel de navegação à esquerda, escolha .
Na página Prometheus Alert Rules, clique em Create Prometheus Alert Rule.
-
Na página Create Prometheus Alert Rule, configure os seguintes parâmetros de alerta e clique em Save.
Parâmetro
Descrição
Exemplo
Alert Name
O nome do alerta.
prod-cluster-container-cpu-alert
Check Type
Selecione Static threshold.
Static threshold
Prometheus Instance
Selecione a instância do Prometheus para a qual você deseja criar o alerta.
Production Cluster
Alert Group
Selecione um grupo de alertas.
Diferentes tipos de Prometheus aceitam diferentes grupos de alertas. As opções de grupos de alertas disponíveis mudam com base no tipo de instância do Prometheus selecionado.
Kubernetes Workloads
Alert Metric
Selecione a métrica para a qual deseja configurar o alerta. Cada grupo de alertas corresponde a diferentes métricas.
Container CPU utilization
Alert Condition
Defina as condições que acionam um evento de alerta com base no conteúdo predefinido da métrica de alerta.
A condição de alerta é atendida quando a utilização da CPU do contêiner é
greater than80%.Filter Condition
Defina o escopo da regra de alerta com base na métrica de alerta. Um evento de alerta é acionado quando qualquer recurso que atenda às condições de filtro satisfaz a regra de alerta.
As seguintes condições de filtro estão disponíveis:
Traverse: A regra de alerta se aplica a todos os recursos na instância atual do Prometheus. Traverse é a condição de filtro padrão.
Equal To: Após selecionar esta condição, insira um nome de recurso específico. A regra de alerta se aplica apenas a esse recurso. Não é possível inserir vários nomes de recursos.
Not Equal To: Após selecionar esta condição, insira um nome de recurso específico. A regra de alerta se aplica a todos os recursos, exceto o especificado. Não é possível inserir vários nomes de recursos.
Match Regular Expression: Após selecionar esta condição, insira uma expressão regular para corresponder aos nomes dos recursos conforme necessário. A regra de alerta se aplica a todos os recursos que correspondem à expressão regular.
Do Not Match Regular Expression: Após selecionar esta condição, insira uma expressão regular para corresponder aos nomes dos recursos conforme necessário. A regra de alerta filtra todos os recursos que correspondem à expressão regular.
NotaApós definir as condições de filtro, a área Data Preview é exibida.
A condição de filtro não pode exceder 300 caracteres.
Traverse
Data Preview
A área Data Preview exibe a instrução da Prometheus Query Language (PromQL) que corresponde à condição de alerta. Ela também mostra os valores da métrica de monitoramento como uma curva de série temporal.
Por padrão, apenas o valor em tempo real de um recurso é exibido. Você pode selecionar um recurso de destino e um intervalo de tempo na caixa de filtro desta área para visualizar valores de diferentes recursos e intervalos de tempo.
NotaO limiar de alerta aparece como uma linha reta vermelha na curva de série temporal. A parte da curva que atinge o limiar de alerta é exibida em vermelho escuro, e a parte que não atinge é exibida em azul.
Passe o mouse sobre a curva de série temporal para visualizar os detalhes do recurso em um ponto específico no tempo.
Selecione um intervalo de tempo na curva de série temporal para visualizar a curva desse período.
None
Duration
Se uma condição de alerta for atendida, um evento de alerta será acionado imediatamente: um evento de alerta é acionado se qualquer ponto de dados atingir o limiar.
Um evento de alerta é acionado somente após uma condição de alerta persistir por N minutos: um evento de alerta é acionado apenas se o tempo em que o limiar é atingido for maior ou igual a N minutos.
1
Alert Level
Personalize o nível de alerta. O nível de alerta padrão é Default. A gravidade aumenta de Default, P4, P3, P2 até P1.
Default
Alert Content
As informações de alerta que os usuários recebem. Você pode usar a sintaxe de modelo do Go para personalizar variáveis de parâmetros de alerta no conteúdo do alerta.
Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Container: {{$labels.container}} CPU utilization {{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%, Current value: {{ printf "%.2f" $value }}%
Alert Notification
Simple Mode: Você pode definir o Notification Receiver, Notification Period e Whether to Resend Notifications.
Standard Mode:
Não especificar uma política de notificação: Se você selecionar esta opção, após criar a regra de alerta, poderá criar uma nova política de notificação na página Notification Policy e especificar regras e condições de correspondência, como o nome da regra de alerta, para corresponder à regra de alerta. Quando a regra de alerta é acionada e gera um evento de alerta, as informações do alerta são enviadas para os contatos ou grupos de contatos especificados na política de notificação. Para mais informações, consulte Políticas de notificação.
Especificar uma política de notificação: Se você selecionar esta opção, o ARMS adiciona automaticamente uma regra de correspondência à política de notificação correspondente. O conteúdo da regra de correspondência é o ID da regra de alerta, que é apresentado como o nome da regra de alerta. Isso garante que os eventos de alerta gerados pela regra de alerta atual sejam correspondidos pela política de notificação selecionada.
ImportanteEspecificar rapidamente uma política de notificação garante apenas que os eventos de alerta da regra de alerta atual sejam correspondidos pela política de notificação selecionada e que os alertas correspondentes sejam gerados. No entanto, os eventos da regra de alerta atual também podem ser correspondidos por outras políticas de notificação configuradas com correspondência difusa, o que também gera alertas. A relação entre eventos de alerta e políticas de notificação é um mapeamento de muitos para muitos.
Do not specify a notification rule
Advanced Settings
Alert Check Interval
O intervalo no qual o sistema verifica a regra de alerta para determinar se os dados atendem às condições de alerta. O padrão é 1 minuto, e o mínimo é 1 minuto.
1
Check after data is complete
Yes
No
Yes
Tags
Defina tags para o alerta. As tags podem ser usadas como opções para regras de correspondência de políticas de notificação.
None
Annotations
Defina anotações para o alerta.
None
Crie uma regra de alerta do Prometheus usando PromQL personalizado
Para monitorar métricas diferentes das métricas predefinidas pelo sistema fornecidas pelo tipo de verificação de limiar estático, use o tipo de verificação de PromQL personalizado para criar uma regra de alerta.
Na página Create Prometheus Alert Rule, configure os seguintes parâmetros de alerta e clique em Save.
Parâmetro | Descrição | Exemplo |
Alert Name | O nome do alerta. | Pod CPU usage is greater than 8% |
Check Type | Defina como Custom PromQL query. | Custom PromQL query |
Prometheus Instance | Selecione a instância do Prometheus para a qual você deseja criar o alerta. | None |
Reference Alert Group | Selecione um grupo de alertas. Diferentes tipos de Prometheus aceitam diferentes grupos de alertas. As opções de grupos de alertas disponíveis mudam com base no tipo de instância do Prometheus selecionado. | Kubernetes Workload |
Reference Alert Metric | Opcional. As métricas de referência fornecem configurações personalizadas de PromQL para métricas comuns. Selecione uma métrica semelhante para preencher previamente os campos. Em seguida, modifique a configuração conforme necessário. O parâmetro Reference Metric filtra automaticamente as métricas de alerta suportadas com base no tipo de instância do Prometheus selecionado. | Pod disk usage alert |
Custom PromQL Statement | Use uma instrução PromQL para definir a expressão da regra de alerta. | Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}}/Disk device: {{$labels.device}} usage exceeds 90%, current value {{ printf "%.2f" $value }}%max(container_fs_usage_bytes{pod!="", namespace!="arms-prom",namespace!="monitoring"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=""}) by (pod_name,namespace, device) * 100 > 90 |
Data Preview | A área Data Preview exibe a instrução da Prometheus Query Language (PromQL) que corresponde à condição de alerta. Ela também mostra os valores da métrica de monitoramento como uma curva de série temporal. Por padrão, apenas o valor em tempo real de um recurso é exibido. Você pode selecionar um recurso de destino e um intervalo de tempo na caixa de filtro desta área para visualizar valores de diferentes recursos e intervalos de tempo. Nota
| None |
Duration |
| 1 |
Alert Level | Personalize o nível de alerta. O nível de alerta padrão é Default. A gravidade aumenta de Default, P4, P3, P2 até P1. | Default |
Alert Content | As informações de alerta que os usuários recebem. Use a sintaxe de modelo do Go para personalizar variáveis de parâmetros no conteúdo do alerta. O exemplo a seguir mostra um modelo para um alerta de reinicialização de pod. Isso ajuda você a configurar um conteúdo de notificação legível: Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}} restarted more than {{ $labels.metrics_params_value}} times in {{$labels.metrics_params_time}} minutes. Current restarts: {{ $value }} | Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}}/Disk device: {{$labels.device}} usage exceeds 90%, current value {{ printf "%.2f" $value }}% |
Alert Notification |
| Do not specify a notification rule |
Advanced Settings | ||
Alert Check Period | O intervalo, em minutos, para verificar a regra de alerta. O valor mínimo é 1 minuto. | 1 |
Check After Data Is Complete |
| Yes |
Tags | Defina tags para o alerta. As tags podem ser usadas como opções para regras de correspondência de políticas de notificação. | None |
Annotations | Defina anotações para o alerta. | None |
Taints:test-key=test-value:NoSchedule
Perguntas frequentes
Como visualizo a versão do add-on ack-arms-prometheus?
Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Components and Add-ons .
-
Na página Add-ons, clique na aba Logs and Monitoring e localize o add-on ack-arms-prometheus.
A versão atual aparece abaixo do add-on. Se uma nova versão estiver disponível, clique em Upgrade à direita da versão para atualizar o add-on.
NotaA opção Upgrade aparece apenas quando a versão do add-on instalado não é a mais recente.
ACK Edge cluster: Como os dados de monitoramento são obtidos?
Na computação de borda, os nós de borda estão localizados em data centers on-premises relativamente isolados. A Virtual Private Cloud (VPC) do lado da cloud e o lado da borda estão em planos de rede diferentes. O Prometheus Agent implantado na cloud não pode acessar diretamente o Node Exporter e o GPU Exporter no lado da borda por meio de endpoints para obter as métricas de monitoramento correspondentes. A partir da versão 1.1.4 do ack-arms-prometheus, o Visão geral do componente de comunicação O&M cloud-edge Tunnel integrado ao ACK Edge cluster permite que o ack-arms-prometheus estabeleça automaticamente um caminho de coleta de dados de monitoramento entre a cloud e a borda.
Por que a implantação do monitoramento de GPU falha?
Se um nó de GPU tiver taints, a implantação do monitoramento de GPU poderá falhar. Use as etapas a seguir para visualizar os taints no nó de GPU.
-
Execute o seguinte comando para visualizar os taints no nó de GPU de destino.
Se o nó de GPU tiver taints personalizados, você poderá encontrar as entradas relacionadas aos taints. Este exemplo usa um taint com
keydefinido comotest-key,valuedefinido comotest-valueeeffectdefinido comoNoSchedule:kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-Saída esperada:
# 1. Run the following command to edit ack-prometheus-gpu-exporter. kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. Add the following fields to the YAML file to declare a toleration for the taint. # Other fields are omitted. #tolerations field is added above the containers field, at the same level as the containers field. tolerations: - key: "test-key" operator: "Equal" value: "test-value" effect: "NoSchedule" containers: # Other fields are omitted. -
Use um dos dois métodos a seguir para lidar com os taints no nó de GPU.
-
Execute o seguinte comando para remover o taint do nó de GPU.
kubectl delete namespace arms-prom -
Declare uma tolerância para o taint no nó de GPU para permitir que os pods sejam agendados para o nó com taint.
kubectl delete ClusterRole arms-kube-state-metrics kubectl delete ClusterRole arms-node-exporter kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role kubectl delete ClusterRole arms-prometheus-oper3 kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role kubectl delete ClusterRole arms-pilot-prom-k8s kubectl delete ClusterRole gpu-prometheus-exporter kubectl delete ClusterRole o11y:addon-controller:role kubectl delete ClusterRole arms-aliyunserviceroleforarms-clusterrole
-
A exclusão manual de recursos pode causar falha na reinstalação do Managed Service for Prometheus. Como excluo completamente o ARMS-Prometheus manualmente?
Excluir apenas o namespace do Managed Service for Prometheus deixa configurações residuais após a exclusão dos recursos e afeta a reinstalação. Execute as seguintes operações para excluir completamente a configuração residual do ARMS-Prometheus manualmente.
-
Exclua o namespace arms-prom.
kubectl delete ClusterRoleBinding arms-node-exporter kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2 kubectl delete ClusterRoleBinding arms-kube-state-metrics kubectl delete ClusterRoleBinding arms-pilot-prom-k8s kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding gpu-prometheus-exporter kubectl delete ClusterRoleBinding o11y:addon-controller:rolebinding kubectl delete ClusterRoleBinding arms-kube-state-metrics-agent kubectl delete ClusterRoleBinding arms-node-exporter-agent kubectl delete ClusterRoleBinding arms-aliyunserviceroleforarms-clusterrolebinding -
Exclua os ClusterRoles.
kubectl delete Role arms-pilot-prom-spec-ns-k8s kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system -
Exclua os ClusterRoleBindings.
-
Exclua os Roles e RoleBindings.
Após excluir manualmente os recursos do ARMS-Prometheus, no ACK console, acesse e reinstale o add-on ack-arms-prometheus.