Feather Background Waves Background
Ir para o conteúdo principal
Feather Background Waves Background
Feather Background Waves Background
  1. JMeter em Português/

JMeter (Elasticsearch + Kibana)

avançado - This article is part of a series.

elastic

O que é Elasticsearch?>

O que é Elasticsearch? #

Elasticsearch é um motor de busca e análise distribuído que também serve como uma iniciativa aberta. O motor suporta uma variedade ampla de tipos de dados, incluindo textuais, numéricos, geoespaciais, estruturados e não estruturados. Elasticsearch foi desenvolvido no Apache Lucene e apresentado pela Elastic N.V. (atualmente conhecida como Elastic) em 2010. Reconhecido por sua API REST simples, natureza distribuída, velocidade e escalabilidade, Elasticsearch é o componente principal do Stack Elastic, uma coleção de ferramentas abertas para a ingestão, enriquecimento, armazenamento, análise e visualização de dados. Comumente referenciado como o ELK Stack (para Elasticsearch, Logstash e Kibana), o Stack Elastic agora inclui um grande número de agentes conhecidos como Beats que enviam dados para Elasticsearch.

Texto extraído de aqui e recomendo visitar para informações sobre todos os benefícios do Elasticsearch.

O que é Kibana?

Kibana ( https://www.elastic.co/es/kibana) é uma aplicação de front-end aberta que reside no Elastic Stack e oferece capacidades de visualização de dados e busca para dados indexados em Elasticsearch. Comumente conhecida como o ferramenta de front-end do Elastic Stack (anteriormente chamado ELK Stack por Elasticsearch, Logstash e Kibana), Kibana também actua como uma interface de usuário para monitorar, gerir e proteger um cluster de Elasticsearch; é também um centro central para soluções integradas desenvolvidas no Elastic Stack. Desenvolvida em 2013 pela comunidade do Elasticsearch, Kibana se tornou a janela para toda a oferta do Elastic Stack, oferecendo uma porta para usuários e empresas.

Texto extraído de aqui e recomendo visitá-lo para informar-se sobre todos os benefícios de Kibana.

Como a integração de Elasticsearch e Kibana funciona com o JMeter?>

Como a integração de Elasticsearch e Kibana funciona com o JMeter? #

A integração é relativamente simples mas não muito popular. Como o anteriormente publicado JMeter com InfluxDB e Grafana, usaremos a componente de Listener Back End, mas modificada e adaptada para enviar dados para Elasticsearch. O arquivo JAR pode ser baixado aqui, este plugin foi criado por Anthony Gauthier baseado no código original da componente de Listener Back End. Este componente de recepção envia dados para Elasticsearch via requisições HTTP assíncronas e obtem resultados em formato JSON do JMeter.

design

O receptor enviará todos os resultados descritos aqui para o Elasticsearch, independentemente de você colocar-o como um listener backend na planilha do teste ou dentro de uma grupo específico de threads. Os resultados serão transmitidos ao Elasticsearch até um máximo de 5000 objetos, cada objeto pode conter múltiplas medições ou valores. Os dados são emitidos em requisições HTTP POST para o API do Elasticsearch após validar que os dados existem na indexação escolhida, e podemos construir uma dashboard no Kibana ou até mesmo no Grafana para exibir os resultados. Não se preocupe se você não sabe como fazer; há muitas dashboards pré-definidos disponíveis no comunitário do Kibana e Grafana para visualizar os resultados de JMeter.

O Que Precisamos ?>

O Que Precisamos ? #

  1. Precisamos de uma instância de ElasticSearch, recomendo usar a versão de Elastic do Cloud da Elastic que te dá 14 dias de um cluster composto por (ElastiSearch, Kibana e Enterprise Search), o suficiente para este teste. Você também pode baixar e instalar ElasticSearch em seu dispositivo ou usar um servidor dedicado. Se você não quiser instalar, você pode baixar e executar a versão Docker.

  2. Precisamos de uma instância do Kibana. Quando você abrir sua conta na nuvem, essa instância está incluída no Stack. Você também pode baixar e instalar Kibana em seu dispositivo, ou usar o mesmo servidor InfluxDB. Se você não quiser instalar, opta por a versão Docker.

  3. Alternativamente, precisamos de uma instância de Grafana ( https://grafana.com/), após abrir sua conta no grafana.com, você pode gerar uma instância Grafana Cloud aqui. Esta instância seria suficiente para este teste. Você também pode baixar e instalar Grafana em seu dispositivo ou usar o mesmo servidor InfluxDB. Se não quiser instalar, você pode optar pelo versão Docker ( https://hub.docker.com/r/grafana/grafana).

  4. Adicione o Backendlister ao script de JMeter e configúre-o com as informações do ponto #1.

  5. Verifique se a informação está disponível no Elasticsearch.

  6. Construa nossas próprias tabelas ou use os já existentes para exibir as gráficos dos resultados.

Receita

1.- Versão ElasticSearch e Kibana para Testes>

1.- Versão ElasticSearch e Kibana para Testes #

Utilizaremos a versão de teste do Elasticsearch, conforme pode ser visto nas imagens. Obtenha uma URL onde nosso serviço API https://50e0522e55014a12ae25707525ba6e95.us-east-1.aws.found.io:9243.

elastic-stack-1

elastic-stack-2

elastic-stack-3

elastic-stack-4

elastic-stack-5

elastic-stack-6

Clique no quadrado vermelho para obter a ligação ElasticSearch. Para este exemplo, é https://50e0522e55014a12ae25707525ba6e95.us-east-1.aws.found.io:9243

elastic-stack-7

2.- Configure o Recebedor Back-end>

2.- Configure o Recebedor Back-end #

Necessitamos copiar o arquivo jmeter.backendlistener.elasticsearch-2.7.0.jar para nossa diretoria /lib/ext e reiniciar JMeter. Depois disso, adicione e configure o componente Recebedor back-end com os dados da etapa #1 como já mencionamos: a URL é Elastic, e os usuários e senhas são obtidos das imagens anteriores.

  • o protocolo ou es.scheme = https
  • o nome do servidor ou es.host = 50e0522e55014a12ae25707525ba6e95.us-east-1.aws.found.io
  • a porta ou es.port = 9243
  • o índice ou es.index = jmeter_metrics
  • o usuário Elastic ou es.xpack.user = elastic
  • a senha do usuário ou es.xpack.password = secret

elasticsearch-api

curl --user elastic:secret 'https://50e0522e55014a12ae25707525ba6e95.us-east-1.aws.found.io:9243/test/_search?format=json&pretty'

elasticsearch-curl

4.- Construa a dashboard>

4.- Construa a dashboard #

Você pode construir uma dashboard em Kibana para poder gerar gráficos dos dados que foram enviados para o Elasticsearch. Para este exemplo, usaremos a dashboard JMeter Metrics Statistics Dashboard, que apenas requeremos copiar o JSON e importar em Kibana Objects. No entanto, antes disso, também precisamos configurar a index de dados para que Kibana possa extrair os mesmos do Elasticsearch.

elasticsearch-kibana-1

elasticsearch-kibana-2

elasticsearch-kibana-3

elasticsearch-kibana-4

elasticsearch-kibana-5

elasticsearch-kibana-6

elasticsearch-kibana-7

elasticsearch-kibana-8

No caso de problemas com o marcador do tempo, precisamos editar a “dashboard” e depois “editar a visualização” do componente. Selecione a aba “Opções da Página” e na caixa de texto “Campo de Tempo,” selecione o valor “SampleStartTime.” Salve e desfrute do Dashboard.

5.- Alternating using Grafana>

5.- Alternating using Grafana #

Você pode construir um dashboard semelhante em Grafana para gráfico os dados que foram enviados para Elasticsearch, a maneira mais fácil é usar dashboards pré-definidos criados por usuários do Grafana da comunidade, estes estão disponíveis no seguinte link. Para este exemplo usaremos o dashboard Grafana Main Dashboard, que apenas requer copiar e importar JSON para Grafana. No entanto, antes disso, também precisamos configurar a conexão de fonte de dados entre Grafana e Elasticsearch.

grafana-1

grafana-2

grafana-3

grafana-4

grafana-5

grafana-6

Conclusão>

Conclusão #

Este solução também funciona para milhares de usuários concurrentes, pois é muito simples horizontalmente escalar Elasticsearch. Embora Kibana ou Grafana com instâncias na nuvem estejam suficientes, convido aqueles que se tornarem mais experientes para criar suas próprias tabelas em Kibana ou Grafana ou modificar as existentes, o que é extremamente fácil e muito útil. Também pode enviar contadores para CPU, Memória, Espaço de Disco e Bandeira dos generadores de carga ou servidores alvo, usando Logstash.

Alternativamente, poderíamos enviar o conteúdo de nosso arquivo JTL via Logstash, possivelmente eliminando a necessidade de coletar os arquivos JTL após iterações se necessário, embora este Listener seja diferente do anterior sobre InfluxDB, permitindo-nos salvar todos os campos e resultados sem precisarmos armazenar o arquivo JTL caso necessário para reconstrução.

Assim como enviar métricas de contadores para o Elasticsearch, podemos correlacionar os níveis de carga com os contadores de CPU, Memória e I/O para medir a performance dos servidores-alvo. Portanto, embora JMeter seja um ferramenta de teste de carga, pode ser facilmente integrada com essas adições para medir a performance.

Para finalizar, se você quiser comparar seus resultados usando variáveis do ambiente CI/CD, Anthony Gauthier deixou-nos um presente aqui. Boa sorte!



avançado - This article is part of a series.