Este documento descreve como configurar a implementação do Google Kubernetes Engine para que possa usar o Google Cloud Managed Service for Prometheus para recolher métricas do Istio. Este documento mostra como fazer o seguinte:
- Configure o Istio para comunicar métricas.
- Aceda a um painel de controlo predefinido no Cloud Monitoring para ver as métricas.
- Configure regras de alerta para monitorizar as métricas.
Estas instruções aplicam-se apenas se estiver a usar a recolha gerida com o serviço gerido para Prometheus. Se estiver a usar a recolha implementada automaticamente, consulte o repositório de origem para o Istio para obter informações de instalação.
Estas instruções são fornecidas como exemplo e espera-se que funcionem na maioria dos ambientes do Kubernetes. Se estiver com problemas na instalação de uma aplicação ou de um exportador devido a políticas organizacionais ou de segurança restritivas, recomendamos que consulte a documentação de código aberto para receber apoio técnico.
Para obter informações sobre o Istio, consulte o artigo Istio.
Pré-requisitos
Para recolher métricas do Istio através do Managed Service for Prometheus e da recolha gerida, a sua implementação tem de cumprir os seguintes requisitos:
- O cluster tem de estar a executar a versão 1.28.15-gke.2475000 ou posterior do Google Kubernetes Engine.
- Tem de estar a executar o Managed Service for Prometheus com a recolha gerida ativada. Para mais informações, consulte o artigo Comece a usar a recolha gerida.
O Istio expõe automaticamente métricas no formato Prometheus. Não tem de o instalar separadamente. Pode executar as seguintes verificações para confirmar que o Istio Proxy foi injetado como um sidecar e que o Istiod, o plano de controlo do Istio, e o Istio Proxy estão a emitir métricas nos pontos finais esperados.
Para determinar se o proxy Istio é injetado como um sidecar, execute o seguinte comando, que enumera os contentores em execução nos pods da aplicação:
kubectl get pod -l app=APPLICATION_NAME -n NAMESPACE_NAME -o jsonpath='{.items[0].spec.containers[*].name}'
Se vir que os pods contêm o contentor
istio
sidecar, significa que o exportador foi injetado. Se o sidecar não for injetado, siga as instruções em Istio: Installing the sidecar (Istio: instalar o sidecar).Para verificar se as métricas estão a ser emitidas pelo proxy Istio, execute o seguinte comando, que inspeciona o ponto final
/stats/prometheus
doistio
no pod especificado:kubectl exec POD_NAME -n NAMESPACE_NAME -c istio-proxy -- curl -sS 'localhost:15090/stats/prometheus'
Se vir métricas do Prometheus
istio_*
eenvoy_*
não processadas, significa que as métricas estão a ser emitidas corretamente.Para verificar se as métricas estão a ser emitidas de forma semelhante no Istiod, execute o seguinte comando, que inspeciona o ponto final
/metrics
do Istiod num dos pods na implementaçãoistiod
:kubectl exec -n istio-system deployment/istiod -- curl -sS 'localhost:15014/metrics'
Defina um recurso PodMonitoring
Para a deteção de destinos, o operador do Managed Service for Prometheus requer um recurso PodMonitoring que corresponda ao Istio no mesmo espaço de nomes.
Pode usar a seguinte configuração PodMonitoring:
O Istio requer dois recursos PodMonitoring separados: Um que monitoriza o Istiod e outro que monitoriza os sidecars do Istio Proxy e os gateways de entrada e saída. Para monitorizar as métricas do Istio Proxy em todos os namespaces no cluster de uma só vez, aplique oistio-proxy
PodMonitoring a todos os namespaces ou configure um recurso ClusterPodMonitoring em vez de um recurso PodMonitoring por namespace.
Se planeia usar os painéis de controlo do Grafana fornecidos pelo Istio, além dos recursos PodMonitoring descritos neste documento, certifique-se de que também configurou a extração de dados do cAdvisor e do Kubelet.
Para aplicar alterações de configuração a partir de um ficheiro local, execute o seguinte comando:
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
Também pode usar o Terraform para gerir as suas configurações.
Defina regras e alertas
Pode usar a seguinte configuração Rules
para definir
alertas nas suas métricas do Istio:
Para aplicar alterações de configuração a partir de um ficheiro local, execute o seguinte comando:
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
Também pode usar o Terraform para gerir as suas configurações.
Para mais informações sobre a aplicação de regras ao seu cluster, consulte o artigo Avaliação e alertas de regras geridas.
Esta configuraçãoRules
foi adaptada das
regras do Istio fornecidas por
Awesome Prometheus Alerts.
Pode ajustar os limites de alerta de acordo com a sua aplicação.
Valide a configuração
Pode usar o Explorador de métricas para verificar se configurou corretamente o Istio. O Cloud Monitoring pode demorar um ou dois minutos a carregar as suas métricas.
Para verificar se as métricas são carregadas, faça o seguinte:
-
Na Google Cloud consola, aceda à página leaderboard Explorador de métricas:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Na barra de ferramentas do painel do criador de consultas, selecione o botão cujo nome é code MQL ou code PromQL.
- Verifique se a opção PromQL está selecionada no botão Idioma. O botão para alternar o idioma encontra-se na mesma barra de ferramentas que lhe permite formatar a consulta.
- Introduza e execute a seguinte consulta:
sum(istio_build{cluster="CLUSTER_NAME"}) by (component)
Veja painéis de controlo
A integração do Cloud Monitoring inclui o painel de controlo Vista geral do Istio Envoy Prometheus. Os painéis de controlo são instalados automaticamente quando configura a integração. Também pode ver pré-visualizações estáticas de painéis de controlo sem instalar a integração.
Para ver um painel de controlo instalado, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Painéis de controlo:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Selecione o separador Lista de painéis de controlo.
- Escolha a categoria Integrações.
- Clique no nome do painel de controlo, por exemplo, Vista geral do Istio Envoy Prometheus.
Para ver uma pré-visualização estática do painel de controlo, faça o seguinte:
-
Na Google Cloud consola, aceda à página
Integrações:
Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.
- Clique no filtro de plataforma de implementação Kubernetes Engine.
- Localize a integração do Istio e clique em Ver detalhes.
- Selecione o separador Painéis de controlo.
Resolução de problemas
Para informações sobre a resolução de problemas de carregamento de métricas, consulte Problemas com a recolha de exportadores em Resolução de problemas do lado do carregamento.