diff --git a/ansible/README.shaker-viz.rst b/ansible/README.shaker-viz.rst new file mode 100644 index 000000000..9868b204b --- /dev/null +++ b/ansible/README.shaker-viz.rst @@ -0,0 +1,18 @@ +Shaker Data Plane Performance Dashboard +======================================= + +The Shaker dashboard aims to present data plane performance of OpenStack VMs +connected in different network topologies in a summarized form. Three distinct +visulizations representing L2, L3 E-W and L3 N-S topologies along with the +corrensponding markdown to exaplain each visualization make the "Browbeat Shaker +Scenarios with Throughput vs Concurrency" dashboard. For each network topology, +average throughput for TCP download and upload in Mbps is expressed vs the VM +conccurency (number of pairs of VMs firing traffic at any given moment). For +example, in the L2 scenario if the average throughput is 4000 Mbps at a +concurrency of 2, it means that each pair of VMs involved average at 4000 Mbps +for the duration of the test, bringing the total throughput to 8000 Mbps(avg +throughput*concurrency). + +You can filter based on browbeat_uuid and shaker_uuid to view results from a +specific run only. + diff --git a/ansible/install/kibana-visuals.yml b/ansible/install/kibana-visuals.yml index bf5d5fd6e..c3fbfbdf4 100644 --- a/ansible/install/kibana-visuals.yml +++ b/ansible/install/kibana-visuals.yml @@ -10,8 +10,11 @@ # Vars for templatized Visualizations: - "{{browbeat_path}}/ansible/install/roles/kibana-visualization/vars/keystone_osp_version_token_visualizations.yml" - "{{browbeat_path}}/ansible/install/roles/kibana-visualization/vars/keystone_processes_threads_visualizations.yml" + - "{{browbeat_path}}/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_visualizations.yml" # Vars for templatized Dashboards: - "{{browbeat_path}}/ansible/install/roles/kibana-visualization/vars/keystone_osp_version_token_dashboards.yml" - "{{browbeat_path}}/ansible/install/roles/kibana-visualization/vars/keystone_processes_threads_dashboards.yml" + - "{{browbeat_path}}/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_dashboard.yml" + roles: - kibana-visualization diff --git a/ansible/install/roles/kibana-visualization/tasks/main.yml b/ansible/install/roles/kibana-visualization/tasks/main.yml index 655c6a5ca..0a4b15b94 100644 --- a/ansible/install/roles/kibana-visualization/tasks/main.yml +++ b/ansible/install/roles/kibana-visualization/tasks/main.yml @@ -19,6 +19,21 @@ - "{{keystone_osp_version_token_dashboards}}" - "{{keystone_processes_threads_dashboards}}" +- name: Generate Shaker Visualizations + template: + src: "{{item.template}}" + dest: "{{browbeat_path}}/visualization/Shaker/visualization/{{item.title}}.json" + with_flattened: + - "{{shaker_scenario_throughput_concurrency_visualizations}}" + +- name: Generate Shaker Dashboard + template: + src: dashboard.json.j2 + dest: "{{browbeat_path}}/visualization/Shaker/dashboard/{{item.file_name}}" + with_flattened: + - "{{shaker_scenario_throughput_concurrency_dashboard}}" + + - name: Remove Searches uri: url: http://{{ es_ip }}:{{ es_local_port }}/{{ es_kibana_index }}/search/{{ item | basename | regex_replace('\.json','') }} @@ -100,3 +115,17 @@ with_flattened: - "{{keystone_osp_version_token_dashboards}}" - "{{keystone_processes_threads_dashboards}}" + +- name: Cleanup Shaker Visualizations + file: + path: "{{browbeat_path}}/visualization/Shaker/visualization/{{item.title}}.json" + state: absent + with_items: + - "{{shaker_scenario_throughput_concurrency_visualizations}}" + +- name: Cleanup Shaker Dashboards + file: + path: "{{browbeat_path}}/visualization/Shaker/dashboard/{{item.file_name}}" + state: absent + with_items: + - "{{shaker_scenario_throughput_concurrency_dashboard}}" diff --git a/ansible/install/roles/kibana-visualization/templates/shaker-throughput-concurrency.json.j2 b/ansible/install/roles/kibana-visualization/templates/shaker-throughput-concurrency.json.j2 new file mode 100644 index 000000000..61cc7a19f --- /dev/null +++ b/ansible/install/roles/kibana-visualization/templates/shaker-throughput-concurrency.json.j2 @@ -0,0 +1,9 @@ +{ + "title": "{{item.title}}", + "visState": "{ \"title\": \"{{item.title}}\", \"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"defaultYExtents\":false,\"mode\":\"grouped\",\"scale\":\"linear\",\"setYExtents\":false,\"shareYAxis\":true,\"times\":[],\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"result.value\"}},{\"id\":\"2\",\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"result.result_type\",\"size\":2,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"3\",\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"record.concurrency\",\"size\":200,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}", + "description": "", + "version": 1, + "kibanaSavedObjectMeta": { + "searchSourceJSON": "{\"index\":\"[browbeat-shaker-]YYYY.MM.DD\",\"query\":{\"query_string\":{\"query\":\"{{item.query}}\",\"analyze_wildcard\":true}},\"filter\":[]}" + } + } diff --git a/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_dashboard.yml b/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_dashboard.yml new file mode 100644 index 000000000..d66d72cba --- /dev/null +++ b/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_dashboard.yml @@ -0,0 +1,52 @@ +--- +# +# Shaker Scenario Throughput vs Concurrency Dashboard +# + +shaker_scenario_throughput_concurrency_dashboard: + - file_name: "ShakerScenarioThroughputConcurrency.json" + title: "Browbeat Shaker Scenarios with Throughput vs Concurrency" + darkTheme: "true" + panels: + - id: "Shaker-L2" + type: "visualization" + panelIndex: 1 + size_x: 12 + size_y: 2 + col: 1 + row: 1 + - id: "Browbeat-Shaker-L2" + type: "visualization" + panelIndex: 2 + size_x: 12 + size_y: 4 + col: 1 + row: 3 + - id: "Shaker-L3-ES" + type: "visualization" + panelIndex: 3 + size_x: 12 + size_y: 2 + col: 1 + row: 7 + - id: "Browbeat-Shaker-L3-East-West" + type: "visualization" + panelIndex: 4 + size_x: 12 + size_y: 4 + col: 1 + row: 9 + - id: "Shaker-L3-NS" + type: "visualization" + panelIndex: 5 + size_x: 12 + size_y: 2 + col: 1 + row: 13 + - id: "Browbeat-Shaker-L3-North-South" + type: "visualization" + panelIndex: 6 + size_x: 12 + size_y: 4 + col: 1 + row: 15 diff --git a/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_visualizations.yml b/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_visualizations.yml new file mode 100644 index 000000000..f3ea39c33 --- /dev/null +++ b/ansible/install/roles/kibana-visualization/vars/shaker_scenario_throughput_concurrency_visualizations.yml @@ -0,0 +1,24 @@ +--- +# +# Shaker Scenario-Throughput-Concurrency - Visualizations Variables +# + +shaker_scenario_throughput_concurrency_visualizations: + - title: "Shaker-L2" + template: "markdown.json.j2" + markdown: "# Shaker-L2-Avg Throughput vs Concurency\\\\n[Browbeat](https://github.com/openstack/browbeat)\\\\n\\\\n[Shaker-L2](https://github.com/openstack/shaker/blob/master/doc/source/examples/full_l2.rst)" + - title: "Browbeat-Shaker-L2" + template: "shaker-throughput-concurrency.json.j2" + query: "shaker_test_info.deployment.template: l2.hot" + - title: "Shaker-L3-ES" + template: "markdown.json.j2" + markdown: "# Shaker-L3-East-West-Avg Throughput vs Concurency\\\\n[Browbeat](https://github.com/openstack/browbeat)\\\\n\\\\n[Shaker-L3-East-West](https://github.com/openstack/shaker/blob/master/doc/source/examples/full_l3_east_west.rst)" + - title: "Browbeat-Shaker-L3-East-West" + template: "shaker-throughput-concurrency.json.j2" + query: "shaker_test_info.deployment.template: l3_east_west.hot" + - title: "Shaker-L3-NS" + template: "markdown.json.j2" + markdown: "# Shaker-L3-North-South-Avg Throughput vs Concurency\\\\n[Browbeat](https://github.com/openstack/browbeat)\\\\n\\\\n[Shaker-L3-East-West](https://github.com/openstack/shaker/blob/master/doc/source/examples/full_l3_north_south.rst)" + - title: "Browbeat-Shaker-L3-North-South" + template: "shaker-throughput-concurrency.json.j2" + query: "shaker_test_info.deployment.template: l3_north_south.hot" diff --git a/visualization/Shaker/dashboard/.gitignore b/visualization/Shaker/dashboard/.gitignore new file mode 100644 index 000000000..ebb48f757 --- /dev/null +++ b/visualization/Shaker/dashboard/.gitignore @@ -0,0 +1,4 @@ +# This .gitignore is included to ensure this directory exists +* +# Ignores everything, except this file +!.gitignore diff --git a/visualization/Shaker/visualization/.gitignore b/visualization/Shaker/visualization/.gitignore new file mode 100644 index 000000000..ebb48f757 --- /dev/null +++ b/visualization/Shaker/visualization/.gitignore @@ -0,0 +1,4 @@ +# This .gitignore is included to ensure this directory exists +* +# Ignores everything, except this file +!.gitignore