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
- Clique na URL e utilize o
username
kubeadmin como user e opassword
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.
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.
- 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.
- 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.
- 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.
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.
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.
- 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
- 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.
- Para a criação do certificado que vai ser utilizado siga os passos
- Exportar o certificado como CER format para ser utilizado no Service Principal siga os passos
- Exportar o certificado como PFX format para ser utilizado pelo container no ARO siga os passos
- Adicione o certificado do tipo CER format como certificate na sua Service Principal siga os passos
Adicionando os workloads no Azure Red Hat OpenShift
- Conectar no cluster, abrir o menu lateral e selecionar workload e secrets o project(namespace) como openShift-monitoring.
- Clicar no botão Create e depois no tipo key/value secret.
- 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.
- Clone o repositório https://github.com/seilorjunior/aro-rewrite-metrics e abra o mesmo na sua IDE.
- Preencha as environments dos campos abaixo.
- AZURE_TENANT_ID: Com o seu tenantID
- AZURE_CLIENT_ID: Com o clientid que foi criado para sua Service Principal.
- AZURE_CLIENT_CERTIFICATE_PATH : /mnt/secrets-store/nameofyourcertificate.pfx (Coloque o nome do seu PFX no path)
- INGESTION_URL: é o Metrics ingestion endpoint disponível no overview do seu Azure Monitor Workspace que foi criado. Exemplo : https://xxxx.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-xxx/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview
- Logue no seu cluster via CLI e vá à mesma folder que foi clonado o repositório.
- Execute o comando kubectl apply -f statefulset.yaml
- Execute o comando kubectl apply -f service.yaml
Validando o deploy do prom-rewrite
- Logue no cluster e abra o menu lateral no workloads e abra statefulset.
- Selecione o prom-remotewrite e selecione pods e abra o logs do pod.
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.
-
No project openshift-monitoring, abra os ConfigMaps e selecione o cluster-monitoring-config e abra o mesmo.
-
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"
-
Clique no save, para que a nova configuração seja utilizada, precisamos restartar os pods do prometheus-k8s.
-
No menu lateral, abra Workloads e StatefulSets e selecione o prometheus-k8s.
-
Vá nos pods e delete os dois, e os mesmos serão recriados e irão utilizar a configuração nova.
-
Abra novamente os logs do pod do prom-remotewrite-0 e você poderá ver as métricas sendo publicadas.
Validando as métricas no Grafana
- Abra o managed Grafana que foi criado nos passos anteriores e faça o login
- 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.
- Abrindo algum dashboard do Grafana, você poderá ver as métricas sendo mostradas como dashboard.
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.