JMeterメトリクスをInfluxDBに格納しGrafanaで可視化する

性能評価

性能評価をする際に JMeter のメトリクスをリアルタイムで監視したかったので,Backend Listner で JMeter のメトリクスを InfluxDB に格納し,Grafana で可視化しました。

スポンサーリンク

概要

ソフト内容
InfluxDB時系列DB。メトリクスをここに格納します。
Grafana様々なデータソースを可視化するGUIツールです。
  • JMeter のメトリクスを InfluxDB に送り,Grafana で可視化します。
    • JMeter -> InfluxDB -> Grafana

Docker コンテナ作成

ディレクトリ

  • ローカルに InfluxDB, Grafana のデータを保持出来るようにディレクトリを用意します。
$ wsl pwd
/mnt/c/LoadTest/Docker
$ wsl ls
grafana  influxdb

influxdb.conf

  • Graphite フォーマットでデータを受信させるため,Graphite のプラグインを有効にします。
$ pwd
/mnt/c/LoadTest/Docker
$ vi influxdb/etc/influxdb.conf
[meta]
  dir = "/var/lib/influxdb/meta"

[data]
  dir = "/var/lib/influxdb/data"
  engine = "tsm1"
  wal-dir = "/var/lib/influxdb/wal"

# Configure the graphite api
[input_plugins.graphite]
enabled = true
address = "0.0.0.0" # If not set, is actually set to bind-address.
port = 2003
database = "jmeter"  # store graphite data in this database

docker-compose.yml

  • influxdb, grafana のコンテナを作成します。
$ pwd
/mnt/c/LoadTest/Docker
$ vi docker-compose.yml
$ ls
docker-compose.yml  grafana  influxdb
version: "3"
services:
  influxdb:
    image: influxdb:latest
    ports:
      - "8086:8086"
    volumes:
      - ./influxdb/data:/var/lib/influxdb
      - ./influxdb/etc:/etc/influxdb
  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    volumes:
      - ./grafana:/var/lib/grafana/
    depends_on:
      - influxdb

コンテナ作成

$ pwd
/mnt/e/docker/load_test
$ docker-compose up -d
$ docker-compose ps
         Name                       Command               State           Ports
----------------------------------------------------------------------------------------
load_test_grafana_1      /run.sh                          Up      0.0.0.0:3000->3000/tcp
load_test_influxdb_1     /entrypoint.sh influxd           Up      0.0.0.0:8086->8086/tcp

InfluxDB

動作確認

$ curl -sl -I http://localhost:8086/ping
HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: 47b37236-8a8b-11ea-8001-0242ac120002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: 47b37236-8a8b-11ea-8001-0242ac120002
Date: Thu, 30 Apr 2020 02:35:39 GMT

DB 作成

  • JMeter のメトリクスを格納する DB を作成します。
$ curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE jmeter"
HTTP/1.1 200 OK
Content-Type: application/json
Request-Id: e57671ad-8a95-11ea-8002-0242ac120002
X-Influxdb-Build: OSS
X-Influxdb-Version: 1.8.0
X-Request-Id: e57671ad-8a95-11ea-8002-0242ac120002
Date: Thu, 30 Apr 2020 03:51:39 GMT
Transfer-Encoding: chunked

{"results":[{"statement_id":0}]}

Grafana

管理者作成

useridpassword
adminadmin

data source 追加

  • Add data source をクリックします。
  • influxdb を選択します。
  • 下記設定し Test & Save をクリックします。
項目設定
Nameinfluxdb
URLhttp://xxx.xxx.xxx.xxx:8086
AccessServer
Databasejmeter
Useradmin
Passwordadmin
HTTP MethodGET

Dashboard 追加

  • + アイコンをクリックし,Import を選択します。
  • Grafana.com Dashboard に 5496 を入力し,Load をクリックします。
  • 以下項目を設定し Import をクリックします。
項目設定
DB nameinfluxdb
Measurement namejmeter

JMeter シナリオ編集

Backend Listener 追加

JMeter シナリオに Backend Listener を追加します。

  • テスト計画を右クリックし,追加\リスナー\Backend Listener を選択します。
  • Backend Listener implemantation で org.apache.jmeter.visualizers.backend.influxdb.influxdbBackendListenerClient を選択します。
項目設定
influxdbUrlhttp://xxx.xxx.xxx.xxx:8086/write?db=jmeter
summaryOnlyfalse
application任意
measurementjmeter
タイトルとURLをコピーしました