Skip to content

ThousandEyes のテスト結果を Grafana で可視化する

ThousandEyes で可視化したデータは勿論、ThousandEyes の Web 管理画面からテスト結果を確認することが出来ます。 ですが、Cisco Devnet で公開されている thousandeyes-grafana-dashboard を使うと手軽に Grafana で可視化することが出来ます。 今回はこちらの利用方法をメモしておきます。

可視化対象のテスト種別

GitHub のプロジェクトページSupported Functions セクションには以下の記載があります。 現状では下記のテスト種別のみ、Grafana での可視化対象になるようです。

  • Currently Supported Tests:
    • (Web) Page load
    • (Web) HTTP server
    • (Network) End-to-End metrics
    • (Network) Path visualization

ラベルの作成

thousandeyes-grafana-dashboard では以下、いずれかの振る舞いを設定ファイルで指定可能なようです。 デフォルトでは「指定のタグ (ラベル) を付けられたテストのみ」が可視化対象です。 また、デフォルトで可視化対象とみなすラベルは grafana というキーワードです。 このキーワードも設定ファイルで変更可能です。

設定値 デフォルト 可視化の対象
0   全てのテスト
1 指定のタグ (ラベル) を付けられたテストのみ

その為、予め ThousandEyes の管理画面でテストのラベルに grafana を追加し、このラベルを可視化したい対象のテストに設定しておきます。

file

設定ファイルの準備

GitHub のプロジェクトページ からクローンします。

1
2
git clone https://github.com/flopach/thousandeyes-grafana-dashboard.git
cd thousandeyes-grafana-dashboard/docker/

設定ファイルは py_connector/config.py に存在します。 デフォルトのファイル状態から抜粋します。

py_connector/config.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# ThousandEyes Grafana Dashboard 1.0.1
# CISCO SAMPLE CODE LICENSE Version 1.1, Cisco Systems 2021, flopach

# IMPORTANT: If you already did once "docker-compose up" and want to change the settings,
# you have to rebuild the Docker Container: "docker-compose build"

# ================================= #
#       ThousandEyes Settings       #
# ================================= #

base_url = "https://api.thousandeyes.com/v6" # define API base URL and API version
oauth_bearer_token = "" # Insert OAuth Bearer Token
(snip)

12 行目に ThousandEyes の管理画面で発行した OAuth Bearer Token を指定する箇所があります。 以下のように、自身の環境に合わせた OAuth Bearer Token を設定します。

1
oauth_bearer_token = "12345678-1234-1234-1234-1234567890ab" # Insert OAuth Bearer Token

コンテナの開始

ここまで準備が出来たら docker compose でコンテナを開始します。

1
docker compose up -d

尚、コンテナ起動後のログイン情報はデフォルトで以下です。

Grafana

Key Value
Login URL http://ADDRESS:3000
Username admin
Password admin123

InfluxDB

Key Value
Login URL http://ADDRESS:8086
Username admin
Password admin123

Grafana へのアクセス

http://ADDRESS:3000/ へアクセスすると Grafana のログイン画面が表示されます。 画面左上にある General をクリックします。

file

General 配下に Thousand Eyes Grafana Dashboard があるので、これをクリックします。

file

grafana ラベルを付与したテストが以下のように可視化されていれば成功です。 可視化対象テストを切り替えたい場合は画面左上の TEST ID 項目をクリックし、対象のテスト ID を切り替えます。

file

参考

thousandeyes-grafana-dashboard/docker/docker-compose.yml

docker-compose.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# ThousandEyes Grafana Dashboard 1.0
# CISCO SAMPLE CODE LICENSE Version 1.1, Cisco Systems 2021, flopach
# Docker Compose file for easily setting up all services

version: '3'
services:
  influxdb:
    image: influxdb:2.0.8
    volumes:
      - ${PWD}/influxdbv2:/var/lib/influxdb2
    ports:
      - "8086:8086"
  influxdb_setup:
    image: influxdb:2.0.8
     #  do NOT edit OR sync parameters with config.py file
    entrypoint: influx setup --bucket sensordata_bucket -t sensordata_token123 -o sensordata_organization --username=admin --password=admin123 --host=http://influxdb:8086 -f
      # Wait for the influxd service in the influxdb container has fully bootstrapped before trying to setup an influxdb instance with the influxdb_cli service.
    restart: on-failure:15
  grafana:
    image: grafana/grafana:8.1.2
    ports:
      - '3000:3000'
    volumes:
      - ${PWD}/grafana-storage:/var/lib/grafana
      - ${PWD}/provisioning/dashboards:/etc/grafana/provisioning/dashboards
      - ${PWD}/provisioning/datasources:/etc/grafana/provisioning/datasources
    user: "$UID:$GID"
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin123
  py_connector:
    build: ${PWD}/py_connector/.
    depends_on:
      - grafana
      - influxdb
    restart: on-failure
    environment:
      - PYTHONUNBUFFERED=0
volumes:
  influxdbv2:
  grafana-storage:

thousandeyes-grafana-dashboard/py_connector/config.py

config.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# ThousandEyes Grafana Dashboard 1.0.1
# CISCO SAMPLE CODE LICENSE Version 1.1, Cisco Systems 2021, flopach

# IMPORTANT: If you already did once "docker-compose up" and want to change the settings,
# you have to rebuild the Docker Container: "docker-compose build"

# ================================= #
#       ThousandEyes Settings       #
# ================================= #

base_url = "https://api.thousandeyes.com/v6" # define API base URL and API version
oauth_bearer_token = "" # Insert OAuth Bearer Token

### 2 Options: py_connector will ADD tests based on this input from your ThousandEyes dashboard:
# 0 = add ALL test types as stated in test_types
# 1 = add ALL test types as stated in test_types AND which are TAGGED with the stated label_name
# Create your test label at https://app.thousandeyes.com/settings/tests/?tab=labels
enable_label_specific = 1 #change to 1 or 0
label_name = "grafana" #case sensitive!


### Define test types which should be added
# py_connector will add ALL test types below. You can specify the test type by removing one.
# page-load includes: (Web) Page load, (Web) HTTP server, (Network) End-to-End metrics, (Network) Path visualization
# http-server includes: (Web) HTTP server, (Network) End-to-End metrics, (Network) Path visualization
# More information: https://developer.thousandeyes.com/v6/test_data/
test_types = [ "page-load",
               "agent-to-agent",
               "agent-to-server",
               "http-server"]


### Set time window for historic data
# data will be retrieved from the specified amount of time ago up until the time of the request
# https://developer.thousandeyes.com/v6/#/timeranges
# examples: 12h --> 12 hours interval, 1d --> 24 hours interval
window = "1d"


### Set time interval (in seconds) for pulling new data
interval = 60


# IMPORTANT: If you already did once "docker-compose up" and want to change the settings,
# you have to rebuild the Docker Container: "docker-compose build"



# ================================= #
#   DO NOT EDIT IF YOU ARE UNSURE   #
# ================================= #

# static config data for InfluxDBv2
influx_token = "sensordata_token123"
influx_org = "sensordata_organization"
influx_bucket = "sensordata_bucket"
influx_url = "http://influxdb:8086" #docker http://influxdb:8086