📑

k6とinfluxdb2.4の組み合わせ

2022/09/19に公開

k6の公式ドキュメント通りにやるとエラーになるので、この記事を参考にしてエラー回避してみてねという話。

環境

  • windows10 WSL2
  • docker
  • k6
  • influxdb 2.x
  • grafana

構築

dockerhubを漁るとそれぞれのコンテナーが見つかると思うので、docker-composeで環境を用意する。

docker-compose(抜粋)
services:
  influxdb:
    image: influxdb
  grafana:
    image: grafana/grafana
    container_name: grafana
  k6:
    image: grafana/k6
    #image: loadimpact/k6

ついでにサンプル用のscript用意して

シナリオ
script.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
    stages: [
        { duration: '3s', target: 2},
        { duration: '1m5s', target: 10},
        { duration: '2s', target: 0},
    ]
};

export function setup() {
    return {accessToken: "ACCESS_TOKEN"}
}

export default function (setUpData) {
    const res = http.get('https://httpbin.test.k6.io/');
    check(res, { 'status was 200': (r) => r.status == 200 });
    sleep(1);
    console.log(setUpData);
}

export function teardown(setUpData) {
    console.log(setUpData);
}

そしてup -dしてk6実行すると

docker-compose run --rm k6 run --out influxdb=http://influxdb:8086/k6 - < script.js

influxdb周りでエラーになる。
グーグル先生に質問するとinfluxdb2系使いたければ自分でk6ビルドしてねという情報が見つかるので言う通りにする。

FROM golang:1.18-alpine as builder
WORKDIR $GOPATH/src/go.k6.io/k6
ADD . .
RUN apk --no-cache add git
RUN go install go.k6.io/xk6/cmd/xk6@latest
#RUN xk6 build --with github.com/grafana/xk6-output-influxdb=. --output /tmp/k6
RUN xk6 build --with github.com/grafana/xk6-output-influxdb --output /tmp/k6

FROM alpine:3.14
RUN apk add --no-cache ca-certificates && \
    adduser -D -u 12345 -g 12345 k6
COPY --from=builder /tmp/k6 /usr/bin/k6

USER 12345
WORKDIR /home/k6
ENTRYPOINT ["k6"]
docker-compose
  k6:
    build: .
    container_name: k6

再度k6を実行してみる。

docker-compose run --rm k6 run -o xk6-influxdb=http://influxdb:8086/k6db - < script.js

今度はエラーが出ない。

influxdbの確認
http://localhost:8086/ にアクセスする。
ログイン後に

bucketを押すとデータが入ってる事を確認出来る。

以上、k6の結果をinfluxdb2.4に流すところまでの確認でした。

ついでにgrafanaの確認をしたい場合は http://localhost:3000/ にアクセスしてinfluxdbをdatasourceに追加するだけでOK。特にuser/pwを指定せずにコンテナ立てた場合はadmin/adminでログインできるので試してみよう。


docker-compose.yamlscriptなどのセットをgithubで公開しようと思っていたのだけど、テストケース次第ではメモリ不足でERROR: 137になる問題等と格闘中なので公開するか悩み中。
パラメーター調整もしているけれど、あちらを立てればこちらが立たずな状態で調査中。
ランピングテストを安定して実行できるようにしたい。
※k6にメモリ16GB割り当てても食い潰してくれやがっちゃうので困る

Discussion