Guia Prático: Configurando o Prometheus em um Cluster Kubernetes
Nesse artigo faremos um guia para configurar o Prometheus em um cluster Kubernetes. Essa configuração irá coletar métricas de nó, pods e serviços automaticamente usando um auto disconvery do Prometheus.
Explicar o Prometheus está fora do escopo deste artigo. Se você quiser saber mais sobre o Prometheus, clique aqui!
Arquitetura de Prometheus
A pilha de monitoramento Kubernetes Prometheus tem os seguintes componentes.
- Servidor Prometheus
- Alertmanager
- Grafana
Observações: Iremos abordar o deploy dos outros componentes em outros posts!
Configuração de monitoramento do Prometheus no Kubernetes
Conecte-se ao cluster:
Conecte-se ao seu cluster Kubernetes e certifique-se de ter privilégios de administrador para criar funções de cluster. se você estiver usando o Google Cloud GKE, precisará executar os seguintes comandos, pois precisa de privilégios para criar funções de cluster para esta configuração do Prometheus.
ACCOUNT=$(gcloud info --format='value(config.account)') kubectl create clusterrolebinding owner-cluster-admin-binding \ --clusterrole cluster-admin \ --user $ACCOUNT
Prometheus Manifests
Todos os arquivos de configuração que mencionei neste post estão localizados em nosso Github.
Caso quiserem clonar o repositório, utilize o seguinte com o comando:
git clone https://github.com/4linux/kube-prometheus-monitoring.git
Criando uma namespace
Primeiro, criaremos uma namespace para todos os nossos componentes de monitoramento. Se você não criar uma namespace dedicada, todos os objetos de deployment do Kube Prometheus Monitoring serão implementados no namespace default.
kubectl create namespace monitoring
O Prometheus usa APIs do Kubernetes para ler todas as métricas disponíveis de nodes, pods, Deployments e etc. Por esse motivo, precisamos criar uma política RBAC com read accessos grupos de API necessários e vincular a política ao monitoring namespace.
Criando um ClusterRole
Crie um arquivo clusterRole.yaml
Você pode pegar o Raw do arquivo aqui.
Na função adicionamos get, list e watch permissões para nós, terminais de serviços, pods e entradas. A vinculação de função é vinculada ao namespace de monitoramento. Se você tiver algum caso de uso para recuperar métricas de qualquer outro objeto, precisará adicioná-lo a essa função de cluster.
Crie a role com o seguinte comando
kubectl create -f clusterRole.yaml
Criando uma ConfigMap
Crie um arquivo chamado config-map.yaml
Você pode pegar o Raw do arquivo aqui.
Todas as configurações principais do prometheus se localizam no arquivo prometheus.yaml e todas as rules do Alertmanager são localizadas no arquivo prometheus.rules .
Iremos usar a ConfigMap para a criação desses dois arquivos para depois montar no volume /etc/prometheus através do nosso arquivo de deployment.
Crie a ConfigMap com o seguinte comando
kubectl create -f config-map.yaml
Observações: O prometheus.yaml
contém todas as configurações para descobrir pods e serviços em execução no cluster Kubernetes através das seguintes targets
Criando uma ConfigMap
- kubernets-apiservers: Faz a raspagem de todas as métricas dos APIs dos servidores
- kubernetes-nodes: Faz a raspagem de todas as métricas dos nodes kubernetes
- kubernetes-pods: Faz a raspagem de todas as métricas dos pods no kubernetes
- kubernetes-service-endpoints: todos os endpoints de serviço serão descartados se os metadados do serviço forem anotados com as anotações prometheus.io/scrape e prometheus.io/port. Ele pode ser usado para monitoramento da black-box.
Criando o Deployment
Crie um arquivo chamado prometheus-deployment.yaml
Você pode pegar o Raw do arquivo aqui.
Esse nosso deployment utiliza a imagem oficial do prometheus da hub Docker.
Observações: Nesse exemplo, não estamos utilizando nenhum volume persistente para o armazenamento do nosso Prometheus, devido a ser uma configuração básica.
Caso utilize essa confguração em produção, adicione um volume persistente nesse deployment.
Crie o deployment com o seguinte comando
kubectl create -f prometheus-deployment.yaml
Agora você pode verificar se o deployment está criado com o seguinte comando
kubectl get deployments -n monitoring
Expondo o Prometheus
Você pode visualizar o painel do Prometheus implantado de três maneiras diferentes.
- Usando o encaminhamento de porta Kubectl
- Expondo a implantação do Prometheus como um serviço com NodePort ou um Load Balancer.
- Adicionar um Ingress, caso tenha um controlador Ingress implantado.
Usando o encaminhamento de porta kubectl
Usando o encaminhamento de porta kubectl, você pode acessar seu pod localmente usando uma porta selecionada em seu localhost
.
Este método é usado principalmente para fins de debug.
Primeiro: Verifique o nome do pod do Prometheus
kubectl get pods -n monitoring
a saída será semelhante a essa:
kubectl get deployments -n monitoring NAME READY STATUS RESTARTS AGE prometheus-monitoring-4linux6548-m0n17 1/1 Running 0 2m
execute o seguinte comando com o nome do seu pod para acessar o Prometheus da porta localhost 8080.
kubectl port-forward prometheus-monitoring-4linux6548-m0n17 -n monitoring
Observações: Não esqueça de substituir prometheus-monitoring-4linux6548-m0n17 pelo nome do seu pod.
Agora, se você acessar http://localhost:8080
pelo seu navegador, terá a página inicial do Prometheus.
Expondo o Prometheus como um serviço NodePort & LoadBalancer
Para acessar o frontend do Prometheus por um IP
ou um DNS
nome, você precisa expô-lo como um serviço do Kubernetes.
Iremos expor o Prometheus na porta 30000 em todos os IPs dos nodes.
Crie um arquivo chamado prometheus-service.yaml
Você pode pegar o Raw do arquivo aqui.
Observações: se você estiver no AWS, Azure ou Google Cloud, poderá usar o tipo Loadbalancer, que criará um balanceador de carga e o apontará automaticamente para o ponto de extremidade do serviço Kubernetes.
Crie o serviço usando o seguinte comando
kubectl create -f prometheus-service.yaml
Após a criação, você pode acessar o forntend do Prometheus usando qualquer um dos IPs do node na porta 30000
. Se você estiver na nuvem, certifique-se de ter as regras de firewall corretas para acessar a porta 30000
agora, se você navegar até status – Targets, verá todos os endpoints do Kubernetes conectados ao Prometheus automaticamente usando a descoberta de serviço,
expondo o Prometheus usando o Ingress
Se no caso você tiver um ingress controller no seu cluster, poderá criar um objeto ingress para o rotear o DNS do prometheus para o serviço back-end.
Além disso, você também pode adiconar um SSL para o Prometheus na camada de entrada.
Crie um arquivo chamado prometheus-ingress.yaml
Você pode pegar o Raw do arquivo aqui.
Crie o ingress usando o seguinte comando
kubectl create -f prometheus-ingress.yaml
Agora você pode acessar o Prometheus através de seu navegador utilizando o seu ingress
Conclusão
Nessa primeira parte do post de abordamos sobre a configuração de um dos componentes de monitoramento opensource para a coleta de métricas de aplicações e serviços para armazenamento em um banco de dados de séries temporais. O Prometheus tem uma linguagem e configurações de configuração complexas, então apenas tratamos o básico de sua gama de configurações. Embora o Prometheus seja uma ferramenta poderosa, pode ser um desafio configurá-lo e executá-lo sem um bom conhecimento da linguagem e configuração específicas. Para os demais componentes, acompanhem os próximos posts, onde abordaremos como fazer o deploy de um serviço de métricas do cluster kubernets e um serviço de métricas a nível de sistema linux de todos os nodes do kubernetes.
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Como usar Linux no Windows sem Dual Boot: Guia Prático do WSL
Se você está começando seus estudos no linux e tem receio de realizar um dual boot em seu computador e correr o risco de perder todos seus arquivos e ou
Maximize o desempenho do seu banco de dados com a ferramenta pg_activity
O monitoramento eficaz de um banco de dados é crucial para manter um desempenho otimizado e garantir a disponibilidade contínua de suas aplicações. Neste post, vamos explorar como a ferramenta
Curso PHP Completo: Aprenda a Programar e Melhore Seu Desempenho
Hoje estamos entusiasmados em anunciar o nosso Curso PHP Completo. Existem muitas linguagens de programação para se aprender, o que pode levar você a se perguntar se deve começar a