1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
3 .. http://creativecommons.org/licenses/by/4.0
5 =========================
6 KVMFORNFV Dashboard Guide
7 =========================
9 Dashboard for KVM4NFV Daily Test Results
10 ----------------------------------------
15 This chapter explains the procedure to configure the InfluxDB and Grafana on Node1 or Node2
16 depending on the testtype to publish KVM4NFV test results. The cyclictest cases are executed
17 and results are published on Yardstick Dashboard(Grafana). InfluxDB is the database which will
18 store the cyclictest results and Grafana is a visualisation suite to view the maximum,minumum and
19 average values of the time series data of cyclictest results.The framework is shown in below image.
21 .. figure:: images/dashboard-architecture.png
22 :name: dashboard-architecture
29 +-----------------------------+--------------------------------------------+
31 | **Release** | **Features** |
33 +=============================+============================================+
34 | | - Data published in Json file format |
35 | Colorado | - No database support to store the test's |
36 | | latency values of cyclictest |
37 | | - For each run, the previous run's output |
38 | | file is replaced with a new file with |
39 | | currents latency values. |
40 +-----------------------------+--------------------------------------------+
41 | | - Test results are stored in Influxdb |
42 | | - Graphical representation of the latency |
43 | Danube | values using Grafana suite. (Dashboard) |
44 | | - Supports graphical view for multiple |
45 | | testcases and test-types (Stress/Idle) |
46 +-----------------------------+--------------------------------------------+
51 To configure Yardstick, InfluxDB and Grafana for KVMFORNFV project following sequence of steps are followed:
55 All the below steps are done as per the script, which is a part of CICD integration.
60 git clone https://gerrit.opnfv.org/gerrit/yardstick
63 docker pull tutum/influxdb
64 docker run -d --name influxdb -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 tutum/influxdb
65 docker exec -it influxdb bash
67 >CREATE USER root WITH PASSWORD 'root' WITH ALL PRIVILEGES
68 >CREATE DATABASE yardstick;
73 docker pull grafana/grafana
74 docker run -d --name grafana -p 3000:3000 grafana/grafana
76 The Yardstick document for Grafana and InfluxDB configuration can be found `here`_.
78 .. _here: https://wiki.opnfv.org/display/yardstick/How+to+deploy+InfluxDB+and+Grafana+locally
80 Configuring the Dispatcher Type:
81 ---------------------------------
82 Need to configure the dispatcher type in /etc/yardstick/yardstick.conf depending on the dispatcher
83 methods which are used to store the cyclictest results. A sample yardstick.conf can be found at
84 /yardstick/etc/yardstick.conf.sample, which can be copied to /etc/yardstick.
88 mkdir -p /etc/yardstick/
89 cp /yardstick/etc/yardstick.conf.sample /etc/yardstick/yardstick.conf
91 **Dispatcher Modules:**
93 Three type of dispatcher methods are available to store the cyclictest results.
99 **1. File**: Default Dispatcher module is file. If the dispatcher module is configured as a file,then the test results are stored in a temporary file yardstick.out
100 ( default path: /tmp/yardstick.out).
101 Dispatcher module of "Verify Job" is "Default". So,the results are stored in Yardstick.out file for verify job. Storing all the verify jobs in InfluxDB database causes redundancy of latency values. Hence, a File output format is prefered.
110 file_path = /tmp/yardstick.out
114 **2. Influxdb**: If the dispatcher module is configured as influxdb, then the test results are stored in Influxdb. Users can check test resultsstored in the Influxdb(Database) on Grafana which is used to visualize the time series data.
116 To configure the influxdb, the following content in /etc/yardstick/yardstick.conf need to updated
122 dispatcher = influxdb
124 [dispatcher_influxdb]
126 target = http://127.0.0.1:8086 ##Mention the IP where influxdb is running
131 Dispatcher module of "Daily Job" is Influxdb. So, the results are stored in influxdb and then published to Dashboard.
133 **3. HTTP**: If the dispatcher module is configured as http, users can check test result on OPNFV testing dashboard which uses MongoDB as backend.
143 target = http://127.0.0.1:8000/results
145 .. figure:: images/UseCaseDashboard.png
148 Detailing the dispatcher module in verify and daily Jobs:
149 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
151 KVM4NFV updates the dispatcher module in the yardstick configuration file(/etc/yardstick/yardstick.conf) depending on the Job type(Verify/Daily). Once the test is completed, results are published to the respective dispatcher modules.
153 Dispatcher module is configured for each Job type as mentioned below.
155 1. ``Verify Job`` : Default "DISPATCHER_TYPE" i.e. file(/tmp/yardstick.out) is used. User can also see the test results on Jenkins console log.
159 *"max": "00030", "avg": "00006", "min": "00006"*
161 2. ``Daily Job`` : Opnfv Influxdb url is configured as dispatcher module.
165 DISPATCHER_TYPE=influxdb
166 DISPATCHER_INFLUXDB_TARGET="http://104.197.68.199:8086"
168 Influxdb only supports line protocol, and the json protocol is deprecated.
170 For example, the raw_result of cyclictest in json format is:
174 "timestamp": 1478234859.065317,
187 With the help of "influxdb_line_protocol", the json is transformed as a line string:
190 'kvmfornfv_cyclictest_idle_idle,deploy_scenario=unknown,host=kvm.LF,
191 installer=unknown,pod_name=unknown,runner_id=23,scenarios=Cyclictest,
192 task_id=e7be7516-9eae-406e-84b6-e931866fa793,version=unknown
193 avg="00008",max="00012",min="00007" 1478234859065316864'
197 Influxdb api which is already implemented in `Influxdb`_ will post the data in line format into the database.
199 ``Displaying Results on Grafana dashboard:``
201 - Once the test results are stored in Influxdb, dashboard configuration file(Json) which used to display the cyclictest results on Grafana need to be created by following the `Grafana-procedure`_ and then pushed into `yardstick-repo`_
203 - Grafana can be accessed at `Login`_ using credentials opnfv/opnfv and used for visualizing the collected test data as shown in `Visual`_\
206 .. figure:: images/Dashboard-screenshot-1.png
207 :name: dashboard-screenshot-1
211 .. figure:: images/Dashboard-screenshot-2.png
212 :name: dashboard-screenshot-2
216 .. _Influxdb: https://git.opnfv.org/cgit/yardstick/tree/yardstick/dispatcher/influxdb.py
218 .. _Visual: http://testresults.opnfv.org/grafana/dashboard/db/kvmfornfv-cyclictest
220 .. _Login: http://testresults.opnfv.org/grafana/login
222 .. _Grafana-procedure: https://wiki.opnfv.org/display/yardstick/How+to+work+with+grafana+dashboard
224 .. _yardstick-repo: https://git.opnfv.org/cgit/yardstick/tree/dashboard/KVMFORNFV-Cyclictest
226 .. _GrafanaDoc: http://docs.grafana.org/
228 Understanding Kvmfornfv Grafana Dashboard
229 ------------------------------------------
231 The Kvmfornfv dashboard found at http://testresults.opnfv.org/ currently supports graphical view of cyclictest. For viewing Kvmfornfv dashboarduse,
235 http://testresults.opnfv.org/grafana/dashboard/db/kvmfornfv-cyclictest
237 The login details are:
245 The JSON of the kvmfonfv-cyclictest dashboard can be found at.,
247 $ git clone https://gerrit.opnfv.org/gerrit/yardstick.git
248 $ cd yardstick/dashboard
249 $ cat KVMFORNFV-Cyclictest
251 The Dashboard has four tables, each representing a specific test-type of cyclictest case,
253 - Kvmfornfv_Cyclictest_Idle-Idle
254 - Kvmfornfv_Cyclictest_CPUstress-Idle
255 - Kvmfornfv_Cyclictest_Memorystress-Idle
256 - Kvmfornfv_Cyclictest_IOstress-Idle
260 - For all graphs, X-axis is marked with time stamps, Y-axis with value in microsecond units.
262 **A brief about what each graph of the dashboard represents:**
266 `Idle-Idle`_ graph displays the Average,Maximum and Minimum latency values obtained by running Idle_Idle test-type of the cyclictest. Idle_Idleimplies that no stress is applied on the Host or the Guest.
268 .. _Idle-Idle: http://testresults.opnfv.org/grafana/dashboard/db/kvmfornfv-cyclictest?panelId=10&fullscreen
270 .. figure:: images/Idle-Idle.png
271 :name: Idle-Idle graph
275 2. CPU_Stress-Idle Graph
276 ~~~~~~~~~~~~~~~~~~~~~~~~~
277 `Cpu_Stress-Idle`_ graph displays the Average,Maximum and Minimum latency values obtained by running Idle_Idle test-type of the cyclictest. Idle_Idle implies that CPU stress is applied on the Host and no stress on the Guest.
279 .. _Cpu_stress-Idle: http://testresults.opnfv.org/grafana/dashboard/db/kvmfornfv-cyclictest?panelId=11&fullscreen
281 .. figure:: images/Cpustress-Idle.png
282 :name: cpustress-idle graph
286 3. Memory_Stress-Idle Graph
287 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
288 `Memory_Stress-Idle`_ graph displays the Average,Maximum and Minimum latency values obtained by running Idle_Idle test-type of the Cyclictest. Idle_Idle implies that Memory stress is applied on the Host and no stress on the Guest.
290 .. _Memory_Stress-Idle: http://testresults.opnfv.org/grafana/dashboard/db/kvmfornfv-cyclictest?panelId=12&fullscreen
292 .. figure:: images/Memorystress-Idle.png
293 :name: memorystress-idle graph
297 4. IO_Stress-Idle Graph
298 ~~~~~~~~~~~~~~~~~~~~~~~~~
299 `IO_Stress-Idle`_ graph displays the Average,Maximum and Minimum latency values obtained by running Idle_Idle test-type of the Cyclictest. Idle_Idle implies that IO stress is applied on the Host and no stress on the Guest.
301 .. _IO_Stress-Idle: http://testresults.opnfv.org/grafana/dashboard/db/kvmfornfv-cyclictest?panelId=13&fullscreen
303 .. figure:: images/IOstress-Idle.png
304 :name: iostress-idle graph
310 The future work will include adding the kvmfornfv_Packet-forwarding test results into Grafana and influxdb.