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
を追加し、このラベルを可視化したい対象のテストに設定しておきます。
設定ファイルの準備
GitHub のプロジェクトページ からクローンします。
| 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 を設定します。
| oauth_bearer_token = "12345678-1234-1234-1234-1234567890ab" # Insert OAuth Bearer Token
|
コンテナの開始
ここまで準備が出来たら docker compose でコンテナを開始します。
尚、コンテナ起動後のログイン情報はデフォルトで以下です。
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
をクリックします。
General
配下に Thousand Eyes Grafana Dashboard
があるので、これをクリックします。
grafana
ラベルを付与したテストが以下のように可視化されていれば成功です。 可視化対象テストを切り替えたい場合は画面左上の TEST ID
項目をクリックし、対象のテスト ID を切り替えます。
参考
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
|