Referência de uso do Prometheus


Índice

Introdução ao Prometheus

Vídeos que introduzem o uso do Prometheus

Linuxtips

Para testar o Prometheus localmente você vai precisar instalar o Docker e o Minikube, então dê uma olhada nesse link: Referência Docker e Kubernetes

Instalação

Iniciando o minikube (minikube para rodar local)

Iniciar o cluster do minikube:

minikube status
minikube start

Habilitando o metrics server no minikube

Se você está rodando o minikube localmente, para testar o Prometheus siga os seguintes passos:

Verificar se o metrics server está habilitado, se não estiver, habilite:

minikube addons list
minikube addons enable metrics-server

Para verificar se o metrics server está rodando, executar:

kubectl top pods

Instalando o Helm

O Helm é um gerenciador de pacotes que facilita a instalação, então vamos utilizar o Helm para facilitar o processo:

Para obter instruções de como instalar o Helm consulte: https://helm.sh/docs/intro/install/

Para instalar no windows utilizando o chocolatey basta utilizar:

choco install kubernetes-helm

A lista de pacotes do helm pode ser encontrada em: https://artifacthub.io/

Instalando o Prometheus

Requisitos:

1- Você precisa ter o metrics server rodando, para verificar se está rodando utilize:

kubectl top pods

2- Você precisa do Helm. Para verificar se está instalado utilize:

helm version

Para instalar o Prometheus utilizando o helm utilizar os passos descritos em: https://artifacthub.io/packages/helm/prometheus-community/prometheus

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics
helm repo update
helm repo list

O comando para instalar o chart é:

helm install [RELEASE_NAME] prometheus-community/prometheus				# comando instalação

helm show values prometheus-community/prometheus																	# listar valores padrões
helm show values prometheus-community/prometheus > .\k8s\prometheus-values.yml		# exportar valores padrões para arquivo
helm install prometheus prometheus-community/prometheus --values [values.yml]			# instalar com valores padrões

Para uma configuração básica, podemos criar um arquivo “prometheus-values.yml” com os valores:

# Não instale o Alert Manager
alertmanager:
  enabled: false

# Não instala o Push Gateway
pushgateway:
  enabled: false

# Não instala o State Metrics
kubeStateMetrics:
  enabled: false

server:
  global:  
    scrape_interval: 5s
    scrape_timeout: 5s

  persistentVolume:
    enabled: false

  service:
    type: NodePort
    nodePort: 30001

Vamos subir o nó do Prometheus na porta interna 30001

E então executar o comando abaixo para instalar o charts:

helm install prometheus prometheus-community/prometheus --values prometheus-values.yml

Para verificar o status:

helm list 							# lista as instações do helm
kubectl get pods				# lista os pods, que agora devem incluir o prometheus
kubectl get services		# lista os services, que agora deve incluir o prometheus

Para expor o Prometheus no minikube:

kubectl expose service prometheus-server --type=NodePort --target-port=9090 --name=prometheus-server-np

E para acessar a interface web do Prometheus:

minikube service prometheus-server-np

NOTA, se estiver utilizando o k3d ao invés do minikube, para subir o cluster utilizar:

k3d cluster create meucluster --agents 2 --server 1 -p "8080@30000@loadbalancer" -p "8181:30001@loadbalancer" -p "8282:30002@loadbalancer"

http://localhost:9090/metrics		# verificar se a aplicação está expondo as métricas

Precisa marcar o deployment da aplicação para coletar as métricas, então adicionar as linhas marcadas abaixo no deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  selector:
    matchLabels:
      app: api
  template:
    metadata:
      annotations:												#
        prometheus.io/scrape: "true"			#
        prometheus.io/path: /metrics			#
        prometheus.io/port: 8080					# porta para coletar as métricas (mesma da aplicação)
      labels:
        app: api
    spec:
      containers:
        - name: api
          image: educoutinho/api-produto-teste:v1
          ports:
            - containerPort: 8080
          env:
            - name: MONGODB_URI
              value: mongodb://mongouser:mongopwd@mongodb-service:27017/api-produto-teste

Então atualizar o deployment da aplicação:

kubectl apply -f .\k8s\api\deployment.yaml

lá no dashboard od Prometheus então deve aparecer os pods que estão tendo a métrica coletada



Comentários