Como Configurar o Istio, Prometheus e Grafana para Monitoramento

Introdução à Observabilidade do Istio Usando Prometheus

Malha de serviços Istio abstrai a rede das camadas de aplicação usando proxies de lado. Você pode implementar políticas de segurança e redes avançadas em toda a comunicação em sua infraestrutura usando o Istio.

Mas outra característica importante do Istio é a observabilidade. Você pode usar o Istio para observar o desempenho e o comportamento de todos os seus microsserviços em sua infraestrutura (veja a imagem abaixo). Uma das principais responsabilidades dos engenheiros de confiabilidade do site (SREs) em grandes organizações é monitorar as métricas douradas de suas aplicações, como utilização de CPU, utilização de memória, latência e throughput.

Neste artigo, discutiremos como os SREs podem se beneficiar da integração de três softwares de código aberto – Istio, Prometheus e Grafana. Enquanto Istio é o software de serviço mais famoso, Prometheus é o software de monitoramento mais amplamente utilizado, e Grafana é a ferramenta de visualização mais famosa.

Nota: Os passos foram testados para o Istio 1.17.X

Assista ao Vídeo de Configuração do Istio, Prometheus e Grafana

Assista ao vídeo se você deseja seguir os passos a partir do vídeo:

Passo 1: Vá para os Add-Ons do Istio e Aplique o Arquivo YAML do Prometheus e Grafana

Primeiro, vá para a pasta de add-ons no diretório do Istio usando o comando. Já que estou usando o 1.17.1, o caminho para mim é istio-1.17.1/samples/addons

Você notará que o Istio já fornece alguns arquivos YAML para configurar o Grafana, Prometheus, Jaeger, Kiali, etc. Você pode configurar o Prometheus usando o seguinte comando:

Shell

 

kubectl apply -f prometheus.yaml
Shell

 

kubectl apply -f grafana.yaml

Observe que esses arquivos YAML de complemento são aplicados ao namespace istio-system por padrão. 


Passo 2: Implantar Novo Serviço e Encaminhar Portas do Gateway de Entrada do Istio

Para experimentar o modelo de trabalho, implantaremos o serviço httpbin em um namespace habilitado para Istio. Criaremos um objeto do gateway de entrada do Istio para receber o tráfego para o serviço do público. 

Também encaminharemos as portas do gateway de entrada do Istio para uma porta específica – 7777. 


Você deve ver a seguinte tela em localhost:7777


Passo 3: Abrir o Painel do Prometheus e do Grafana

Você pode abrir o painel do Prometheus usando o seguinte comando.

Shell

 

istioctl dashboard prometheus
Shell

 

istioctl dashboard grafana

Ambos o Grafana e o Prometheus serão abertos no localhost. 


Passo 4: Fazer Requisições HTTP pelo Postman

Veremos como o serviço httpbin está consumindo CPU ou memória quando há uma carga de tráfego. Criaremos algumas requisições GET e POST para o localhost:7777 a partir do aplicativo Postman.


Uma vez que você GET ou POST solicitações ao serviço httpbin várias vezes, haverá utilização de recursos, que podemos ver no Grafana. Mas, inicialmente, precisamos configurar as métricas para o serviço httpbin no Prometheus e Grafana. 

Passo 5: Configurando Métricas no Prometheus

Pode-se selecionar uma variedade de métricas relacionadas a quaisquer recursos do Kubernetes, como servidor de API, aplicativos, cargas de trabalho, envoy, etc. Vamos selecionar container_memory_working_set_bytes métricas para nossa configuração. 

No aplicativo Prometheus, selecionaremos o namespace para raspar as métricas usando o seguinte termo de pesquisa: container_memory_working_set_bytes { namespace= “istio-telemetry”} (istio-telemetry é o nome do nosso namespace habilitado para Istio, onde o serviço httpbin está implantado)

Observe que, ao executar isso, obtemos a memória para o nosso namespace. Como queremos analisar o uso de memória de nossos pods, podemos calcular a memória total consumida somando o uso de memória de cada pod agrupado por pod. A seguinte consulta nos ajudará a obter o resultado desejado: sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)


Nota: O Prometheus oferece muita flexibilidade para filtrar, dividir e dividir os dados das métricas. A ideia central deste artigo foi mostrar a capacidade do Istio de emitir e enviar métricas para o Prometheus para coleta

Passo 6: Configurando Gráficos de Métricas do Istio no Grafana

Agora, você pode facilmente usar a consulta sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod) no Prometheus e plotar um gráfico com o tempo. Tudo o que você precisa fazer é criar um novo dashboard no Grafana e colar a consulta no navegador de métricas. O Grafana irá plotar um gráfico de série temporal. Você pode editar o gráfico com nomes, legendas e títulos apropriados para compartilhar com outras partes interessadas da equipe de Operações.


Existem várias maneiras de ajustar e personalizar os dados e representar as métricas do Prometheus no Grafana. Você pode optar por fazer todas as personalizações com base em suas necessidades empresariais. Fiz alguns experimentos no vídeo; sinta-se à vontade para verificá-lo. 

Conclusão

O Istio service mesh é extremamente poderoso em fornecer observabilidade geral em toda a infraestrutura. Neste artigo, apresentamos apenas um pequeno caso de uso de raspagem e visualização de métricas usando Istio, Prometheus e Grafana. Você pode realizar o registro de logs e rastreamento de logs e tráfego em tempo real usando o Istio; abordaremos esses tópicos em nossos próximos blogs.

Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring