Grafana e Prometheus
O Grafana e o Prometheus são ferramentas essenciais para a visualização e monitoramento de dados. O Grafana é uma plataforma de análise e visualização de métricas, enquanto o Prometheus é um sistema de monitoramento e alerta. Ambos são amplamente utilizados em ambientes de nuvem e são altamente integrados com a AWS.
Configuração do Ambiente
Para instalar o Grafana e o Prometheus no Amazon EKS (Elastic Kubernetes Service), é necessário configurar o ambiente de acordo com as necessidades do projeto. Isso inclui a instalação do Helm, que é um gerenciador de pacotes para Kubernetes, e a criação de namespaces para o Grafana e o Prometheus. Além disso, é necessário configurar o acesso ao cluster do Amazon EKS, o que pode ser feito por meio do AWS CLI (Command Line Interface) e Kubectl, que é uma ferramenta de linha de comando para interagir com clusters Kubernetes. Os comandos a seguir mostram como instalar o Helm, AWS CLI e o Kubernetes CLI, e como configurar o acesso ao cluster do Amazon EKS.
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
aws --version
aws eks update-kubeconfig --name eks-prod
kubectl get pods
kubectl get namespaces
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
## Install EKS ctl
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl create addon --name aws-ebs-csi-driver --cluster eks-prod --service-account-role-arn arn:aws:iam::<ID ACCount>:role/LabRole_EBS_CSI_DriverRole --force
## install helm 3 cli
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
Nota: Substitua <ID ACCount>
pelo ID da sua conta da AWS. Na pasta src/config
você encontra os arquivo .sh
para instalação do aws-cli
e eksctl
e configuração do kubeconfig
e helm
, além de realizar a instalação do prometheus e grafana.
Prometheus
O Prometheus é um sistema de monitoramento e alerta, que coleta métricas de sistemas e serviços e armazena essas métricas em um banco de dados de séries temporais. O Prometheus oferece suporte a uma ampla variedade de fontes de dados, incluindo AWS CloudWatch, JMX, StatsD, e muitas outras. Além disso, o Prometheus oferece suporte a alertas, o que permite definir regras de alerta com base nas métricas coletadas.
Vantagens do Prometheus
O Prometheus oferece diversas vantagens em relação a outras ferramentas de monitoramento, tais como:
- Coleta de Métricas de Sistemas e Serviços: O Prometheus coleta métricas de sistemas e serviços, incluindo CPU, memória, disco, rede, e muitas outras, o que permite monitorar o desempenho e a disponibilidade dos sistemas e serviços.
- Armazenamento de Métricas em Banco de Dados de Séries Temporais: O Prometheus armazena as métricas coletadas em um banco de dados de séries temporais, o que permite consultar e analisar as métricas ao longo do tempo.
- Suporte a Alertas: O Prometheus oferece suporte a alertas, o que permite definir regras de alerta com base nas métricas coletadas, e notificar os usuários quando as regras são acionadas.
Intalação do Prometheus
A instalação do Prometheus é simples e pode ser feita em diversas plataformas, incluindo Linux, Windows, macOS, Docker, Kubernetes, e muitas outras. No caso do Amazon EKS (Elastic Kubernetes Service), o Prometheus pode ser instalado diretamente no cluster do EKS, o que permite coletar métricas de sistemas e serviços e armazená-las em um banco de dados de séries temporais. Para instalar o Prometheus no Amazon EKS, basta executar o seguinte comando:
## runnig helm
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm repo list
kubectl create namespace prometheus
cd ../../infrastructure/charts
helm install prometheus prometheus-community/prometheus \
--namespace prometheus \
--set alertmanager.persistentVolume.storageClass="gp2" \
--set server.persistentVolume.storageClass="gp2" \
--values prometheus/values.yaml
kubectl get all -n prometheus
kubectl port-forward deployment/prometheus-server 9090:9090 -n prometheus
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
Grafana
O Grafana é uma plataforma de análise e visualização de métricas, que permite criar, explorar e compartilhar dashboards e dados. O Grafana oferece suporte a uma ampla variedade de fontes de dados, incluindo Prometheus, AWS CloudWatch, Elasticsearch, InfluxDB, MySQL, PostgreSQL, e muitas outras. Além disso, o Grafana oferece suporte a plugins, o que permite estender suas funcionalidades e integrá-lo com outros sistemas.
Vantagens do Grafana
O Grafana oferece diversas vantagens em relação a outras ferramentas de visualização de métricas, tais como:
- Suporte a Diversas Fontes de Dados: O Grafana oferece suporte a uma ampla variedade de fontes de dados, o que permite integrá-lo com sistemas e serviços de monitoramento.
- Flexibilidade e Customização: O Grafana oferece uma interface intuitiva e flexível para a criação e customização de dashboards, permitindo criar visualizações personalizadas e adaptadas às necessidades do usuário.
- Integração com Outras Ferramentas: O Grafana oferece suporte a plugins, o que permite estender suas funcionalidades e integrá-lo com outros sistemas, como Prometheus, AWS CloudWatch, Elasticsearch e muitas outras.
- Comunidade Ativa e Suporte: O Grafana tem uma comunidade ativa e crescente, o que significa uma grande quantidade de recursos de aprendizado, plugins compartilhados e suporte quando você precisa de ajuda.
- Escalabilidade e Desempenho: O Grafana é projetado para lidar com grandes volumes de dados e oferece suporte a ambientes de nuvem, o que permite escalar e dimensionar a plataforma conforme necessário.
- Open Source e Licença Apache 2.0: O Grafana é um software de código aberto e é distribuído sob a licença Apache 2.0, o que significa que é gratuito para uso comercial e não comercial.
Intalação do Grafana
A instalação do Grafana é simples e pode ser feita em diversas plataformas, incluindo Linux, Windows, macOS, Docker, Kubernetes, e muitas outras. No caso do Amazon EKS (Elastic Kubernetes Service), o Grafana pode ser instalado diretamente no cluster do EKS, o que permite visualizar e analisar as métricas coletadas pelo Prometheus. Para instalar o Grafana no Amazon EKS, basta executar o seguinte comando:
cd infrastructure/charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
kubectl create namespace grafana
helm install grafana grafana/grafana \
--namespace grafana \
--set persistence.storageClassName="gp2" \
--set persistence.enabled=true \
--set adminPassword='grafana' \
--values grafana/values.yaml \
--set service.type=LoadBalancer
kubectl get all -n grafana
kubectl get svc grafana -n grafana -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
kubectl get svc -n grafana
Integração do Grafana com o Prometheus
O Grafana e o Prometheus são altamente integrados, o que permite visualizar e analisar as métricas coletadas pelo Prometheus por meio de dashboards personalizados. O Grafana oferece suporte nativo ao Prometheus, o que significa que é possível configurar o Prometheus como uma fonte de dados no Grafana e criar dashboards com base nas métricas coletadas pelo Prometheus.
Vantagens da Integração
A integração do Grafana com o Prometheus oferece diversas vantagens, tais como:
- Visualização e Análise de Métricas: O Grafana oferece uma interface intuitiva e flexível para a visualização e análise de métricas coletadas pelo Prometheus, o que permite criar dashboards personalizados e adaptados às necessidades do usuário.
- Alertas e Notificações: O Grafana oferece suporte a alertas e notificações, o que permite definir regras de alerta com base nas métricas coletadas pelo Prometheus, e notificar os usuários quando as regras são acionadas.
Motivo de Uso
O grupo decidiu adotar o Grafana e o Prometheus para visualização e análise dos dados coletados. Essa escolha foi motivada pelo robusto suporte de integração via SDK com a AWS, facilitando a coleta de métricas de sistemas e serviços. A integração se beneficia da autoconfiguração de acesso (não havendo a necessidade de cadastrar as credencias da AWS), um recurso particularmente vantajoso no contexto do EKS (Elastic Kubernetes Service). Como o EKS gerencia os pods, a instalação do Grafana e do Prometheus diretamente sobre ele elimina a necessidade de configurações manuais de acesso. Isso é possível porque o próprio EKS automatiza a configuração de acesso, simplificando significativamente o processo de implementação e gestão dessas ferramentas de monitoramento.
Exemplo de Dashboard
O dashboard a seguir é um exemplo de como as métricas coletadas pelo Prometheus podem ser visualizadas e analisadas por meio do Grafana. O dashboard inclui gráficos de séries temporais, tabelas, e outros tipos de visualizações, que permitem monitorar o desempenho e a disponibilidade dos pods e serviços do cluster do Amazon EKS.
Demo do Grafana e Prometheus
A seguir, um vídeo demonstrativo de como o Grafana e o Prometheus podem ser utilizados para visualizar e analisar métricas coletadas de sistemas e serviços. O vídeo inclui uma demonstração de como configurar um novo data source no Grafana, criar um novo dashboard, e adicionar visualizações de métricas coletadas pelo Prometheus, incluindo o dashboard construido para demonstração de dados de sensores da região norte.