- Provisionar Stack do Jmeter no EKS via Terraform na AWS
- Será provisionado o Jmeter distribuído no EKS configurado para armazenar as métricas do teste dentro do influxdb e tera um grafana para visualização dessas métricas e geração de relatório usando o grafana-reporter
Para o provisionamento do Jmeter você tem duas opções:
-
Opção 1 - Clonar o reporitório e realizar o deploy localmente
-
Opção 2 - Usar o Terraform Cloud para realizar o deploy
-
Lembre-se de definir as variáveis AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY com as credenciais de um usuario do iam na conta que deseja realizar o provisionamento
-
Certifique-se de que o usuário tenha as permissões necessarias para realizar a criação de toda a stack no ambiente
- Acessar o Terraform Cloud através do link: Terraform Cloud
-
Realize a conexão com o VCS que está armazenado o seu repositório
-
Escolha o repositório que é o fork desse reporitório
-
Definir o nome do Workspace com o nome do ambiente do jmeter e clicar em Create workspace
Antes de executar o terraform é necessario definir algumas variáveis para se obter as informações necessárias para o provisionamento do Jmeter
Nome | Descrição | Padrão | Obrigatória |
---|---|---|---|
AWS_SECRET_ACCESS_KEY | Secret key da conta que sera provisionado o ambiente | Vazio | Sim |
AWS_ACCESS_KEY_ID | Access key da conta que sera provisionado o ambiente | Vazio | Sim |
aws_region | Região onde os recursos serão provisionados | us-east-1 | Não |
env | Ambiente que sera provisionado | dev | Não |
vpc_cidr | Cidr da VPC que será provisionada | 172.35.0.0/16 | Não |
subnet_count | Quantidade de subnets a serem criadas | 3 | Não |
eks_instance_type | Tipo da instancia do node group | m5.xlarge | Não |
workspace | Nome do app que sera provisionado | jmeter-eks | Não |
-
Usar credenciais de um usuário no IAM que tenha permissão de Administrador
-
Certifique-se de ter o kubectl instalado na sua maquina
-
Após a conclusão do deploy será mostrado os outputs com o valor de algumas variáveis do Terraform
-
Nos outputs procure pela variavél kubeconfig e copie o seu valor e cole no arquivo ~./kube/config
- Teste sua conexão com o cluster
-
A aplicação do Jmeter esta dentro do namespace jmeter
-
Execute o comando kubectl get pods -n jmeter e verifique se a saída é parecida com a imagem abaixo:
-
Para acessar o Grafana execute o comando kubectl get svc jmeter-grafana -n jmeter e copie o endpoint do loadbalancer
-
Acesse o Grafana usando um browser passando o endpoint do loadbalancer na porta 3000
-
Por padrão o Dashboard do Jmeter já vem no Grafana, para acessa-lo siga os passos abaixo:
-
Para gerar um relatório do dashboard é usado o grafana-reporter que já vem por padrão na stack e já esta configurado dentro do dashboard JMeter Metric Template
-
Clique em Jmeter Reporter dentro do dashboard JMeter Metric Template
-
Será aberto outra aba do seu browser com um PDF com as métricas do dashboard
-
Baixe os scripts para realização do teste que se encontram em scripts
-
Para não precisar baixar todo o projeto acesse cada script e baixe cada um individualmente
-
É necessário ter um arquivo jmx com o plano de teste do jmeter
-
Para realizar o test execute o script start_test.sh passando como paramêtro o arquivo jmx. Exemplo:
./start_test.sh /path/test-jmeter.jmx
-
Certifique-se de que o dashboard JMeter Metric Template foi populado com as métricas de execução do teste
- Para testes em alta escala pode ser necessário alterar o tipo da instância para uma instância da família R com uma quantidade maior de memória e se for o caso aumentar a quantidade de nodes e pods