Extensão do k6 para InfluxDB v2, que adiciona suporte para a versão mais recente v2
e a API de compatibilidade para v1.8+.
O núcleo do k6
já suporta o InfluxDB v1, então a sensação natural seria fazer o mesmo para o v2
. Infelizmente, o v2
introduziu algumas mudanças significativas nas partes principais da API. Isso tornaria difícil suportar ambas as versões sem comprometer a retrocompatibilidade ou introduzir mudanças que afetariam a experiência atual dos usuários do k6 com a saída do InfluxDB, com alta probabilidade de criar mais confusão para os usuários do k6. Por esse motivo principal, a equipe de desenvolvimento do k6
decidiu criar uma nova extensão independente para o InfluxDB v2.
Para construir um binário do k6
com esta extensão, primeiro certifique-se de ter os pré-requisitos:
- Git
- xk6
- Construa com
xk6
:
xk6 build --with github.com/grafana/xk6-output-influxdb
Isso resultará em um binário k6 no diretório atual.
- Execute com o binário k6 recém-construído:
K6_INFLUXDB_ORGANIZATION=<insira-aqui-o-nome-da-organizacao> \
K6_INFLUXDB_BUCKET=<insira-aqui-o-nome-do-bucket> \
K6_INFLUXDB_TOKEN=<insira-aqui-um-token-válido> \
./k6 run -o xk6-influxdb=http://localhost:8086 <script.js>
Usando Docker
Este Dockerfile constroi uma imagem docker com o binário k6.
Opções para controle detalhado de flushes e conexões.
ENV | Padrão | Descrição |
---|---|---|
K6_INFLUXDB_ORGANIZATION | A Organization. | |
K6_INFLUXDB_BUCKET | O Bucket. | |
K6_INFLUXDB_TOKEN | O Token. | |
K6_INFLUXDB_ADDR | http://localhost:8086 | O endereço da instância. |
K6_INFLUXDB_PUSH_INTERVAL | 1s | TA frequência de flush das métricas do k6 . |
K6_INFLUXDB_CONCURRENT_WRITES | 4 | Número de solicitações concorrentes para flush de dados. É útil quando uma solicitação leva mais tempo do que o esperado (mais do que o intervalo de flush). |
K6_INFLUXDB_TAGS_AS_FIELDS | vu:int,iter:int,url | Uma string separada por vírgulas para definir métricas do k6 como campos não indexáveis (em vez de tags). Um tipo opcional pode ser especificado usando, como em vu, que tornará o campo um inteiro. Os tipos de campo possíveis são int, bool, float e string, que é o padrão. Exemplo: vu,iter,url,event_time. |
K6_INFLUXDB_INSECURE | false | Quando true , ignorará a verificação do certificado https . |
K6_INFLUXDB_PRECISION | 1ns | A Precision do timestamp. |
Este repositório inclui um arquivo docker-compose.yml que inicia InfluxDB, Grafana e k6. Esta é apenas uma configuração rápida para mostrar o uso; para um caso de uso real, você pode querer implantar fora do docker, usar volumes e provavelmente atualizar versões.
Clone o repositório para começar e siga estes passos:
-
Coloque seus scripts k6 no diretório
samples
ou use o exemplohttp_2.js
. -
Inicie o ambiente docker compose.
docker compose up -d
# Output Creating xk6-output-influxdb_influxdb_1 ... done Creating xk6-output-influxdb_k6_1 ... done Creating xk6-output-influxdb_grafana_1 ... done
-
Utilize a imagem Docker do k6 para executar o script k6 e enviar métricas para o contêiner InfluxDB iniciado na etapa anterior. Você deve [definir a tag
testid
]https://k6.io/docs/using-k6/tags-and-groups/#test-wide-tags) com um identificador exclusivo para segmentar as métricas em execuções de teste discretas para os painéis do Grafana.docker compose run --rm -T k6 run -<samples/http.js --tag testid=<ID_DO_TESTE>
For convenience, the
docker-run.sh
can be used to simply:./docker-run.sh samples/http_2.js
-
Acesse http://localhost:3000/ para ver o resultado no grafana
Este repositório inclui um Dashboard).
A v2 inclui uma API de compatibilidade com InfluxDB v1.8+ que adiciona endpoints para comunicação com um InfluxDB v1.
Resumo das diferenças no uso da API do Cliente:
- Use o formato username para um token de autenticação. Exemplo: my-user. Use uma string vazia ("") se o servidor não exigir autenticação.
- O parâmetro de organização não é utilizado. Use uma string vazia ("") onde necessário.
- Use o formato database/retention-policy onde um bucket é necessário. Pule a política de retenção se a política de retenção padrão deve ser usada. Exemplos: telegraf/autogen, telegraf.