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
Iniciar o cluster do minikube:
minikube status
minikube start
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
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/
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