Alarm Assistant
Com base no Application Operations Management (AOM), o Alarm Assistant pode detectar prontamente falhas de cluster e gerar alarmes para ajudá-lo a manter a estabilidade do serviço. Alarm Assistant fornece regras de alarme incorporadas, que podem liberá-lo da configuração manual de regras de alarme no AOM. Essas regras são estabelecidas com base na extensa experiência de O&M de cluster de nossa equipe de contêineres da Huawei Cloud e podem cobrir exceções de serviços de contêineres, alarmes de métricas importantes de recursos básicos de cluster e alarmes de métrica de aplicações em um cluster para atender aos seus requisitos de O&M de rotina.
Restrições
- A versão do cluster deve ser v1.17 ou posterior.
- Somente contas da Huawei Cloud, HUAWEI IDs ou usuários do IAM com permissões CCE administrator ou FullAccess podem executar todas as operações usando Alarm Assistant. Os usuários do IAM com a permissão CCE ReadOnlyAccess só podem visualizar todos os recursos.
Obter permissões de recursos
Alarm Assistant trabalha em estreita colaboração com os serviços em nuvem para monitoramento de clusters, relatórios de alarmes e notificações. Quando você acessa o Alarm Assistant pela primeira vez, o Alarm Assistant e o AOM solicitam automaticamente permissões para acessar esses serviços de nuvem na região onde você executa suas aplicações.
Alarm Assistant obtém as seguintes permissões de serviço:
- Permissões do CCE
Alarm Assistant precisa acessar o CCE para obter informações sobre clusters, nós e cargas de trabalho para verificações de integridade.
- Permissões do SWR
Alarm Assistant precisa acessar o SWR para obter informações de imagem.
- Permissões somente leitura rm serviços de nuvem
Alarm Assistant precisa acessar o CCE para obter informações sobre recursos de computação, rede e armazenamento para verificações de integridade.
- Permissões somente leitura no IAM
Alarm Assistant precisa acessar o IAM para obter informações da agência.
Para obter detalhes sobre as permissões de serviço de nuvem solicitadas pelo AOM, consulte Autorização de serviço de nuvem do AOM.
Depois de concordar com a autorização, as agências são criadas automaticamente no IAM para delegar outras permissões de operação de recursos na sua conta para o CCE e AOM. Para obter detalhes sobre a agência, consulte Delegação do serviço de muvem. As agências criadas automaticamente no IAM são as seguintes:
- cia_admin_trust
- aom_admin_trust
A agência cia_admin_trust tem as permissões Tenant Guest e IAM ReadOnlyAccess em projetos globais, bem como as permissões Tenant Guest, CCE Administrator e SWR Administrator em projetos regionais. Essas permissões são exigidas pelo Alarm Assistant para acessar outros serviços em nuvem.
Para usar o Alarm Assistant em várias regiões, você precisa solicitar as permissões Tenant Guest, CCE Administrator e SWR Administrator em cada região. Você pode acessar o console do IAM, escolher Agencies e clicar em cia_admin_trust para exibir os registros de delegação de cada região.
O Alarm Assistant pode não funcionar normalmente se as permissões necessárias não forem atribuídas. Ao usar o Alarm Assistant, não exclua ou modifique a agência cia_admin_trust.
Para obter detalhes sobre a agência aom_admin_trust, consulte Autorização de serviço de nuvem do AOM.
Habilitar o Alarm Assistant
O Alarm Assistant pode ser habilitado para clusters do CCE e do CCE Turbo.
- Clique no nome do cluster de destino e escolha Alarm assistant no painel de navegação.
- Na guia Alarm Rules, clique em Enable. Na janela que desliza para fora da direita, selecione um ou mais grupos de contatos para gerenciar pontos de extremidade de assinatura e receber mensagens de alarme por grupo. Se nenhum grupo de contatos estiver disponível, crie um fazendo referência a Criar um grupo de contatos.
- Clique em OK.
As regras de alarme de métrica no Alarm Assistant dependem do complemento kube-prometheus-stack para relatar métricas para uma instância de Prometheus do AOM. Se você não tiver instalado este complemento no cluster ou conectado o complemento instalado a uma instância de Prometheus do AOM, não será possível criar regras de alarme de métrica usando o Alarm Assistant. Para obter detalhes sobre o complemento, consulte Monitoramento de cluster da nuvem nativa.
Configuração de regras de alarme
Depois que o Alarm Assistant estiver habilitado para clusters do CCE e do CCE Turbo, você poderá configurar e gerenciar regras de alarme.
- Efetue logon no console do CCE.
- Na página da lista de clusters, clique no nome do cluster de destino para ir para a página de detalhes.
- No painel de navegação, escolha Alarm assistant. Na página exibida, clique na guia Alarm Rules, na qual você pode configurar e gerenciar regras de alarme.
Por padrão, o assistente de alarme gera regras de alarme para contêineres. As regras são destinadas a alarmes, incluindo alarmes de eventos e alarmes métricos para exceções. As regras de alarme são classificadas em vários conjuntos. Você pode associar um conjunto de regras de alarme a vários grupos de contatos e ativar ou desativar itens de alarme. Um conjunto de regras de alarme consiste em várias regras de alarme. Uma regra de alarme corresponde aos itens de verificação para uma única exceção. Tabela 1 lista as regras de alarme padrão.
Tipo de regra |
Item de alarme |
Descrição |
Tipo de alarme |
PromQL |
---|---|---|---|---|
Carregar conjunto de regras |
Pod anormal |
Verifique se o pod está funcionando corretamente. |
Métrica |
sum(min_over_time(kube_pod_status_phase{phase=~"Pending|Unknown|Failed"}[10m]) and count_over_time(kube_pod_status_phase{phase=~"Pending|Unknown|Failed"}[10m]) > 18 )by (namespace,pod, phase, cluster_name, cluster) > 0 |
Reinicializações frequentes de pods |
Verifique se o pod é reiniciado com frequência. |
Métrica |
increase(kube_pod_container_status_restarts_total[5m]) > 3 |
|
Número inesperado de réplicas de Implementação |
Verifique se o número de réplicas de Implementação é o mesmo que o valor esperado. |
Métrica |
(kube_deployment_spec_replicas != kube_deployment_status_replicas_available ) and ( changes(kube_deployment_status_replicas_updated[5m]) == 0) |
|
Número inesperado de réplicas de StatefulSet |
Verifique se o número de réplicas de StatefulSet é igual ao valor esperado. |
Métrica |
(kube_statefulset_status_replicas_ready != kube_statefulset_status_replicas) and (changes(kube_statefulset_status_replicas_updated[5m]) == 0) |
|
Uso de CPU de contêiner superior a 80% |
Verifique se o uso da CPU do contêiner é maior que 80%. |
Métrica |
100 * (sum(rate(container_cpu_usage_seconds_total{image!="", container!="POD"}[1m])) by (cluster_name,pod,node,namespace,container, cluster) / sum(kube_pod_container_resource_limits{resource="cpu"}) by (cluster_name,pod,node,namespace,container, cluster)) > 80 |
|
Uso de memória de contêiner superior a 80% |
Verifique se o uso de memória do contêiner é maior que 80%. |
Métrica |
(sum(container_memory_working_set_bytes{image!="", container!="POD"}) BY (cluster_name, node,container, pod , namespace, cluster) / sum(container_spec_memory_limit_bytes > 0) BY (cluster_name, node, container, pod , namespace, cluster) * 100) > 80 |
|
Contêiner anormal |
Verifique se o contêiner está funcionando corretamente. |
Métrica |
sum by (namespace, pod, container, cluster_name, cluster) (kube_pod_container_status_waiting_reason) > 0 |
|
Falhou ao atualizar um balanceador de carga |
Verifique se um balanceador de carga está atualizado. |
Evento |
N/D |
|
Conjunto de regras de recursos de nó |
Alta utilização do PV do Kubernetes |
Verifique se o uso de PV em um nó é muito alto. |
Métrica |
(kubelet_volume_stats_available_bytes{job="kubelet"} / kubelet_volume_stats_capacity_bytes{job="kubelet"}) < 0.03 and kubelet_volume_stats_used_bytes{job="kubelet"} > 0 |
PVC de Kubernetes anormal |
Verifique se a PVC está funcionando corretamente. |
Métrica |
kube_persistentvolumeclaim_status_phase{phase=~"Failed|Pending|Lost"} > 0 |
|
PV de Kubernetes anormal |
Verifique se o PV está funcionando corretamente. |
Métrica |
kube_persistentvolume_status_phase{phase=~"Failed|Pending"} > 0 |
|
Uso da CPU do nó superior a 80% |
Verifique se o uso da CPU do nó é superior a 80%. |
Métrica |
100 - (avg by(node, cluster_name, cluster) (rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 80 |
|
Memória de nó disponível inferior a 10% |
Verifique se a memória de nó disponível é inferior a 10%. |
Métrica |
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10 |
|
Espaço em disco disponível no nó inferior a 10% |
Verifique se o espaço em disco disponível do nó é inferior a 10%. |
Métrica |
avg((node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes) by (device, node, cluster_name, cluster) < 10 |
|
Espaço em disco de nó insuficiente |
Verifique se o espaço em disco do nó é suficiente. |
Evento |
N/D |
|
Erro do pool de armazenamento emptyDir |
Verifique se o pool de armazenamento de EV do nó está funcional. |
Métrica |
problem_gauge{type="EmptyDirVolumeGroupStatusError"} >= 1 |
|
Memória de nó insuficiente |
Verifique se a memória geral do nó é suficiente. |
Métrica |
problem_gauge{type="MemoryProblem"} >= 1 |
|
Erro do pool de armazenamento de PV |
Verifique se o pool de armazenamento de PV do nó está funcional. |
Métrica |
problem_gauge{type="LocalPvVolumeGroupStatusError"} >= 1 |
|
Ponto de montagem do nó anormal |
Verifique se o ponto de montagem do nó está disponível. |
Métrica |
problem_gauge{type="MountPointProblem"} >= 1 |
|
Identificadores de arquivo de nó insuficientes |
Verifique se os identificadores do arquivo FD são suficientes. |
Métrica |
problem_gauge{type="FDProblem"} >= 1 |
|
Suspensão de I/O de nó de disco |
Verifique se a suspensão de I/O ocorre no disco do nó. |
Métrica |
problem_gauge{type="DiskHung"} >= 1 |
|
Disco de nó de somente leitura |
Verifique se o disco do nó é de somente leitura. |
Métrica |
problem_gauge{type="DiskReadonly"} >= 1 |
|
Disco de nó anormal |
Verifique o uso do disco do sistema do nó e dos discos de dados do CCE (incluindo discos lógicos de Docker e kubelet). |
Métrica |
problem_gauge{type="DiskProblem"} >= 1 |
|
I/O de disco de nó lenta |
Verifique se ocorre I/O lenta no disco de nó. |
Métrica |
problem_gauge{type="DiskSlow"} >= 1 |
|
PIDs de nó insuficientes |
Verifique se os PIDs são suficientes. |
Métrica |
problem_gauge{type="PIDProblem"} >= 1 |
|
Tabela de nó conntrack cheia |
Verifique se o espaço da tabela conntrack do nó é suficiente. |
Métrica |
problem_gauge{type="ConntrackFullProblem"} >= 1 |
|
Conjunto de regras de status do nó |
Erro de ResolvConf |
Verifique se o arquivo de configuração ResolvConf está disponível. |
Métrica |
problem_gauge{type="ResolvConfFileProblem"} >= 1 |
Componente CNI de nó anormal |
Verifique se o componente CNI do nó está sendo executado corretamente. |
Métrica |
problem_gauge{type="CNIProblem"} >= 1 |
|
Componente CRI de nó anormal |
Verifique a execução do componente importante CRI (Docker ou containerd). |
Métrica |
problem_gauge{type="CRIProblem"} >= 1 |
|
Erro do nó kube-proxy |
Verifique se o kube-proxy está funcionando corretamente. |
Métrica |
problem_gauge{type="KUBEPROXYProblem"} >= 1 |
|
Nó de kubelet anormal |
Verifique se o kubelet está funcionando corretamente. |
Métrica |
problem_gauge{type="KUBELETProblem"} >= 1 |
|
Evento programado no nó |
Verifique se há um evento agendado do host no nó. |
Métrica |
problem_gauge{type="ScheduledEvent"} >= 1 |
|
Status do nó instável |
Verifique se o status do nó alterna entre normal e anormal. |
Métrica |
sum(changes(kube_node_status_condition{status="true",condition="Ready"}[15m])) by (cluster_name, node, cluster) > 2 |
|
Reinicializações frequentes do nó containerd |
Verifique se o containerd é reiniciado com frequência. |
Métrica |
problem_gauge{type="FrequentContainerdRestart"} >= 1 |
|
Tarefa do nó suspensa |
Verifique se uma tarefa está suspensa no nó. |
Evento |
N/D |
|
Configuração incorreta do pool de armazenamento de nó |
Verifique se os pools de armazenamento de EV e PV do nó estão configurados corretamente. |
Evento |
N/D |
|
Nó anormal |
Verifique se o nó está funcionando corretamente. |
Evento |
N/D |
|
Processo de nó D anormal |
Verifique se há um processo de estado D no nó. |
Métrica |
problem_gauge{type="ProcessD"} >= 1 |
|
Processo do nó Z anormal |
Verifique se há um processo de estado Z no nó. |
Métrica |
problem_gauge{type="ProcessZ"} >= 1 |
|
Reinicializações frequentes da CRI do nó |
Verifique se a CRI é reiniciada com frequência. |
Métrica |
problem_gauge{type="FrequentCRIRestart"} >= 1 |
|
Reinicializações frequentes do nó Docker |
Verifique se o Docker é reiniciado com frequência. |
Métrica |
problem_gauge{type="FrequentDockerRestart"} >= 1 |
|
Reinicializações frequentes do nó kubelet |
Verifique se o kubelet é reiniciado com frequência. |
Métrica |
problem_gauge{type="FrequentKubeletRestart"} >= 1 |
|
Erro do serviço NTP do nó |
Verifique se o serviço de sincronização de relógio de nó ntpd ou chronyd está sendo executado corretamente. |
Métrica |
problem_gauge{type="NTPProblem"} >= 1 |
|
Processos interrompidos forçadamente devido à OOM do nó |
Verifique se ocorreu um evento OOM no nó. |
Evento |
N/D |
|
Conjunto de regras de dimensionamento de nó |
Pool de nó esgotado |
Verifique se os recursos do pool de nó são suficientes. |
Evento |
N/D |
Expansão expirou o tempo limite |
Verifique se a expansão de nós ao pool de nós expirou o tempo limite. |
Evento |
N/D |
|
Falhou na expansão do pool de nós |
Verifique se ocorreu um erro durante uma expansão do pool de nós. |
Evento |
N/D |
|
Falhou na redução do pool de nós |
Verifique se ocorreu um erro durante uma redução do pool de nós. |
Evento |
N/D |
|
Conjunto de regras de status do cluster |
Cluster indisponível |
Verifique se o cluster está disponível. |
Evento |
N/D |
Criar um grupo de contatos
Um grupo de contatos, apoiado em Simple Message Notification, permite que editores de mensagens e assinantes entrem em contato. Um grupo de contatos contém um ou mais pontos de extremidade. Você pode configurar grupos de contatos para gerenciar pontos finais que assinaram mensagens de alarme. Depois de criar um grupo de contatos, associe o conjunto de regras de alarme ao grupo. Quando um alarme é acionado, os pontos de extremidade de assinatura no grupo de contatos podem receber as mensagens de alarme.
- Efetue logon no console do CCE.
- Na página da lista de clusters, clique no nome do cluster de destino para ir para a página de detalhes.
- Escolha Alarm assistant no painel de navegação e clique na guia Contact Group.
- Clique em Create Contact Group e configure parâmetros.
- Contact Group Name: digite o nome do grupo de contatos, que não pode ser alterado após a criação do grupo de contatos. O nome do modelo pode conter de 1 a 255 caracteres e deve começar com uma letra ou dígito. Somente letras, dígitos, hifens (-) e sublinhados (_) são permitidos.
- Alarm message display name: digite o título da mensagem recebida pelo ponto de extremidade de assinatura especificado. Por exemplo, se você definir Terminal Type para Email e especificar um nome de exibição, o nome que você especificou será exibido como o remetente da mensagem de alarme. Se você não especificar Alarm message display name, o remetente será username@example.com. O nome de exibição de uma mensagem de alarme pode ser alterado após a criação do grupo de contatos.
- Add Subscription Terminal: adicione um ou mais pontos de extremidade para receber mensagens de alarme. O tipo de ponto de extremidade pode ser SMS ou Email. Se você selecionar SMS, insira um número de celular válido. Se selecionar Email, introduza um endereço de e-mail válido.
- Clique em OK.
Você será redirecionado para a lista de grupos de contatos. O ponto de extremidade da assinatura está no estado Unconfirmed. Envie uma solicitação de assinatura ao ponto de extremidade para verificar a validade do ponto de extremidade.
- Clique em Request Confirmation na coluna Operation para enviar uma solicitação de assinatura ao ponto de extremidade. Se o ponto de extremidade receber a solicitação, confirme a solicitação conforme solicitado. Após a conclusão da confirmação, o ponto de extremidade da assinatura muda para Confirmed.
- Clique em para habilitar o grupo de contatos para que o grupo de contatos seja vinculado ao conjunto de regras de alarme.
Um conjunto de regras de alarme pode ser vinculado a um máximo de cinco grupos de contatos.
Visualizar alarmes
Você pode ver os últimos alarmes históricos na guia Alarm list.
- Efetue logon no console do CCE.
- Na página da lista de clusters, clique no nome do cluster de destino para ir para a página de detalhes.
- No painel de navegação, escolha Alarm assistant. Na página exibida, clique na guia Alarm list.
Por padrão, todos os alarmes a serem apagados são exibidos na lista. Você pode consultar alarmes por palavra-chave do alarme, gravidade do alarme ou hora do alarme. Além disso, você pode visualizar a distribuição de alarmes que atendem aos critérios especificados em diferentes períodos.
Se você confirmar que um alarme foi manipulado, clique em Clear na coluna Operation. Depois que o alarme for apagado, você poderá visualizá-lo na lista de alarmes históricos.
Figura 1 Consultar alarmes