DEV Community

Marlo Henrique
Marlo Henrique

Posted on • Edited on

Executando testes de performance com Grafana Cloud K6

Ao abordarmos a realização de testes de performance, é essencial considerar a execução desses testes em ambientes de nuvem, utilizando serviços renomados, como AWS CodeBuild, Azure DevOps e outros serviços SaaS oferecidos pelos principais serviços de cloud. Entre os principais benefícios que podem ser destacados nesse contexto, incluem-se:

  • Escalabilidade.
  • Flexibilidade geográfica.
  • Redução de custos.
  • Confiança nos resultados.

O conceito de Performance Testing as a Service tem ganhado popularidade. Essas são plataformas dedicadas principalmente a fornecer serviços para a realização de testes de performance, simplificando a execução em várias zonas, com cargas de trabalho intensas e disponibilizando um conjunto abrangente de ferramentas para monitorar a execução e os resultados obtidos.

Neste artigo, exploraremos o Grafana Cloud K6 e discutiremos por que você deve conhecer essa poderosa ferramenta.

Image description

Adeus K6 Cloud. Bem vindo Grafana Cloud K6✨

O k6 Cloud é um produto SaaS criado pela equipe do K6 para ser o companheiro perfeito. Ele trouxe facilidade de uso, bem como gerenciamento de equipe e recursos de continuos testing para seus projetos de teste de performance.

A partir do lançamento do Grafana Cloud K6, não estão sendo aceitas novas inscrições no K6 Cloud. Os usuários existentes do K6 Cloud continuarão a utilizá-lo sem interrupções. Além disso, está sendo planejada a migração do K6 Cloud para o Grafana Cloud K6 em uma data posterior.

O Grafana Cloud K6 é uma solução que visa da suporte a grande maioria dos recursos oferecidos pela k6 cloud, enquanto se beneficia dos recursos da plataforma Grafana Cloud para Visualização de dados e Observability.

Com a aquisição pela Grafana labs do K6 em meados de 2021, iniciou-se um processo de unificação de serviços.

Benefícios do Grafana Cloud K6🏆

Um dos principais benefícios a serem destacados ao optar pelo Grafana K6 Cloud é a oferta de um plano gratuito para os usuários.

Ao criar uma conta, os usuários têm acesso a um plano free que inclui horas de execução de VUs (Usuários Virtuais) K6 mensais, sem nenhum custo. Além disso, o plano gratuito oferece outros benefícios relacionados aos serviços do Grafana Cloud.

Essa disponibilidade de recursos gratuitos torna o Grafana K6 Cloud uma opção acessível e atraente para aqueles que desejam iniciar ou aprimorar seus testes de performance.

Image description

Além disso, outra vantagem notável é possibilidade de executar testes de carga na nuvem com até 1 milhão de usuários virtuais simultâneos ou 5 milhões de solicitações/segundo, com a possibilidade de distribuição em 21 localizações geográficas para os planos Cloud Pro e Cloud Advanced.

No entanto, o aspecto que mais se destaca, é a capacidade de ter testes de desempenho e observabilidade integrados em uma única plataforma.

A capacidade de incorporar as visualizações do K6 aos seus painéis já existentes no Grafana e correlacionar os resultados dos testes de desempenho com métricas, logs e rastreamentos do servidor é verdadeiramente a cereja do bolo.

Image description

Isso proporciona uma abordagem completa e holística para analisar o desempenho do seu sistema, permitindo que você identifique rapidamente as principais causas de problemas e tome medidas corretivas de forma eficiente.

Execução via Grafana K6 Cloud💻

Pré-requisitos📑

Script utilizando📃

Nesta etapa prática faremos modificações em um script de teste de performance, que requer a adição de configuração para a execução via Grafana Cloud K6.

O exemplo de script que será utilizado é o seguinte:

import http from 'k6/http';
import {sleep, check} from 'k6';

export const options = {
    stages: [
        { duration: '10s', target: 10 }, 
        { duration: '10s', target: 10 },
        { duration: '10s', target: 0 } 
    ],
    thresholds: {
        checks: ['rate > 0.95'],
        http_req_duration: ['p(95) < 200']
    }
}

export default function(){

    const BASE_URL = 'https://test-api.k6.io/public/crocodiles';
    const res = http.get(BASE_URL)

    check(res,{
        'status 200': (r) => r.status === 200
    });
    sleep(1);
}
Enter fullscreen mode Exit fullscreen mode

Obtendo token de acesso🔐

Uma vez autenticado na Grafana Cloud, acesse Start Testing para K6:

Image description

Você será redirecionado para a página de testes de performance do seu usuário. Um projeto padrão é automaticamente criado para sua conta, porém você tem a flexibilidade de criar outros projetos de acordo com suas necessidades.

Image description

O id do projeto pode ser encontrado quando você clicar no nome do projeto.

O token necessário para execução via Grafana Cloud K6 pode ser obtido na opção Settings:

Image description

Executando nosso script😃

Antes de executar o seu script, é necessário autenticar-se no Grafana Cloud K6. Para fazer isso, copie o token gerado na etapa anterior, e em qualquer CLI da sua escolha, utilize o seguinte comando:

k6 login cloud --token <TOKEN>
Enter fullscreen mode Exit fullscreen mode

Nesse tutorial, estamos utilizando o git bash.

Além disso, é necessário adicionar ao escopo de configuração algumas propriedades que façam referência ao projeto que será executado. Vamos modificar o bloco options do nosso script da seguinte forma:

export const options = {
    stages: [
        { duration: '10s', target: 10 }, 
        { duration: '10s', target: 10 },
        { duration: '10s', target: 0 } 
    ],
    thresholds: {
        checks: ['rate > 0.95'],
        http_req_duration: ['p(95) < 200']
    },
    ext: {
        loadimpact: {
            projectID: '3633734',
            name: 'Exemplo de execução',
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Por fim, podemos executar nosso script via cloud utilizando o seguinte comando:

k6 cloud script.js
Enter fullscreen mode Exit fullscreen mode

No console você recebera uma saída semelhante a seguinte:


          /\      |‾‾| /‾‾/   /‾‾/
     /\  /  \     |  |/  /   /  /
    /  \/    \    |     (   /   ‾‾\
   /          \   |  |\  \ |  (‾)  |
  / __________ \  |__| \__\ \_____/ .io

  execution: cloud
     script: script.js
     output: https://marlo2222.grafana.net/a/k6-app/runs/1922864

  scenarios: (100.00%) 1 scenario, 10 max VUs, 1m0s max duration (incl. graceful stop):
           * default: Up to 10 looping VUs for 30s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)

     test status: Finished

Run    [======================================] Finished

Run    [======================================] Finished

Enter fullscreen mode Exit fullscreen mode

Observe que a execution é destacada como via cloud, e um link de acesso ao output de execução está disponível, nele os dados de execução estarão disponíveis.

Acessando o relatório de execução, podemos ter acesso as métricas coletadas pela execução:

Image description

Execução local, com métricas em cloud😲

Uma outra possibilidade que a Grafana Cloud K6 nos proporciona, é a capacidade de executar nosso script localmente e enviar as métricas resultantes para o nosso projeto na nuvem no Grafana Cloud.

Para realizar isso, basta executar o seguinte comando na sua CLI:

k6 run --out cloud script.js
Enter fullscreen mode Exit fullscreen mode

Como saída você terá todos as métricas que o K6 já disponibiliza no output da CLI:


          /\      |‾‾| /‾‾/   /‾‾/
     /\  /  \     |  |/  /   /  /
    /  \/    \    |     (   /   ‾‾\
   /          \   |  |\  \ |  (‾)  |
  / __________ \  |__| \__\ \_____/ .io

  execution: local
     script: script.js
     output: cloud (https://marlo2222.grafana.net/a/k6-app/runs/1922875)

  scenarios: (100.00%) 1 scenario, 10 max VUs, 1m0s max duration (incl. graceful stop):
           * default: Up to 10 looping VUs for 30s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)


     ✓ status 200

   ✓ checks.........................: 100.00% ✓ 168       ✗ 0
     data_received..................: 235 kB  7.8 kB/s
     data_sent......................: 52 kB   1.7 kB/s
     http_req_blocked...............: avg=7.05ms   min=0s       med=0s       max=281.88ms p(90)=0s       p(95)=0s
     http_req_connecting............: avg=3.43ms   min=0s       med=0s       max=134.81ms p(90)=0s       p(95)=0s
   ✓ http_req_duration..............: avg=121.31ms min=109.75ms med=120.41ms max=227.33ms p(90)=129.66ms p(95)=136.04ms
       { expected_response:true }...: avg=121.31ms min=109.75ms med=120.41ms max=227.33ms p(90)=129.66ms p(95)=136.04ms
     http_req_failed................: 0.00%   ✓ 0         ✗ 336
     http_req_receiving.............: avg=21.66µs  min=0s       med=0s       max=1.01ms   p(90)=34.35µs  p(95)=66.59µs
     http_req_sending...............: avg=10.65µs  min=0s       med=0s       max=766.1µs  p(90)=0s       p(95)=63.72µs
     http_req_tls_handshaking.......: avg=3.44ms   min=0s       med=0s       max=134.52ms p(90)=0s       p(95)=0s
     http_req_waiting...............: avg=121.27ms min=109.6ms  med=120.34ms max=227.33ms p(90)=129.66ms p(95)=135.95ms
     http_reqs......................: 336     11.164001/s
     iteration_duration.............: avg=1.26s    min=1.23s    med=1.24s    max=1.55s    p(90)=1.28s    p(95)=1.46s
     iterations.....................: 168     5.582/s
     vus............................: 2       min=1       max=10
     vus_max........................: 10      min=10      max=10


running (0m30.1s), 00/10 VUs, 168 complete and 0 interrupted iterations
default ✓ [======================================] 00/10 VUs  30s

Enter fullscreen mode Exit fullscreen mode

Mas ao acessar seu link de output da execução ou o próprio projeto na grafana cloud, você terá acesso as métricas coletadas:

Image description

Observe que a execução local para o mesmo cenário apresentou menor vazão(RPS) de requisições bem como um maior response time para o p(95), sendo quase 6 vezes maior.

Conclusão💖

Como evidenciamos anteriormente, o processo de integração entre K6 e Grafana Cloud K6 é descomplicado e traz consigo inúmeras vantagens, sendo a maior confiabilidade nas métricas obtidas uma das mais significativas.😄

Vale ressaltar, também, o período de uso gratuito mensal, no qual as horas disponibilizadas podem ser de extrema utilidade em provas de conceito, permitindo validar a confiabilidade dos dados coletados e demonstrar os benefícios de adotar um ambiente de Performance Testing as a Service.📚

Gostou do conteúdo e quer saber mais sobre testes de performance com K6? Então não deixe de conferir meu curso na Udemy:

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more