Utilizando managed Prometheus e managed Grafana para monitorar um cluster Azure Red Hat Openshift

This post has been republished via RSS; it originally appeared at: New blog articles in Microsoft Community Hub.

Utilizando managed Prometheus e managed Grafana para monitorar um cluster Azure Red Hat OpenShift

 

Introdução

Por padrão, os clusters Azure Red Hat OpenShift já possuem sua própria monitoração interna, utilizando o Grafana e o Prometheus. Geralmente, essa monitoração é suficiente para a maioria dos casos, porém em situações específicas pode ser necessário ter uma monitoração mais personalizada, ou até mesmo uma monitoração centralizada para múltiplos clusters.

Para demonstrarmos uma solução personalizada, é necessário possuir um cluster Azure Red Hat OpenShift. Caso você não possua um cluster, é possível seguir o tutorial Criando um cluster Azure Red Hat OpenShift e lembre-se de utilizar a opção do pull secret para baixar as imagens da RedHa Pull Secret

 

Azure Red Hat OpenShift

Após a criação do cluster, é possível verificar se as métricas internas estão sendo exibidas no cluster.

  • Faça o login no cluster, você pode pegar o endereço do cluster no portal do Azure, na aba Overview do cluster criado e clicando no botão Connect  
    SeilorJunior_0-1683914992456.png
  • Clique na URL e utilize o username kubeadmin como user e o password como senha.

 

Acessando o monitoramento interno do cluster

  • Após conectar no cluster, na área Admistrador no menu lateral abra o Observe e depois o metrics.

  • Clicando no metrics você ira ter acesso ao Prometheus interno do cluster, coloque uma promql como kube_pod_container_info e click no Run Queries e ira mostrar o resultado da mesma. image

 

Acessando o Prometheus e o Grafana como as rotas do OpenShift

Agora quero mostrar outra forma de também ter acesso às métricas do cluster.

  • No menu lateral abra Networking e depois Routes, nessa área você vai ter acesso público para acessar os recursos. image
  • Clicando no link do Prometheus irá abrir a forma de autenticação e escolha log in with OpenShift.
  • Agora você irá ter acesso ao dashboard do Prometheus, coloque uma promql como kube_pod_container_info e clique no Execute. image
  • Clicando no link do Grafana irá abrir a forma de autenticação e escolha log in with OpenShift.
  • Click no Dashboards, Browse e default e com isso irá mostrar todos os dashboards disponíveis. image
  • Agora escolha um dashboard e clique nele e com isso você terá acesso ao dashboard com as métricas sendo utilizado o Prometheus como data source. image

 

Criando um managed Prometheus e um managed Grafana

Para podermos os benefícios do managed Prometheus e managed Grafana, precisamos criar os recursos

 

Criando um managed Prometheus

  • Ao entrar no portal da Azure , digite managed Prometheus na busca.
  • Após clicar no managed Prometheus, será mostrado o Azure Monitor, então clique no botão create(Azure Monitor Workspace).

  • Escolha a subscription,resource group, name e region e clique no review/create e depois no create.

Mais informações sobre criar o Azure Monitor Workspace

 

Criando um managed Grafana

  • Na barra de busca do portal da Azure, digite Azure managed Grafana e clique no Create.
  • Escolha a subscription, resource group , name e region e clique no review/create e depois no create. image

 

Fazer a conexão entre o Prometheus e o Grafana

  • Ao entrar no Azure Monitor Workspace, selecione o Workspace que foi criado no passo anterior.
  • No menu lateral click no Linked Grafana Workspaces e após click no + Link e selecione o Grafana que foi criado no passo anterior e clique no botão Link. image
  • Após terminar o processo, o Grafana vai ser exibido no Linked Grafana Workspace e você pode clicar no View Dashboard, que você será redirecionado para o Grafana.
  • Abrindo as configurações do Grafana, ira mostrar que o seu Prometheus está como um dos Data sources do mesmo.

 

Integrar o Prometheus do ARO com o Azure Monitor Workspace(Managed Prometheus)

Atualmente, ainda não há suporte para a integração da identidade gerenciada com o Azure Red Hat OpenShift. Portanto, durante esse processo, é necessário utilizar um Service Principal juntamente com um certificado para autenticação.

 

Criação da Service Principal, Role e Certificados

  1. Para a criação da Service Principal e para adicionar a role necessária, siga os passo até o step 6 e lembre de também dar acesso a subscription para a Service Principal.
  2. Para a criação do certificado que vai ser utilizado siga os passos
  3. Exportar o certificado como CER format para ser utilizado no Service Principal siga os passos
  4. Exportar o certificado como PFX format para ser utilizado pelo container no ARO siga os passos
  5. Adicione o certificado do tipo CER format como certificate na sua Service Principal siga os passos

 

Adicionando os workloads no Azure Red Hat OpenShift

  1. Conectar no cluster, abrir o menu lateral e selecionar workload e secrets o project(namespace) como openShift-monitoring. image
  2. Clicar no botão Create e depois no tipo key/value secret.
  3. Preencha os campos secret name como rewrite-certificate, a key o nome do seu PFX e clique no browse para fazer o upload do certificado PFX e após clique em Create. image
  4. Clone o repositório https://github.com/seilorjunior/aro-rewrite-metrics e abra o mesmo na sua IDE.
  5. Preencha as environments dos campos abaixo.
  6. Logue no seu cluster via CLI e vá à mesma folder que foi clonado o repositório.
  7. Execute o comando kubectl apply -f statefulset.yaml
  8. Execute o comando kubectl apply -f service.yaml

 

Validando o deploy do prom-rewrite

  1. Logue no cluster e abra o menu lateral no workloads e abra statefulset.
  2. Selecione o prom-remotewrite e selecione pods e abra o logs do pod. image

Conforme mostrado acima, o contêiner conseguiu se conectar com o Azure Monitor Workspace com sucesso. No entanto, ainda não há métricas sendo publicadas, como pode ser visto nos logs.

 

Configurando o Prometeheus

Para habilitar o Prometheus remote write, precisamos adicionar o endereço do service do nosso container no ConfigMap do Prometheus.

  1. No project openshift-monitoring, abra os ConfigMaps e selecione o cluster-monitoring-config e abra o mesmo.

  2. Altere o ConfigMap e deixe o config.yaml igual ao exemplo abaixo

    kind: ConfigMap
     apiVersion: v1
     metadata:
       name: cluster-monitoring-config
       namespace: openshift-monitoring           
     data:
       config.yaml: |
        prometheusK8s:
           remoteWrite:
           - url: "http://prom-remotewrite.openshift-monitoring.svc.cluster.local:8081/api/v1/write"
  3. Clique no save, para que a nova configuração seja utilizada, precisamos restartar os pods do prometheus-k8s.

  4. No menu lateral, abra Workloads e StatefulSets e selecione o prometheus-k8s.

  5. Vá nos pods e delete os dois, e os mesmos serão recriados e irão utilizar a configuração nova.

  6. Abra novamente os logs do pod do prom-remotewrite-0 e você poderá ver as métricas sendo publicadas. image

 

Validando as métricas no Grafana

  1. Abra o managed Grafana que foi criado nos passos anteriores e faça o login
  2. No Grafana abrindo a bússola(Explore), selecionando o managed Prometheus como Data source, selecione alguma métrica e clique no Run query. você poderá ver as métricas. image
  3. Abrindo algum dashboard do Grafana, você poderá ver as métricas sendo mostradas como dashboard. image

 

Conclusão

Como visto acima, com a utilização do Managed Prometheus e Managed Grafana na Azure fornece uma solução escalável e confiável para monitoramento e análise de métricas. Com essa solução, é possível ter uma visibilidade completa e em tempo real de seus serviços, permitindo uma rápida detecção e resolução de problemas, além de poder utilizar uma solução centralizada para monitorar vários clusters ao mesmo tempo.

 

Referências

  1. Prometheus Remote Write Active Directory
  2. Key Vault Certificate Creation
  3. Azure Monitor Workspace
  4. Azure Managed Grafana

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.