Skip to content

Write grafana/k6 in TypeScript, run in GitHub Actions and send metrics via OpenTelemetry

License

Notifications You must be signed in to change notification settings

int128/typescript-k6

Repository files navigation

typescript-k6 test

Write your grafana/k6 test with TypeScript, and run the test in GitHub Actions.

Getting Started

Run in GitHub Actions

Create a pull request and then k6 will run.

Run locally

% k6 run src/http-get.ts

         /\      Grafana   /‾‾/
    /\  /  \     |\  __   /  /
   /  \/    \    | |/ /  /   ‾‾\
  /          \   |   (  |  (‾)  |
 / __________ \  |_|\_\  \_____/

     execution: local
        script: src/http-get.ts
        output: -

     scenarios: (100.00%) 1 scenario, 10 max VUs, 35s max duration (incl. graceful stop):
              * default: 10 looping VUs for 5s (gracefulStop: 30s)


     data_received..................: 504 kB 87 kB/s
     data_sent......................: 7.3 kB 1.3 kB/s
     http_req_blocked...............: avg=211.96ms min=2µs      med=6µs      max=856.16ms p(90)=844.27ms p(95)=855.71ms
     http_req_connecting............: avg=47.51ms  min=0s       med=0s       max=196.59ms p(90)=190.64ms p(95)=192.15ms
     http_req_duration..............: avg=201.2ms  min=184.74ms med=191.84ms max=379.63ms p(90)=197.48ms p(95)=207.26ms
       { expected_response:true }...: avg=201.2ms  min=184.74ms med=191.84ms max=379.63ms p(90)=197.48ms p(95)=207.26ms
     http_req_failed................: 0.00%  0 out of 40
     http_req_receiving.............: avg=9.47ms   min=21µs     med=64µs     max=188.36ms p(90)=245.5µs  p(95)=10.08ms
     http_req_sending...............: avg=34.69µs  min=5µs      med=16µs     max=513µs    p(90)=79.6µs   p(95)=87.44µs
     http_req_tls_handshaking.......: avg=143.27ms min=0s       med=0s       max=587.26ms p(90)=573.75ms p(95)=575.04ms
     http_req_waiting...............: avg=191.69ms min=184.57ms med=191.42ms max=198.19ms p(90)=196.22ms p(95)=196.87ms
     http_reqs......................: 40     6.896836/s
     iteration_duration.............: avg=1.41s    min=1.18s    med=1.19s    max=2.05s    p(90)=2.04s    p(95)=2.04s
     iterations.....................: 40     6.896836/s
     vus............................: 10     min=10      max=10
     vus_max........................: 10     min=10      max=10


running (05.8s), 00/10 VUs, 40 complete and 0 interrupted iterations
default ✓ [======================================] 10 VUs  5s

Datadog k6 integration

Prepare

To send the metrics from GitHub Actions to Datadog,

  1. Create an API key of Datadog.
  2. Put the API key to the repository secret DATADOG_API_KEY in GitHub Actions.
  3. Enable k6 integration in Datadog.

Run

The workflow runs the test and exports the metrics to Datadog via OpenTelemetry.

  1. Start the Datadog Agent container.
  2. Run k6 with OpenTelemetry output.
  3. Datadog Agent sends the metrics to Datadog.

Here is an example of metrics.

image

About

Write grafana/k6 in TypeScript, run in GitHub Actions and send metrics via OpenTelemetry

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •