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