Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O monitoramento do Kubernetes no Azure Monitor descreve os serviços do Azure Monitor usados para fornecer monitoramento completo do ambiente do Kubernetes e das cargas de trabalho executadas nele. Este artigo fornece as práticas recomendadas de como aproveitar esses serviços para monitorar as diferentes camadas do seu ambiente do Kubernetes com base nas funções típicas que os gerenciam.
Veja a seguir uma ilustração de um modelo comum de um ambiente típico do Kubernetes, começando da camada de infraestrutura por meio de aplicativos. Cada camada tem requisitos de monitoramento distintos que são abordados por diferentes serviços e normalmente gerenciados por diferentes funções na organização.
A responsabilidade pelas diferentes camadas de um ambiente de Kubernetes e pelos aplicativos que dependem dele geralmente é atribuída a várias funções. Dependendo do tamanho da sua organização, essas funções podem ser executadas por pessoas diferentes ou até mesmo equipes diferentes. A tabela a seguir descreve as diferentes funções, enquanto as seções abaixo fornecem os cenários de monitoramento que cada um deles normalmente encontrará.
| Funções | Descrição |
|---|---|
| Desenvolvedor | Desenvolva e mantenha o aplicativo em execução no cluster. Responsável pelo tráfego específico do aplicativo, incluindo o desempenho do aplicativo e falhas. Mantém a confiabilidade do aplicativo de acordo com os SLAs. |
| Engenheiro de plataforma | Responsável pelo cluster do Kubernetes. Provisiona e mantém a plataforma usada pelo desenvolvedor. |
| Engenheiro de rede | Responsável pelo tráfego entre cargas de trabalho e qualquer entrada/saída com o cluster. Analisa o tráfego de rede e executa a análise de ameaças. |
Engenheiro de rede
O engenheiro de Rede é responsável pelo tráfego entre cargas de trabalho e qualquer entrada/saída com o cluster. Eles analisam o tráfego de rede e executam a análise de ameaças.
Nível de monitor 1: Rede
A seguir estão cenários comuns para monitorar a rede.
- Crie logs de fluxo com o Observador de Rede para registrar informações sobre o tráfego IP que passa pelos grupos de segurança de rede usados pelo seu cluster e, em seguida, utilize a análise de tráfego para examinar e obter insights sobre esses dados. Utilize o mesmo espaço de trabalho do Log Analytics para análise de tráfego que você já utiliza para os seus logs de contêiner e logs de plano de controle.
- Usando a análise de tráfego, determine se algum tráfego está fluindo de ou para quaisquer portas inesperadas usadas pelo cluster e também se algum tráfego está fluindo por IPs públicos que não devem ser expostos. Use essas informações para determinar se suas regras de rede precisam de modificação.
- Para clusters do AKS, use o complemento Observabilidade de Rede para AKS (prévia) para monitorar e observar o acesso entre serviços no cluster (tráfego leste-oeste).
Engenheiro de plataforma
O engenheiro de plataforma, também conhecido como administrador de cluster, é responsável pelo próprio cluster do Kubernetes. Eles provisionam e mantêm a plataforma usada pelos desenvolvedores. Eles precisam entender a integridade do cluster e seus componentes e ser capazes de solucionar problemas detectados. Eles também precisam entender o custo para operar o cluster e, potencialmente, poder alocar custos para equipes diferentes.
Grandes organizações também podem ter um arquiteto de frota, que é semelhante ao engenheiro de plataforma, mas é responsável por vários clusters. Eles precisam de visibilidade em todo o ambiente e devem executar tarefas administrativas em escala. As recomendações em escala estão incluídas nas diretrizes abaixo. Confira O que é o Gerenciador de Frota de Kubernetes do Azure? para obter detalhes sobre como criar um recurso de frota para cenários de vários clusters e em escala.
Configurar o monitoramento para engenheiro de plataforma
As seções abaixo identificam as etapas de monitoramento do ambiente do Kubernetes usando os serviços do Azure nos níveis de contêiner. As opções de funcionalidade e integração são fornecidas para cada um para ajudá-lo a determinar onde talvez seja necessário modificar essa configuração para atender aos seus requisitos específicos. A integração do Prometheus Gerenciado e do log de contêineres pode fazer parte da mesma experiência descrita em Habilitar o monitoramento para clusters do Kubernetes. As seções a seguir descreveram cada uma separadamente para que você possa considerar todas as opções de integração e configuração para cada uma delas.
Configurar a extração de métricas do Prometheus
Importante
Para utilizar o serviço gerenciado do Azure Monitor para o Prometheus, é necessário ter um workspace do Azure Monitor. Para obter informações sobre considerações de design para uma configuração de espaço de trabalho, consulte Arquitetura de espaço de trabalho do Azure Monitor.
Habilite a extração de métricas do Prometheus pelo serviço gerenciado do Azure Monitor para Prometheus do cluster quando ele for criado ou adicione essa funcionalidade a um cluster existente. Consulte Habilitar métricas do Prometheus para obter detalhes.
Se você já tiver um ambiente prometheus que deseja usar para seus clusters do AKS, habilite o serviço gerenciado do Azure Monitor para Prometheus e, em seguida, use a gravação remota para enviar dados para seu ambiente existente do Prometheus. Você também pode usar a gravação remota para enviar dados de seu ambiente do Prometheus autogerenciado existente para o serviço gerenciado do Azure Monitor para Prometheus.
Consulte Configuração de métricas padrão do Prometheus no Azure Monitor para obter detalhes sobre as métricas coletadas por padrão e a frequência da coleção. Se você quiser personalizar a configuração, consulte Personalizar a extração de métricas do Prometheus no serviço gerenciado do Azure Monitor para Prometheus.
Habilitar o Grafana para análise de dados do Prometheus
Observação
Os painéis do Azure Monitor com o Grafana estão atualmente em versão prévia pública e podem substituir o Grafana Gerenciado. Esta versão do Grafana não tem custo, não requer nenhuma configuração e apresenta painéis no portal do Azure. Use o Grafana Gerenciado se você quiser criar painéis que combinem dados de várias fontes de dados ou se quiser se integrar a um ambiente existente do Grafana.
Crie uma instância do Grafana Gerenciado e vincule-a ao workspace do Azure Monitor para que você possa usar seus dados do Prometheus como uma fonte de dados. Você também pode realizar essa configuração manualmente usando adicionar o serviço gerenciado do Azure Monitor para Prometheus como fonte de dados. Uma variedade de painéis predefinidos estão disponíveis para monitorar clusters do Kubernetes, incluindo vários que apresentam informações semelhantes como exibições dos Insights de contêiner.
Se você tiver um ambiente do Grafana existente, poderá continuar a usá-lo e adicionar o serviço gerenciado do Azure Monitor para o Prometheus como uma fonte de dados. Você também pode adicionar a fonte de dados do Azure Monitor ao Grafana para usar dados coletados por insights de contêiner em painéis personalizados do Grafana. Execute essa configuração se quiser se concentrar nos painéis do Grafana em vez de usar os relatórios e exibições dos Insights do Contêiner.
Habilitar a coleta de logs de contêiner
Importante
Para usar o serviço gerenciado do Azure Monitor para Prometheus, você precisa ter um Log Analytics workspace. Para obter informações sobre considerações de design para uma configuração de espaço de trabalho, consulte Arquitetura de espaço de trabalho do Azure Monitor.
Quando você habilita a coleta de logs de contêiner para o cluster do Kubernetes, o Azure Monitor implanta uma versão containerizada do agente do Azure Monitor que envia stdout/stderr e logs de infraestrutura para um workspace do Log Analytics no Azure Monitor, onde eles podem ser analisados usando a Linguagem de Consulta Kusto (KQL).
Consulte Habilitar o monitoramento de clusters do AKS para pré-requisitos e opções de configuração para integrar seus clusters do Kubernetes. Integrar usando o Azure Policy para garantir que todos os clusters mantenham uma configuração consistente.
Depois que o log de contêiner estiver habilitado para um cluster, execute as ações a seguir para otimizar sua instalação.
- Se você usar apenas logs para solução de problemas ocasionais, considere configurar essa tabela como logs básicos.
- Use as predefinições de custo descritas em Habilitar configurações de otimização de custo nos insights de contêiner para reduzir o custo da ingestão de dados de insights de contêiner, reduzindo a quantidade de dados coletados. Desabilite a coleta de métricas configurando insights de contêiner para coletar somente logs e eventos, uma vez que muitos dos valores das métricas são os mesmos que os do Prometheus.
Se você tiver uma solução existente para coleta de logs, siga as diretrizes para essa ferramenta ou habilite a coleta de logs com o Azure Monitor e use o recurso de exportação de dados do workspace do Log Analytics para enviar dados aos Hubs de Eventos do Azure para encaminhar para sistemas alternativos.
Coletar logs do painel de controle para clusters do AKS
Os logs dos componentes do plano de controle do AKS são implementados no Azure como logs de recursos. Crie uma configuração de diagnóstico para que cada cluster do AKS envie os logs de recursos para um workspace do Log Analytics. Use o Azure Policy para garantir uma configuração consistente em vários clusters.
Há um custo para enviar registros de recursos para um workspace; por isso, você deve coletar apenas as categorias de registros que pretende usar. Para obter uma descrição das categorias disponíveis para o AKS, consulte Logs de recursos. Comece coletando um número mínimo de categorias, depois modifique a configuração de diagnóstico para coletar categorias adicionais à medida que suas necessidades aumentam e conforme você entende os custos associados. Você pode enviar logs para uma conta de armazenamento do Azure a fim de reduzir custos se precisar manter as informações. Para obter detalhes sobre o custo de ingestão e retenção de dados de log, consulte Detalhes de preços dos Logs do Azure Monitor.
Caso não tenha certeza sobre quais logs de recursos habilitar inicialmente, use as seguintes recomendações, que se baseiam nos requisitos mais comuns dos clientes. Você pode habilitar outras categorias posteriormente, se necessário.
| Categoria | Habilitar? | Destino |
|---|---|---|
| kube-apiserver | Habilitar | espaço de trabalho do Log Analytics |
| kube-audit | Habilitar | Armazenamento do Azure. Isso mantém os custos no mínimo, mas mantém os logs de auditoria caso eles sejam requeridos por um auditor. |
| kube-audit-admin | Habilitar | espaço de trabalho do Log Analytics |
| kube-controller-manager | Habilitar | espaço de trabalho do Log Analytics |
| kube-scheduler | Desabilitar | |
| cluster-autoscaler | Habilitar se o dimensionamento automático estiver habilitado | espaço de trabalho do Log Analytics |
| proteção | Habilitar se o Microsoft Entra ID estiver habilitado | espaço de trabalho do Log Analytics |
| AllMetrics | Desabilitar uma vez que as métricas são coletadas no Prometheus Gerenciado | espaço de trabalho do Log Analytics |
Se você tiver uma solução existente para coleta de logs, siga as diretrizes dessa ferramenta ou habilite a coleta de logs com o Azure Monitor e use o recurso de exportação de dados do workspace do Log Analytics para enviar dados para o hub de eventos do Azure para encaminhar para um sistema alternativo.
Coletar log de atividades para clusters do AKS
As alterações de configuração nos clusters do AKS são armazenadas no log de atividades. Crie uma configuração de diagnóstico para enviar esses dados ao workspace do Log Analytics para analisá-los com outros dados de monitoramento. Não há nenhum custo para essa coleta de dados e você pode analisar ou alertar sobre os dados usando o Log Analytics.
Monitorar o nível 2 - Componentes do nível de cluster
O nível do cluster inclui o componente a seguir:
| Componente | Requisitos de monitoramento |
|---|---|
| Node | Conheça o status de preparação e o desempenho da CPU, da memória, do disco e uso de IP para cada nó e monitore proativamente as tendências de uso deles antes de implantar uma carga de trabalho. |
A seguir estão cenários comuns para monitorar os componentes de nível de cluster.
Portal do Azure
- Use o painel de monitoramento unificado no portal do Azure para ver o desempenho dos nós em seu cluster, incluindo a utilização da CPU e da memória.
- Use a exibição Nós para ver a integridade de cada nó e a integridade e o desempenho dos pods em execução neles. Para obter mais informações sobre como analisar a integridade e o desempenho do nó, consulte Analisar o desempenho do cluster do Kubernetes no portal do Azure.
- Em Relatórios, use as pastas de trabalho Monitoramento de nó para analisar a capacidade do disco, a E/S do disco e o uso de GPU. Para obter mais informações sobre essas pastas de trabalho, consulte Pastas de trabalho de monitoramento de nós.
- Em Monitoramento, selecione Workbooks e, em seguida, Uso de IP da Sub-rede para ver a alocação e a atribuição de IP em cada nó para um intervalo de tempo selecionado.
Painéis do Grafana
- Use o painel predefinido no Grafana Gerenciado para Kubelet para ver a integridade e o desempenho de cada um.
- Use painéis do Grafana com valores de métrica do Prometheus relacionados ao disco, como
node_disk_io_time_seconds_totalewindows_logical_disk_free_bytespara monitorar o armazenamento anexado. - Vários dashboards do Kubernetes estão disponíveis que visualizam o desempenho e a integridade dos nós com base nos dados armazenados no Prometheus.
Log Analytics
- Selecione a categoria Contêineres na caixa de diálogo consultas do workspace do Log Analytics para acessar consultas de log predefinidas para seu cluster, incluindo a consulta de log de inventário de imagens que recupera dados da tabela ContainerImageInventory preenchida pelos insights de contêiner.
Solução de problemas
- Para cenários de solução de problemas, pode ser necessário acessar os nós diretamente para manutenção ou coleta imediata de logs. Para fins de segurança, os nós do AKS não são expostos à Internet, mas você pode usar o comando
kubectl debugpara SSH para os nós do AKS. Para obter mais informações sobre esse processo, confira Conectar SSH aos nós de cluster do AKS (Serviço de Kubernetes do Azure) para manutenção ou solução de problemas.
Análise de custo
- Configure o OpenCost, que é um projeto de área restrita CNCF de código aberto e neutro para entender os custos do Kubernetes, para dar suporte à análise dos custos do seu cluster. Ele exporta dados de custo detalhados para o armazenamento do Azure.
- Use dados do OpenCost para detalhar o uso relativo do cluster por equipes diferentes em sua organização para que você possa alocar o custo entre cada um.
- Use dados do OpenCost para garantir que o cluster esteja usando a capacidade total de seus nós empacotando cargas de trabalho densamente, usando menos nós grandes em vez de muitos nós menores.
Monitorar o nível 3: componentes do Kubernetes gerenciado
O nível do Kubernetes gerenciado inclui os componentes a seguir:
| Componente | Monitoramento |
|---|---|
| Servidor de API | Monitore o status do servidor da API e identifique qualquer aumento na carga de solicitação e gargalos se o serviço estiver inoperante. |
| Kubelet | Monitore o Kubelet para ajudar na solução de problemas de gerenciamento de pods, como pods que não iniciam, nós não prontos ou pods sendo encerrados. |
A seguir estão cenários comuns para monitorar seus componentes do Kubernetes gerenciado.
Portal do Azure
- Use o gerenciador de métricas para exibir o contador Solicitações de Inflight para o cluster.
- Use a pasta de trabalho do Kubelet para ver a integridade e o desempenho de cada kubelet.
Grafana
- Use o painel predefinido no Grafana Gerenciado para Kubelet para ver a integridade e o desempenho de cada kubelet.
- Use um dashboard como o apiserver do Kubernetes para obter uma exibição completa do desempenho do servidor de API. Isso inclui valores como latência da solicitação e tempo de processamento da fila de trabalho.
Log Analytics
Use consultas de logs com logs de recursos para analisar logs de plano de controle gerados por componentes do AKS.
Todas as atividades de configuração do AKS são registradas no log de atividades. Ao enviar o log de atividades para um workspace do Log Analytics, você pode analisá-lo com o Log Analytics. Por exemplo, a consulta de exemplo a seguir pode ser usada para retornar registros que identificam uma atualização bem-sucedida em todos os clusters do AKS.
AzureActivity | where CategoryValue == "Administrative" | where OperationNameValue == "MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/WRITE" | extend properties=parse_json(Properties_d) | where properties.message == "Upgrade Succeeded" | order by TimeGenerated desc
Solução de problemas
- Para cenários de solução de problemas, você pode acessar logs do kubelet usando o processo descrito em Obter logs do kubelet de nós de cluster do AKS (Serviço de Kubernetes do Azure).
Monitorar o nível 4: objetos e cargas de trabalho do Kubernetes
Os objetos do Kubernetes e os níveis de carga de trabalho incluem os componentes a seguir:
| Componente | Requisitos de monitoramento |
|---|---|
| Implantações | Monitore o estado real vs. desejado da implantação e o status e a utilização de recursos dos pods sendo executados neles. |
| Cápsulas | Monitore o status e a utilização de recursos, incluindo a CPU e a memória, dos pods que estão sendo executados no seu cluster AKS. |
| Contêineres | Monitore a utilização de recursos, incluindo a CPU e a memória, dos contêineres sendo executados no cluster do AKS. |
A seguir estão cenários comuns para monitorar seus objetos e cargas de trabalho do Kubernetes.
Portal do Azure
- Use as exibições Nós e Controladores para ver a integridade e o desempenho dos pods em execução no cluster e para analisar detalhadamente a integridade e o desempenho de seus contêineres.
- Use a exibição Contêineres para ver a integridade e o desempenho dos contêineres. Para obter mais informações sobre como analisar a integridade e o desempenho do contêiner, consulte Analyze Kubernetes cluster data with Container insights.
- Use o painel de Implantações para ver as métricas de implantação. Para obter mais informações, consulte Implantação e métricas de HPA com o Insights de Contêiner.
Painéis do Grafana
- Use os painéis predefinidos no Grafana Gerenciado para Nós e Pods para exibir sua integridade e desempenho.
- Vários dashboards do Kubernetes estão disponíveis que visualizam o desempenho e a integridade dos nós com base nos dados armazenados no Prometheus.
Dados reais
- Em cenários de solução de problemas, os Insights de contêiner fornecem acesso aos logs de contêiner do AKS em tempo real (stdout/stderror), eventos e métricas do pod. Para obter mais informações sobre esse recurso, confira Como exibir logs, eventos e métricas de pods do Kubernetes em tempo real.
Alertas para o engenheiro de plataforma
Os Alertas no Azure Monitor notificam você proativamente a respeito de dados e padrões interessantes em seus dados de monitoramento. Eles permitem que você identifique e resolva problemas no seu sistema antes que os clientes os percebam. Se você tiver uma solução ITSM existente para alertas, poderá integrá-la ao Azure Monitor. Você também pode exportar dados do workspace do Log Analytics para enviá-los a outro local que dê suporte à sua solução de alerta atual.
Tipos de alerta
A tabela a seguir descreve os diferentes tipos de regras de alerta personalizadas que você pode criar com base nos dados coletados pelos serviços descritos acima.
| Tipo de Alerta | Descrição |
|---|---|
| Alertas do Prometheus | Os alertas do Prometheus são escritos em Prometheus Query Language (Prom QL) e aplicados nas métricas do Prometheus armazenadas nos serviços gerenciados do Azure Monitor para o Prometheus. Os alertas recomendados já incluem os alertas mais comuns do Prometheus e você pode criar regras de alerta de adição conforme necessário. |
| Regras de alerta de métrica | As regras de alerta de métrica usam os mesmos valores de métrica do Metrics Explorer. Na verdade, você pode criar uma regra de alerta diretamente do Metrics Explorer com os dados que estiver analisando no momento. As regras de alerta de métrica podem ser úteis para alertar sobre o desempenho do AKS usando qualquer um dos valores nas métricas de referência de dados do AKS. |
| Regras de alerta de pesquisa de log | Use regras de alerta de consulta de log para gerar um alerta a partir dos resultados de uma consulta de log. Para obter mais informações, consulte Como criar alertas de pesquisa de logs do Container Insights e Como consultar logs do Container Insights. |
Alertas recomendados
Comece com um conjunto de alertas recomendadas do Prometheus das regras de alerta de métrica em Insights de contêiner (versão prévia) que incluem as condições de alerta mais comuns para um cluster do Kubernetes. Você pode adicionar mais regras de alerta mais tarde à medida que identifica condições de alerta adicionais.
Desenvolvedor
Além de desenvolver o aplicativo, o desenvolvedor mantém o aplicativo em execução no cluster. Eles são responsáveis pelo tráfego específico do aplicativo, incluindo o desempenho e as falhas do aplicativo e mantêm a confiabilidade do aplicativo de acordo com os SLAs definidos pela empresa.
Monitorar o nível 5: aplicativo
Implemente a Distribuição do OpenTelemetry do Azure Monitor para habilitar as experiências do Application Insights e configurar a amostragem para controlar os custos.
Experiências do Application Insights
- Verifique o painel de visão geral para obter uma avaliação rápida da integridade e do desempenho do aplicativo.
- Exiba métricas dinâmicas para obter informações em tempo real sobre a atividade e o desempenho do aplicativo.
- Investigue falhas, desempenho e transações para diagnosticar a integridade e a eficiência do aplicativo.
- Use o mapa do aplicativo para obter uma visão geral visual da arquitetura do aplicativo e das interações de componente.
- Crie testes padrão para monitorar a disponibilidade do aplicativo.
Logs de aplicativo
- Os Insights de contêiner enviam logs stdout/stderr para um workspace do Log Analytics. Consulte os Logs de recursos para obter uma descrição dos diferentes logs e Serviços do Kubernetes para obter uma lista das tabelas para as quais cada uma é enviada.
Malha de serviço
- Para clusters AKS, implante o complemento de malha de serviços baseado em Istio que fornece observabilidade à arquitetura de microsserviços. O Istio é uma malha de serviço de código aberto que se sobrepõe de forma transparente aos aplicativos distribuídos existentes. O complemento auxilia na implantação e no gerenciamento do Istio para AKS.
Confira também
- Consulte Habilitar o monitoramento de clusters do Kubernetes para habilitar o Managed Prometheus e a coleção de logs em seu cluster.