Posted May 15, 20231 yr 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 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. 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 GitHub - 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. Referências Prometheus Remote Write Active Directory Key Vault Certificate Creation Azure Monitor Workspace Azure Managed Grafana Continue reading...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.