diff options
author | Pawel <pawel.kasperkiewicz@nokia.com> | 2020-06-19 10:30:10 +0200 |
---|---|---|
committer | Pawel <pawel.kasperkiewicz@nokia.com> | 2020-06-19 10:30:10 +0200 |
commit | 34a204f287a0095c31ede1771d794b95e81666c0 (patch) | |
tree | 6f823d1e59db08a9f1bf6173f9c499fe2fa453e4 | |
parent | eca7d951a7632b8d8e745ca6552eff1ab8e536bb (diff) |
Add DmaaP simulator, test scenarios and refactor dashboards
Issue-ID: DCAEGEN2-608
Signed-off-by: Pawel <pawel.kasperkiewicz@nokia.com>
Change-Id: I294183c7f80be53f1ca44724deb78abef41e08ed
17 files changed, 2754 insertions, 4006 deletions
diff --git a/performanceTests/Makefile b/performanceTests/Makefile index 3c56f186..f3f290ee 100644 --- a/performanceTests/Makefile +++ b/performanceTests/Makefile @@ -5,7 +5,7 @@ PERFORMANCE_TESTS_ENV_DIRECTORY = vesPerformanceTestsEnv RKE_KUBECONFIG_FILE_PATH = ~/.kube/config.onap # Targets -all: --copy-k8s-performance-tests-env --copy-jmeter-vm-env --install-k8s-performance-tests-env --install-jmeter-vm-env +all: --copy-k8s-performance-tests-env --copy-jmeter-vm-env --install-jmeter-vm-env --install-k8s-performance-tests-env clear: --uninstall-k8s-performance-tests-env --remove-k8s-performance-tests-env --remove-jmeter-vm-env restart: clear all @@ -17,7 +17,7 @@ restart: clear all --install-k8s-performance-tests-env: @echo "\n##### Deploy components(grafana, influxdb, prometheus, node exporter) on k8s #####" - ssh -i $(RKE_PRIVATE_KEY) $(RKE_NODE_USER_AND_HOSTNAME) 'bash -c "export KUBECONFIG=$(RKE_KUBECONFIG_FILE_PATH) && cd $(PERFORMANCE_TESTS_ENV_DIRECTORY) && make all WORKER_IP=$(WORKER_IP)"' + ssh -i $(RKE_PRIVATE_KEY) $(RKE_NODE_USER_AND_HOSTNAME) 'bash -c "export KUBECONFIG=$(RKE_KUBECONFIG_FILE_PATH) && cd $(PERFORMANCE_TESTS_ENV_DIRECTORY) && make all WORKER_IP=$(WORKER_IP) DMAAP_SIMULATOR_IMAGE=$(DMAAP_SIMULATOR_IMAGE)"' @echo "##### DONE #####" --uninstall-k8s-performance-tests-env: @@ -38,7 +38,7 @@ restart: clear all --install-jmeter-vm-env: @echo "\n##### Install collectd on VM #####" - ssh -i $(JMETER_VM_PRIVATE_KEY) $(JMETER_VM_USER_AND_HOSTNAME) 'sed -i 's/WORKER_IP/$(WORKER_IP)/g' $(PERFORMANCE_TESTS_ENV_DIRECTORY)/jmeter/test_scenario.jmx' + ssh -i $(JMETER_VM_PRIVATE_KEY) $(JMETER_VM_USER_AND_HOSTNAME) 'sed -i 's/WORKER_IP/$(WORKER_IP)/g' $(PERFORMANCE_TESTS_ENV_DIRECTORY)/jmeter/testScenarios/*.jmx' ssh -i $(JMETER_VM_PRIVATE_KEY) $(JMETER_VM_USER_AND_HOSTNAME) 'sed -i 's/WORKER_IP/$(WORKER_IP)/g' $(PERFORMANCE_TESTS_ENV_DIRECTORY)/collectd/collectd.conf' ssh -i $(JMETER_VM_PRIVATE_KEY) $(JMETER_VM_USER_AND_HOSTNAME) 'bash -c $(PERFORMANCE_TESTS_ENV_DIRECTORY)/collectd/install_collectd.sh' @echo "##### DONE #####" @@ -46,6 +46,7 @@ restart: clear all --remove-jmeter-vm-env: @echo "\n##### Remove JMeter environment directory from VM #####" ssh -i $(JMETER_VM_PRIVATE_KEY) $(JMETER_VM_USER_AND_HOSTNAME) 'rm -rf $(PERFORMANCE_TESTS_ENV_DIRECTORY)' + ssh -i $(JMETER_VM_PRIVATE_KEY) $(JMETER_VM_USER_AND_HOSTNAME) 'docker rm -f jmeter || true' @echo "##### DONE #####" # Execute test scenario diff --git a/performanceTests/README.md b/performanceTests/README.md index 775923da..ba78b14e 100644 --- a/performanceTests/README.md +++ b/performanceTests/README.md @@ -22,27 +22,33 @@ The architecture consists of three parts: * Prometheus - collects metrics from VES Collector and NodeExporter * InfluxDB - collects metrics from Collectd and tests results from JMeter * Grafana - displays all metrics collected from Prometheus and Influxdb + * DMaaP Simulator - collects events from VES Collector and calculates VES processing time (Client -> VES -> DMaaP) * User environment - local environment with VES repository downloaded, from which: * test environment can be set up * test can be executed # Usage 1. Prerequisites -- K8s environment with: - - ONAP installed - - VES Collector with Maven profile `buildForPerfTests` enabled (See `How to setup VES for performance tests` section) -- VM with minimum 16GB RAM and 4 cores + - K8s environment with: + - ONAP installed + - VES Collector with Maven profile `buildForPerfTests` enabled (See `How to set up VES for performance tests` section) + - DMaaP Simulator docker image available (See `How to set up DMaaP Simulator for performance tests` section) + - VM with minimum 30GB RAM, 8 cores, 35000 pid_max, 70000 max_map_count (How to setup pid_max and max_map_count https://stackoverflow.com/questions/34452302/how-to-increase-maximum-number-of-jvm-threads-linux-64bit) + - K8s environment and VM should have synchronized clocks - set the same NTP Server on all K8s worker nodes and VM 2. Setup -- Edit `enrivonment.config` file to match your environment: - - RKE_NODE_USER_AND_HOSTNAME - user and hostname for ssh connection to RKE node - - RKE_PRIVATE_KEY - private key for ssh connection to RKE node - - WORKER_IP - IP address to any of K8s worker nodes - - JMETER_VM_USER_AND_HOSTNAME - user and hostname for ssh connection to VM - - JMETER_VM_PRIVATE_KEY - private key for ssh connection to VM - - TEST_SCENARIO_FILE - name of test scenario file to be executed. Available test scenarios are located in `performanceTests/environment/jmeterVM/jmeter` -- Install performance tests environment: - - `make all` - copies all files to K8s and VM, installs all components and prints links to Grafana and Prometheus GUI + - Edit `enrivonment.config` file to match your environment: + - RKE_NODE_USER_AND_HOSTNAME - user and hostname for ssh connection to RKE node + - RKE_PRIVATE_KEY - private key for ssh connection to RKE node + - WORKER_IP - IP address to any of K8s worker nodes + - JMETER_VM_USER_AND_HOSTNAME - user and hostname for ssh connection to VM + - JMETER_VM_PRIVATE_KEY - private key for ssh connection to VM + - DMAAP_SIMULATOR_IMAGE - DMaaP Simulator image available in K8s environment (See `How to set up DMaaP Simulator for performance tests` section) + - TEST_SCENARIO_FILE - name of test scenario file to be executed. Available test scenarios are located in `performanceTests/environment/jmeterVM/jmeter/testScenarios` + - Install performance tests environment: + - `make all` - copies all files to K8s and VM, installs all components and prints links to Grafana and Prometheus GUI + - Change DMaaP address for Fault Events in VES to DMaaP Simulator + - See `How to change DMaaP address for Fault Events in VES` 3. Performance test execution - `make execute-test` - triggers JMeter on VM to execute performance test scenario defined in `enrivonment.config` @@ -55,7 +61,7 @@ The architecture consists of three parts: - `make restart` - recreates performance tests environment from scratch by invoking `make clear` and `make all` -# How to setup VES for performance tests +# How to set up VES for performance tests The VES image being tested must have the buildForPerfTests profile enabled. 1. Build VES Collector with buildForPerfTests profile enabled: @@ -79,4 +85,33 @@ The VES image being tested must have the buildForPerfTests profile enabled. image: <IMAGE_NAME_FROM_REPOSITORY> imagePullPolicy: IfNotPresent ``` - - after saving changes VES Collector pod should restarted automatically
\ No newline at end of file + - after saving changes VES Collector pod should restarted automatically + + +# How to set up DMaaP Simulator for performance tests +Currently, DMaaP Simulator is not contributed to ONAP, but its image is available on ONAP wiki. +It's not available in any public docker repository, thus you need to make it available in your environment. + +How to do so: +- Download compressed image from +https://wiki.onap.org/display/DW/VES+Collector+Performance+Test?linked=true#VESCollectorPerformanceTest-DMaaPSimulator +- Extract image `docker load < ves-dmaa-simulator-image.tar` +- Now it's ready to push it to your docker repository for example JFrog Artifactory + + +# How to change DMaaP address for Fault Events in VES +Currently, we use only Fault Events in performance tests. + +- Open VES configuration in Consul GUI in web browser http://<Worker_IP>:30270/ui/#/dc1/kv/dcae-ves-collector/edit +- Edit configuration `streams_publishes.ves-fault.dmaap_info.topic_url`, change IP and PORT to `ves-dmaap-simulator:3904`, as below: +``` + "ves-fault": { + "type": "message_router", + "dmaap_info": { + "topic_url": "http://ves-dmaap-simulator:3904/events/unauthenticated.SEC_FAULT_OUTPUT/" + } + } +``` +- Click `Update` button +- Restart VES pod + diff --git a/performanceTests/environment.config b/performanceTests/environment.config index 6239d963..cee09491 100644 --- a/performanceTests/environment.config +++ b/performanceTests/environment.config @@ -1,11 +1,14 @@ # K8s environment configuration -RKE_NODE_USER_AND_HOSTNAME = <RKE_USER>@<RKE_IP> # for example ubuntu@10.183.36.205 -RKE_PRIVATE_KEY = <PEM_PRIVATE_KEY_FILE_PATH> # for example ~/.ssh/onap-5802.pem -WORKER_IP = <ANY_WORKER_NODE_IP> # for example 10.183.39.145 +RKE_NODE_USER_AND_HOSTNAME = <RKE_USER>@<RKE_IP> # for example ubuntu@10.183.36.205 +RKE_PRIVATE_KEY = <PEM_PRIVATE_KEY_FILE_PATH> # for example ~/.ssh/onap-5802.pem +WORKER_IP = <ANY_WORKER_NODE_IP> # for example 10.183.39.145 # JMeter VM environment configuration -JMETER_VM_USER_AND_HOSTNAME = <RKE_USER>@<VM_IP> # for example root@10.183.36.50 -JMETER_VM_PRIVATE_KEY = <PEM_PRIVATE_KEY_FILE_PATH> # for example ~/.ssh/onap-5802.pem +JMETER_VM_USER_AND_HOSTNAME = <RKE_USER>@<VM_IP> # for example root@10.183.36.50 +JMETER_VM_PRIVATE_KEY = <PEM_PRIVATE_KEY_FILE_PATH> # for example ~/.ssh/onap-5802.pem + +# DMaaP simulator image +DMAAP_SIMULATOR_IMAGE = <AVAILABLE_DMAAP_SIMULATOR_IMAGE> # for example my-docker-repository.com/ves-dmaap-simulator:1.0.0 # Test scenario to run -TEST_SCENARIO_FILE = test_scenario.jmx # see performanceTests/environment/jmeterVM/jmeter for other scenarios
\ No newline at end of file +TEST_SCENARIO_FILE = simple_test_scenario.jmx # see performanceTests/environment/jmeterVM/jmeter for other scenarios
\ No newline at end of file diff --git a/performanceTests/environment/jmeterVM/jmeter/run_jmeter.sh b/performanceTests/environment/jmeterVM/jmeter/run_jmeter.sh index 4b7477a7..e63fc524 100644 --- a/performanceTests/environment/jmeterVM/jmeter/run_jmeter.sh +++ b/performanceTests/environment/jmeterVM/jmeter/run_jmeter.sh @@ -9,9 +9,11 @@ performance_tests_env_directory=$1 test_scenario_file=$2 docker pull justb4/jmeter -export volume_path=~/${performance_tests_env_directory}/jmeter && \ +export volume_path=~/${performance_tests_env_directory}/jmeter/testScenarios && \ export jmeter_path=/mnt/jmeter && \ docker run \ + --name jmeter \ + --rm \ --volume "${volume_path}":${jmeter_path} \ justb4/jmeter \ -n -X \ diff --git a/performanceTests/environment/jmeterVM/jmeter/testScenarios/1_test_scenario_6_steps.jmx b/performanceTests/environment/jmeterVM/jmeter/testScenarios/1_test_scenario_6_steps.jmx new file mode 100644 index 00000000..c04170fb --- /dev/null +++ b/performanceTests/environment/jmeterVM/jmeter/testScenarios/1_test_scenario_6_steps.jmx @@ -0,0 +1,916 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Https ves collector /eventlistener/v7 BasicAuth" enabled="true"> + <stringProp name="TestPlan.comments"></stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">true</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">1000</stringProp> + <stringProp name="ThreadGroup.ramp_time">150</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-dupa-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": ${__time()},
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree/> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">1750</stringProp> + <stringProp name="ThreadGroup.ramp_time">150</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-dupa-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": ${__time()},
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree/> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">3500</stringProp> + <stringProp name="ThreadGroup.ramp_time">150</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-dupa-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": ${__time()},
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree/> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">5000</stringProp> + <stringProp name="ThreadGroup.ramp_time">150</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-dupa-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": ${__time()},
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree/> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">7500</stringProp> + <stringProp name="ThreadGroup.ramp_time">150</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-dupa-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": ${__time()},
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree/> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">10000</stringProp> + <stringProp name="ThreadGroup.ramp_time">150</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-dupa-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": ${__time()},
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree/> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_1k_rps.jmx b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_1k_rps.jmx new file mode 100644 index 00000000..5308b01b --- /dev/null +++ b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_1k_rps.jmx @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="test_scenario_2_1k_rps" enabled="true"> + <stringProp name="TestPlan.comments">1k request / 1s</stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">1000</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-adb2-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": 1413378172000000,
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + </hashTree> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_2k_rps.jmx b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_2k_rps.jmx new file mode 100644 index 00000000..82768314 --- /dev/null +++ b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_2k_rps.jmx @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="test_scenario_2_2k_rps" enabled="true"> + <stringProp name="TestPlan.comments">2k request / 1s</stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">2000</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-adb2-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": 1413378172000000,
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + </hashTree> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_3k_rps.jmx b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_3k_rps.jmx new file mode 100644 index 00000000..5ee6aef1 --- /dev/null +++ b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_3k_rps.jmx @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="test_scenario_2_5k_rps" enabled="true"> + <stringProp name="TestPlan.comments">3k request / 1s</stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">3000</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-adb2-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": 1413378172000000,
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + </hashTree> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_4k_rps.jmx b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_4k_rps.jmx new file mode 100644 index 00000000..96b53702 --- /dev/null +++ b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_4k_rps.jmx @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="test_scenario_2_10k_rps" enabled="true"> + <stringProp name="TestPlan.comments">4k request / 1s</stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">4000</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-adb2-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": 1413378172000000,
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + </hashTree> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_5k_rps.jmx b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_5k_rps.jmx new file mode 100644 index 00000000..49ff743d --- /dev/null +++ b/performanceTests/environment/jmeterVM/jmeter/testScenarios/2_test_scenario_5k_rps.jmx @@ -0,0 +1,242 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.3"> + <hashTree> + <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="test_scenario_2_10k_rps" enabled="true"> + <stringProp name="TestPlan.comments">5k request / 1s</stringProp> + <boolProp name="TestPlan.functional_mode">false</boolProp> + <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> + <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> + <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true"> + <collectionProp name="Arguments.arguments"/> + </elementProp> + <stringProp name="TestPlan.user_define_classpath"></stringProp> + </TestPlan> + <hashTree> + <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true"> + <stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp> + <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true"> + <boolProp name="LoopController.continue_forever">false</boolProp> + <stringProp name="LoopController.loops">1</stringProp> + </elementProp> + <stringProp name="ThreadGroup.num_threads">5000</stringProp> + <stringProp name="ThreadGroup.ramp_time">1</stringProp> + <boolProp name="ThreadGroup.scheduler">false</boolProp> + <stringProp name="ThreadGroup.duration"></stringProp> + <stringProp name="ThreadGroup.delay"></stringProp> + <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp> + </ThreadGroup> + <hashTree> + <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true"> + <boolProp name="HTTPSampler.postBodyRaw">true</boolProp> + <elementProp name="HTTPsampler.Arguments" elementType="Arguments"> + <collectionProp name="Arguments.arguments"> + <elementProp name="" elementType="HTTPArgument"> + <boolProp name="HTTPArgument.always_encode">false</boolProp> + <stringProp name="Argument.value">{
 + "event": {
 + "commonEventHeader": {
 + "version": "4.0.1",
 + "vesEventListenerVersion": "7.0.1",
 + "domain": "fault",
 + "eventName": "Fault_Vscf:Acs-Ericcson_PilotNumberPoolExhaustion",
 + "eventId": "fault0000245",
 + "sequence": 1,
 + "priority": "High",
 + "reportingEntityId": "cc305d54-75b4-431b-adb2-eb6b9e541234",
 + "reportingEntityName": "ibcx0001vm002oam001",
 + "sourceId": "de305d54-75b4-431b-adb2-eb6b9e546014",
 + "sourceName": "scfx0001vm002cap001",
 + "nfVendorName": "SomeNamee",
 + "nfNamingCode": "scfx",
 + "nfcNamingCode": "ssc",
 + "startEpochMicrosec": ${__time()},
 + "lastEpochMicrosec": 1413378172000000,
 + "timeZoneOffset": "UTC-05:30"
 + },
 + "faultFields": {
 + "faultFieldsVersion": "4.0",
 + "alarmCondition": "PilotNumberPoolExhaustion",
 + "eventSourceType": "other",
 + "specificProblem": "Calls cannot complete - pilot numbers are unavailable",
 + "eventSeverity": "CRITICAL",
 + "vfStatus": "Active",
 + "alarmAdditionalInformation": {
 + "PilotNumberPoolSize": "1000"
 + }
 + }
 + }
 +}
 +</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="HTTPSampler.domain">WORKER_IP</stringProp> + <stringProp name="HTTPSampler.port">30417</stringProp> + <stringProp name="HTTPSampler.protocol">https</stringProp> + <stringProp name="HTTPSampler.contentEncoding"></stringProp> + <stringProp name="HTTPSampler.path">/eventListener/v7</stringProp> + <stringProp name="HTTPSampler.method">POST</stringProp> + <boolProp name="HTTPSampler.follow_redirects">true</boolProp> + <boolProp name="HTTPSampler.auto_redirects">false</boolProp> + <boolProp name="HTTPSampler.use_keepalive">true</boolProp> + <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp> + <stringProp name="HTTPSampler.embedded_url_re"></stringProp> + <stringProp name="HTTPSampler.connect_timeout"></stringProp> + <stringProp name="HTTPSampler.response_timeout"></stringProp> + </HTTPSamplerProxy> + <hashTree> + <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true"> + <boolProp name="ResultCollector.error_logging">false</boolProp> + <objProp> + <name>saveConfig</name> + <value class="SampleSaveConfiguration"> + <time>true</time> + <latency>true</latency> + <timestamp>true</timestamp> + <success>true</success> + <label>true</label> + <code>true</code> + <message>true</message> + <threadName>true</threadName> + <dataType>true</dataType> + <encoding>false</encoding> + <assertions>true</assertions> + <subresults>true</subresults> + <responseData>false</responseData> + <samplerData>false</samplerData> + <xml>false</xml> + <fieldNames>true</fieldNames> + <responseHeaders>false</responseHeaders> + <requestHeaders>false</requestHeaders> + <responseDataOnError>false</responseDataOnError> + <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage> + <assertionsResultsToSave>0</assertionsResultsToSave> + <bytes>true</bytes> + <sentBytes>true</sentBytes> + <url>true</url> + <threadCounts>true</threadCounts> + <idleTime>true</idleTime> + <connectTime>true</connectTime> + </value> + </objProp> + <stringProp name="filename"></stringProp> + </ResultCollector> + <hashTree/> + </hashTree> + <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true"> + <collectionProp name="AuthManager.auth_list"> + <elementProp name="" elementType="Authorization"> + <stringProp name="Authorization.url">https://WORKER_IP:30417/eventListener/v7</stringProp> + <stringProp name="Authorization.username">sample1</stringProp> + <stringProp name="Authorization.password">sample1</stringProp> + <stringProp name="Authorization.domain"></stringProp> + <stringProp name="Authorization.realm"></stringProp> + </elementProp> + </collectionProp> + <boolProp name="AuthManager.controlledByThreadGroup">false</boolProp> + </AuthManager> + <hashTree/> + <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true"> + <collectionProp name="HeaderManager.headers"> + <elementProp name="" elementType="Header"> + <stringProp name="Header.name">Content-Type</stringProp> + <stringProp name="Header.value">application/json</stringProp> + </elementProp> + </collectionProp> + </HeaderManager> + <hashTree/> + <BackendListener guiclass="BackendListenerGui" testclass="BackendListener" testname="Backend Listener" enabled="true"> + <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true"> + <collectionProp name="Arguments.arguments"> + <elementProp name="influxdbMetricsSender" elementType="Argument"> + <stringProp name="Argument.name">influxdbMetricsSender</stringProp> + <stringProp name="Argument.value">org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="influxdbUrl" elementType="Argument"> + <stringProp name="Argument.name">influxdbUrl</stringProp> + <stringProp name="Argument.value">http://WORKER_IP:30002/write?db=jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="application" elementType="Argument"> + <stringProp name="Argument.name">application</stringProp> + <stringProp name="Argument.value">ves</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="measurement" elementType="Argument"> + <stringProp name="Argument.name">measurement</stringProp> + <stringProp name="Argument.value">jmeter</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="summaryOnly" elementType="Argument"> + <stringProp name="Argument.name">summaryOnly</stringProp> + <stringProp name="Argument.value">false</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="samplersRegex" elementType="Argument"> + <stringProp name="Argument.name">samplersRegex</stringProp> + <stringProp name="Argument.value">.*</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="percentiles" elementType="Argument"> + <stringProp name="Argument.name">percentiles</stringProp> + <stringProp name="Argument.value">90;95;99</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="testTitle" elementType="Argument"> + <stringProp name="Argument.name">testTitle</stringProp> + <stringProp name="Argument.value">Test name</stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + <elementProp name="eventTags" elementType="Argument"> + <stringProp name="Argument.name">eventTags</stringProp> + <stringProp name="Argument.value"></stringProp> + <stringProp name="Argument.metadata">=</stringProp> + </elementProp> + </collectionProp> + </elementProp> + <stringProp name="classname">org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient</stringProp> + </BackendListener> + <hashTree/> + </hashTree> + </hashTree> + </hashTree> +</jmeterTestPlan> diff --git a/performanceTests/environment/jmeterVM/jmeter/test_scenario.jmx b/performanceTests/environment/jmeterVM/jmeter/testScenarios/simple_test_scenario.jmx index 6cfb08dc..8848374f 100644 --- a/performanceTests/environment/jmeterVM/jmeter/test_scenario.jmx +++ b/performanceTests/environment/jmeterVM/jmeter/testScenarios/simple_test_scenario.jmx @@ -18,8 +18,8 @@ <boolProp name="LoopController.continue_forever">false</boolProp> <stringProp name="LoopController.loops">1</stringProp> </elementProp> - <stringProp name="ThreadGroup.num_threads">250</stringProp> - <stringProp name="ThreadGroup.ramp_time">10</stringProp> + <stringProp name="ThreadGroup.num_threads">10000</stringProp> + <stringProp name="ThreadGroup.ramp_time">300</stringProp> <boolProp name="ThreadGroup.scheduler">false</boolProp> <stringProp name="ThreadGroup.duration"></stringProp> <stringProp name="ThreadGroup.delay"></stringProp> @@ -49,7 +49,7 @@ "nfVendorName": "SomeNamee",
 "nfNamingCode": "scfx",
 "nfcNamingCode": "ssc",
 - "startEpochMicrosec": 1413378172000000,
 + "startEpochMicrosec": ${__time()},
 "lastEpochMicrosec": 1413378172000000,
 "timeZoneOffset": "UTC-05:30"
 },
 diff --git a/performanceTests/environment/k8s/Makefile b/performanceTests/environment/k8s/Makefile index 0843f3b8..55bb1483 100644 --- a/performanceTests/environment/k8s/Makefile +++ b/performanceTests/environment/k8s/Makefile @@ -1,4 +1,4 @@ -all: --deploy-influxdb --deploy-prometheus --deploy-node-exporter --deploy-grafana --display-urls +all: --deploy-influxdb --deploy-prometheus --deploy-node-exporter --deploy-grafana --deploy-dmaap-simulator --display-urls # Prometheus configuration PROMETHEUS_DIRECTORY = ./prometheus @@ -21,6 +21,11 @@ INFLUXDB_CONFIGMAP = configmap.yaml NODE_EXPORTER_DIRECTORY = ./nodeExporter NODE_EXPORTER_DEPLOYMENT = deployment.yaml +# DMaaaP Simulator configuration +DMAAP_SIMULATOR_DIRECTORY = ./dmaapSimulator +DMAAP_SIMULATOR_DEPLOYMENT = deployment.yaml +DMAAP_SIMULATOR_IMAGE_ESCAPED := $(shell echo $(DMAAP_SIMULATOR_IMAGE) | sed 's/\//\\\//g') + clear: @echo "\n##### Delete configmaps and deployments (prometheus, grafana, influxdb, node exporter) #####" kubectl delete -f $(GRAFANA_DIRECTORY)/$(GRAFANA_DEPLOYMENT) || true @@ -32,6 +37,7 @@ clear: kubectl delete -f $(INFLUXDB_DIRECTORY)/$(INFLUXDB_DEPLOYMENT) || true kubectl delete -f $(INFLUXDB_DIRECTORY)/$(INFLUXDB_CONFIGMAP) || true kubectl delete -f $(NODE_EXPORTER_DIRECTORY)/$(NODE_EXPORTER_DEPLOYMENT) || true + kubectl delete -f $(DMAAP_SIMULATOR_DIRECTORY)/$(DMAAP_SIMULATOR_DEPLOYMENT) || true @echo "##### DONE #####" --deploy-node-exporter: @@ -59,6 +65,13 @@ clear: kubectl apply -f $(INFLUXDB_DIRECTORY)/$(INFLUXDB_DEPLOYMENT) @echo "##### DONE #####" +--deploy-dmaap-simulator: + @echo "\n##### Deploy dmaap simulator #####" + sed -i "s/DMAAP_SIMULATOR_IMAGE/$(DMAAP_SIMULATOR_IMAGE_ESCAPED)/g" $(DMAAP_SIMULATOR_DIRECTORY)/$(DMAAP_SIMULATOR_DEPLOYMENT) + kubectl apply -f $(DMAAP_SIMULATOR_DIRECTORY)/$(DMAAP_SIMULATOR_DEPLOYMENT) + @echo "##### DONE #####" + + --display-urls: @echo "Waiting for Grafana to start up..." @sleep 10 diff --git a/performanceTests/environment/k8s/dmaapSimulator/deployment.yaml b/performanceTests/environment/k8s/dmaapSimulator/deployment.yaml new file mode 100644 index 00000000..7701ade8 --- /dev/null +++ b/performanceTests/environment/k8s/dmaapSimulator/deployment.yaml @@ -0,0 +1,55 @@ +# ============LICENSE_START======================================================= +# dcaegen2-collectors-ves +# ================================================================================ +# Copyright (C) 2020 NOKIA +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= + +apiVersion: v1 +kind: Service +metadata: + name: ves-dmaap-simulator + namespace: onap + labels: + app: ves-dmaap-simulator +spec: + selector: + app: ves-dmaap-simulator + type: NodePort + ports: + - port: 3904 + name: influx-db + targetPort: 3904 + nodePort: 30004 +--- +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: ves-dmaap-simulator + namespace: onap + labels: + app: ves-dmaap-simulator +spec: + replicas: 1 + selector: + matchLabels: + app: ves-dmaap-simulator + template: + metadata: + labels: + app: ves-dmaap-simulator + spec: + containers: + - name: ves-dmaap-simulator + image: DMAAP_SIMULATOR_IMAGE diff --git a/performanceTests/environment/k8s/grafana/dashboards/jmeter-test-results.json b/performanceTests/environment/k8s/grafana/dashboards/jmeter-test-results-and-metrics.json index 5491f712..8e24614e 100644 --- a/performanceTests/environment/k8s/grafana/dashboards/jmeter-test-results.json +++ b/performanceTests/environment/k8s/grafana/dashboards/jmeter-test-results-and-metrics.json @@ -16,11 +16,11 @@ } ] }, - "description": "Monitor your JMeter load test in real time with InfluxDB and Grafana.", + "description": "Monitor your JMeter load test in real time.", "editable": true, "gnetId": 4026, "graphTooltip": 0, - "iteration": 1591703765642, + "iteration": 1592394827294, "links": [], "panels": [ { @@ -35,7 +35,7 @@ "id": 33, "panels": [], "repeat": null, - "title": "Summary", + "title": "JMeter test results", "type": "row" }, { @@ -43,7 +43,7 @@ "colorBackground": false, "colorValue": true, "colors": [ - "#299c46", + "#37872D", "#e5ac0e", "#d44a3a" ], @@ -64,8 +64,8 @@ "thresholdMarkers": true }, "gridPos": { - "h": 7, - "w": 8, + "h": 4, + "w": 6, "x": 0, "y": 1 }, @@ -87,7 +87,7 @@ "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, - "postfix": " Requests", + "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", @@ -146,9 +146,9 @@ } ], "thresholds": "", - "title": "Total Requests", + "title": "Total Events Sent", "type": "singlestat", - "valueFontSize": "80%", + "valueFontSize": "200%", "valueMaps": [ { "op": "=", @@ -163,9 +163,9 @@ "colorBackground": false, "colorValue": true, "colors": [ - "#299c46", - "#e24d42", - "#d44a3a" + "#C4162A", + "#C4162A", + "#C4162A" ], "datasource": "jmeter", "decimals": 0, @@ -184,9 +184,9 @@ "thresholdMarkers": true }, "gridPos": { - "h": 7, - "w": 8, - "x": 8, + "h": 4, + "w": 6, + "x": 6, "y": 1 }, "height": "", @@ -207,7 +207,7 @@ "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, - "postfix": " Failed", + "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", @@ -268,7 +268,7 @@ "thresholds": "", "title": "Failed Requests", "type": "singlestat", - "valueFontSize": "80%", + "valueFontSize": "200%", "valueMaps": [ { "op": "=", @@ -304,9 +304,9 @@ "thresholdMarkers": true }, "gridPos": { - "h": 7, - "w": 8, - "x": 16, + "h": 4, + "w": 6, + "x": 12, "y": 1 }, "id": 29, @@ -398,6 +398,62 @@ "valueName": "total" }, { + "datasource": null, + "fieldConfig": { + "defaults": { + "custom": {}, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "dark-green", + "value": null + }, + { + "color": "dark-green", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 1 + }, + "id": 35, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "last" + ], + "fields": "", + "values": false + } + }, + "pluginVersion": "7.0.3", + "targets": [ + { + "expr": "events_count", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "timeFrom": null, + "timeShift": null, + "title": "DMaaP - Received Events", + "type": "stat" + }, + { "aliasColors": { "No of Errors": "#6ED0E0", "Req / s": "#6ed0e0", @@ -422,7 +478,7 @@ "h": 7, "w": 8, "x": 0, - "y": 8 + "y": 5 }, "hiddenSeries": false, "id": 4, @@ -569,7 +625,7 @@ "h": 7, "w": 8, "x": 8, - "y": 8 + "y": 5 }, "hiddenSeries": false, "id": 2, @@ -719,7 +775,7 @@ "h": 7, "w": 8, "x": 16, - "y": 8 + "y": 5 }, "hiddenSeries": false, "id": 31, @@ -834,13 +890,20 @@ }, { "aliasColors": { - "banner": "#508642" + "90th Percentage": "#f2c96d", + "95th Percentage": "#EF843C", + "99th Percentage": "#bf1b00", + "Average": "#7eb26d", + "Max": "#584477", + "Median": "#6ed0e0", + "median": "#6ed0e0" }, "bars": false, "dashLength": 10, "dashes": false, "datasource": "jmeter", "decimals": 2, + "description": "", "editable": true, "error": false, "fieldConfig": { @@ -852,25 +915,25 @@ "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, - "w": 24, + "h": 8, + "w": 12, "x": 0, - "y": 15 + "y": 12 }, "height": "", "hiddenSeries": false, - "id": 23, + "id": 5, "interval": "[[send_interval]]s", "legend": { "alignAsTable": true, "avg": true, "current": false, - "hideEmpty": false, - "hideZero": false, + "hideEmpty": true, "max": true, "min": false, "rightSide": true, "show": true, + "sortDesc": true, "total": false, "values": true }, @@ -885,421 +948,129 @@ "pointradius": 1, "points": false, "renderer": "flot", - "seriesOverrides": [], + "seriesOverrides": [ + { + "$$hashKey": "object:187", + "alias": "Average", + "yaxis": 1 + } + ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { - "alias": "$tag_transaction", + "alias": "Average", "dsType": "influxdb", "groupBy": [ { "params": [ - "transaction" + "$aggregation" + ], + "type": "time" + }, + { + "params": [ + "null" ], - "type": "tag" + "type": "fill" } ], "measurement": "jmeter", "orderByTime": "ASC", "policy": "default", - "query": "SELECT mean(\"pct95.0\") FROM \"$measurement_name\" WHERE (\"statut\" = 'ok' AND \"application\" =~ /^$application$/) AND $timeFilter GROUP BY \"transaction\", time($__interval) fill(null)", + "query": "SELECT last(\"avg\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval)", "rawQuery": true, - "refId": "B", + "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ - "pct95.0" + "avg" ], "type": "field" + }, + { + "params": [], + "type": "last" } ] ], "tags": [ { - "key": "statut", - "operator": "=", - "value": "ok" + "key": "transaction", + "operator": "=~", + "value": "/^$request$/" }, { "condition": "AND", - "key": "application", - "operator": "=~", - "value": "/^$application$/" + "key": "statut", + "operator": "=", + "value": "ok" } ] - } - ], - "thresholds": [ - { - "colorMode": "ok", - "fill": true, - "line": true, - "op": "lt", - "value": 500 }, { - "colorMode": "warning", - "fill": false, - "line": true, - "op": "gt", - "value": 1500 - }, - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 5000 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transactions Response Times (95th pct)", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": true, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 22 - }, - "id": 34, - "panels": [ - { - "columns": [], - "datasource": "jmeter", - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 23 - }, - "height": "", - "id": 25, - "interval": "[[send_interval]]s", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 2, - "desc": true - }, - "styles": [ + "alias": "Median", + "dsType": "influxdb", + "groupBy": [ { - "alias": "Time", - "align": "auto", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" + "params": [ + "$aggregation" + ], + "type": "time" }, { - "alias": "", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" + "params": [ + "null" ], - "decimals": 0, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "short" + "type": "fill" } ], - "targets": [ - { - "alias": "$tag_transaction", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "transaction" - ], - "type": "tag" - } - ], - "measurement": "jmeter", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT sum(\"count\") FROM \"$measurement_name\" WHERE (\"application\" =~ /^$application$/ AND \"statut\" = 'ko') AND $timeFilter GROUP BY \"transaction\"", - "rawQuery": true, - "refId": "A", - "resultFormat": "table", - "select": [ - [ - { - "params": [ - "count" - ], - "type": "field" - }, - { - "params": [], - "type": "sum" - } - ] - ], - "tags": [ - { - "key": "application", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "statut", - "operator": "=", - "value": "ko" - } - ] - } + "hide": false, + "measurement": "jmeter", + "orderByTime": "ASC", + "policy": "default", + "query": "SELECT last(\"pct50.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval)", + "rawQuery": true, + "refId": "F", + "resultFormat": "time_series", + "select": [ + [ + { + "params": [ + "pct50.0" + ], + "type": "field" + }, + { + "params": [], + "type": "last" + } + ] ], - "title": "Errors per Transaction", - "transform": "table", - "type": "table-old" - }, - { - "columns": [], - "datasource": "jmeter", - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 16, - "x": 8, - "y": 23 - }, - "id": 27, - "interval": "[[send_interval]]s", - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "styles": [ + "tags": [ { - "alias": "Time", - "align": "auto", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" + "key": "transaction", + "operator": "=~", + "value": "/^$request$/" }, { - "alias": "", - "align": "auto", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 0, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "alias": "$tag_responseCode", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "responseCode" - ], - "type": "tag" - } - ], - "measurement": "jmeter", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT sum(\"count\") FROM \"$measurement_name\" WHERE (\"application\" =~ /^$application$/ AND \"responseCode\" !~ /^$/) AND $timeFilter GROUP BY \"responseCode\",\"responseMessage\"", - "rawQuery": true, - "refId": "A", - "resultFormat": "table", - "select": [ - [ - { - "params": [ - "count" - ], - "type": "field" - } - ], - [ - { - "params": [ - "responseMessage" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "application", - "operator": "=~", - "value": "/^$application$/" - }, - { - "condition": "AND", - "key": "responseCode", - "operator": "!~", - "value": "/^$/" - } - ] + "condition": "AND", + "key": "statut", + "operator": "=", + "value": "all" } - ], - "title": "Error Info", - "transform": "table", - "type": "table-old" - } - ], - "repeat": null, - "title": "Errors", - "type": "row" - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 23 - }, - "id": 35, - "panels": [], - "repeat": null, - "title": "Individual Transaction - $transaction", - "type": "row" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "#e5ac0e", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "jmeter", - "decimals": 0, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 24 - }, - "id": 9, - "interval": "[[send_interval]]s", - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 + ] }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": " Requests", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "#e5ac0e", - "show": false - }, - "tableColumn": "", - "targets": [ - { + "alias": "90th Percentile", "dsType": "influxdb", "groupBy": [ { "params": [ - "$__interval" + "$aggregation" ], "type": "time" }, @@ -1313,21 +1084,21 @@ "measurement": "jmeter", "orderByTime": "ASC", "policy": "default", - "query": "SELECT sum(\"count\") FROM \"$measurement_name\" WHERE (\"application\" =~ /^$application$/ AND \"transaction\" =~ /^$transaction$/ AND \"statut\" = 'all') AND $timeFilter GROUP BY time($__interval) fill(null)", + "query": "SELECT last(\"pct90.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, - "refId": "A", + "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ - "count" + "pct90.0" ], "type": "field" }, { "params": [], - "type": "sum" + "type": "last" } ] ], @@ -1335,7 +1106,7 @@ { "key": "transaction", "operator": "=~", - "value": "/^$transaction$/" + "value": "/^$request$/" }, { "condition": "AND", @@ -1344,96 +1115,14 @@ "value": "all" } ] - } - ], - "thresholds": "", - "title": "Total Requests - $transaction", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "total" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "#e24d42", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "jmeter", - "decimals": 0, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 24 - }, - "id": 6, - "interval": "[[send_interval]]s", - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 }, { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": " Failed", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "#e24d42", - "show": false - }, - "tableColumn": "", - "targets": [ - { + "alias": "95th Percentile", "dsType": "influxdb", "groupBy": [ { "params": [ - "$__interval" + "$aggregation" ], "type": "time" }, @@ -1444,24 +1133,25 @@ "type": "fill" } ], + "hide": false, "measurement": "jmeter", "orderByTime": "ASC", "policy": "default", - "query": "SELECT sum(\"count\") FROM \"$measurement_name\" WHERE (\"application\" =~ /^$application$/ AND \"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ko') AND $timeFilter GROUP BY time($__interval) fill(null)", + "query": "SELECT last(\"pct95.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, - "refId": "A", + "refId": "C", "resultFormat": "time_series", "select": [ [ { "params": [ - "count" + "pct95.0" ], "type": "field" }, { "params": [], - "type": "sum" + "type": "last" } ] ], @@ -1469,105 +1159,17 @@ { "key": "transaction", "operator": "=~", - "value": "/^$transaction$/" - }, - { - "condition": "AND", - "key": "statut", - "operator": "=", - "value": "ko" + "value": "/^$request$/" } ] - } - ], - "thresholds": "", - "title": "Failed Requests - $transaction", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "total" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "#e5ac0e", - "#e24d42" - ], - "datasource": "jmeter", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} }, - "overrides": [] - }, - "format": "percentunit", - "gauge": { - "maxValue": 1, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 24 - }, - "id": 8, - "interval": "[[send_interval]]s", - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(14, 237, 45)", - "show": false - }, - "tableColumn": "", - "targets": [ { + "alias": "99th Percentile", "dsType": "influxdb", "groupBy": [ { "params": [ - "$__interval" + "$aggregation" ], "type": "time" }, @@ -1578,24 +1180,25 @@ "type": "fill" } ], + "hide": false, "measurement": "jmeter", "orderByTime": "ASC", "policy": "default", - "query": "SELECT sum(\"error\") / sum(\"all\") FROM (SELECT sum(\"count\") AS \"all\" FROM \"$measurement_name\" WHERE \"transaction\" =~ /^$transaction$/ AND \"statut\" = 'all' AND \"application\" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null)), (SELECT sum(\"count\") AS \"error\" FROM \"$measurement_name\" WHERE \"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ko' AND \"application\" =~ /^$application$/ AND $timeFilter GROUP BY time($__interval) fill(null))", + "query": "SELECT last(\"pct99.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, - "refId": "A", + "refId": "D", "resultFormat": "time_series", "select": [ [ { "params": [ - "count" + "pct99.0" ], "type": "field" }, { "params": [], - "type": "sum" + "type": "last" } ] ], @@ -1603,131 +1206,45 @@ { "key": "transaction", "operator": "=~", - "value": "/^$transaction$/" - }, - { - "condition": "AND", - "key": "statut", - "operator": "=", - "value": "ok" + "value": "/^$request$/" } ] - } - ], - "thresholds": "0,0.01", - "title": "Error Rate % - $transaction", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "total" - }, - { - "aliasColors": { - "90th Percentage": "#EAB839", - "95th Percentage": "#EF843C", - "99th Percentage": "#99440A", - "Average": "#3F6833", - "Max": "#58140C", - "Req / s": "#6ed0e0" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "jmeter", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} }, - "overrides": [] - }, - "fill": 7, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 31 - }, - "height": "", - "hiddenSeries": false, - "id": 10, - "interval": "[[send_interval]]s", - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 1, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "Average", - "yaxis": 1 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ { - "alias": "Req / s", + "alias": "Max", "dsType": "influxdb", "groupBy": [ { "params": [ - "$__interval" + "$aggregation" ], "type": "time" + }, + { + "params": [ + "null" + ], + "type": "fill" } ], "measurement": "jmeter", "orderByTime": "ASC", "policy": "default", - "query": "SELECT last(\"count\") / $send_interval FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval)", + "query": "SELECT last(\"max\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, - "refId": "B", + "refId": "E", "resultFormat": "time_series", "select": [ [ { "params": [ - "count" + "max" ], "type": "field" }, { "params": [], - "type": "sum" - }, - { - "params": [ - "5s" - ], - "type": "non_negative_derivative" + "type": "last" } ] ], @@ -1735,7 +1252,7 @@ { "key": "transaction", "operator": "=~", - "value": "/^$transaction$/" + "value": "/^$request$/" }, { "condition": "AND", @@ -1746,11 +1263,39 @@ ] } ], - "thresholds": [], + "thresholds": [ + { + "$$hashKey": "object:219", + "colorMode": "ok", + "fill": true, + "line": true, + "op": "lt", + "value": 500, + "yaxis": "left" + }, + { + "$$hashKey": "object:220", + "colorMode": "warning", + "fill": false, + "line": true, + "op": "gt", + "value": 1500, + "yaxis": "left" + }, + { + "$$hashKey": "object:221", + "colorMode": "critical", + "fill": true, + "line": true, + "op": "gt", + "value": 5000, + "yaxis": "left" + } + ], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Throughput - $transaction", + "title": "Sync Processing Time (Client -> VES)", "tooltip": { "msResolution": false, "shared": true, @@ -1767,7 +1312,8 @@ }, "yaxes": [ { - "format": "short", + "$$hashKey": "object:194", + "format": "ms", "label": null, "logBase": 1, "max": null, @@ -1775,6 +1321,7 @@ "show": true }, { + "$$hashKey": "object:195", "format": "short", "label": null, "logBase": 1, @@ -1789,53 +1336,45 @@ } }, { - "aliasColors": { - "Num of Errors": "#bf1b00", - "num of errors": "#bf1b00" - }, + "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "jmeter", - "decimals": 0, + "datasource": null, "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, - "fill": 7, + "fill": 1, "fillGradient": 0, "gridPos": { - "h": 7, + "h": 8, "w": 12, "x": 12, - "y": 31 + "y": 12 }, "hiddenSeries": false, - "id": 32, - "interval": "[[send_interval]]s", + "id": 37, "legend": { - "alignAsTable": true, "avg": false, "current": false, "max": false, "min": false, - "rightSide": false, "show": true, - "total": true, - "values": true + "total": false, + "values": false }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, - "pointradius": 1, - "points": true, + "pointradius": 2, + "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, @@ -1843,50 +1382,17 @@ "steppedLine": false, "targets": [ { - "alias": "Num of Errors", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$__interval" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT sum(\"count\") FROM \"$measurement_name\" WHERE \"application\" =~ /^$application$/ AND \"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ko' AND $timeFilter GROUP BY time($__interval) fill(null)", - "rawQuery": true, - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - }, - { - "params": [], - "type": "mean" - } - ] - ], - "tags": [] + "expr": "async_processing_times/1000", + "interval": "", + "legendFormat": "avg processing time", + "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Errors", + "title": "Async Processing Time (Client -> VES -> DMaaP)", "tooltip": { "shared": true, "sort": 0, @@ -1894,7 +1400,7 @@ }, "type": "graph", "xaxis": { - "buckets": 1, + "buckets": null, "mode": "time", "name": null, "show": true, @@ -1902,15 +1408,17 @@ }, "yaxes": [ { - "decimals": 0, - "format": "short", - "label": null, + "$$hashKey": "object:1011", + "decimals": null, + "format": "s", + "label": "", "logBase": 1, "max": null, "min": null, "show": true }, { + "$$hashKey": "object:1012", "format": "short", "label": null, "logBase": 1, @@ -1925,22 +1433,25 @@ } }, { - "aliasColors": { - "90th Percentage": "#f2c96d", - "95th Percentage": "#EF843C", - "99th Percentage": "#bf1b00", - "Average": "#7eb26d", - "Max": "#584477", - "Median": "#6ed0e0", - "median": "#6ed0e0" + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 }, + "id": 43, + "panels": [], + "title": "JMeter VM metrics", + "type": "row" + }, + { + "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, - "datasource": "jmeter", - "decimals": 2, - "editable": true, - "error": false, + "datasource": "jmeterVM", "fieldConfig": { "defaults": { "custom": {} @@ -1948,378 +1459,202 @@ "overrides": [] }, "fill": 1, + "fillGradient": 0, "gridPos": { - "h": 7, - "w": 24, + "h": 9, + "w": 12, "x": 0, - "y": 38 + "y": 21 }, - "height": "", - "id": 5, - "interval": "[[send_interval]]s", + "hiddenSeries": false, + "id": 41, "legend": { - "alignAsTable": true, - "avg": true, + "avg": false, "current": false, - "hideEmpty": true, - "max": true, + "max": false, "min": false, - "rightSide": true, "show": true, - "sortDesc": true, "total": false, - "values": true + "values": false }, "lines": true, "linewidth": 1, - "links": [], "nullPointMode": "null", + "options": { + "dataLinks": [] + }, "percentage": false, - "pointradius": 1, + "pointradius": 2, "points": false, "renderer": "flot", - "seriesOverrides": [ - { - "alias": "Average", - "yaxis": 1 - } - ], + "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { - "alias": "Average", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$aggregation" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "jmeter", + "alias": "RAM", + "groupBy": [], + "measurement": "memory_value", "orderByTime": "ASC", "policy": "default", - "query": "SELECT last(\"avg\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval)", - "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ - "avg" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "transaction", - "operator": "=~", - "value": "/^$request$/" - }, - { - "condition": "AND", - "key": "statut", - "operator": "=", - "value": "ok" - } - ] - }, - { - "alias": "Median", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$aggregation" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "jmeter", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT last(\"pct50.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval)", - "rawQuery": true, - "refId": "F", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "pct50.0" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "transaction", - "operator": "=~", - "value": "/^$request$/" - }, - { - "condition": "AND", - "key": "statut", - "operator": "=", - "value": "all" - } - ] - }, - { - "alias": "90th Percentile", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$aggregation" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "jmeter", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT last(\"pct90.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", - "rawQuery": true, - "refId": "B", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "pct90.0" + "value" ], "type": "field" - }, - { - "params": [], - "type": "last" } ] ], "tags": [ { - "key": "transaction", - "operator": "=~", - "value": "/^$request$/" - }, - { - "condition": "AND", - "key": "statut", + "key": "type_instance", "operator": "=", - "value": "all" + "value": "used" } ] - }, + } + ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, + "title": "RAM usage", + "tooltip": { + "shared": true, + "sort": 0, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ { - "alias": "95th Percentile", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$aggregation" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "jmeter", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT last(\"pct95.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", - "rawQuery": true, - "refId": "C", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "pct95.0" - ], - "type": "field" - }, - { - "params": [], - "type": "last" - } - ] - ], - "tags": [ - { - "key": "transaction", - "operator": "=~", - "value": "/^$request$/" - } - ] + "$$hashKey": "object:220", + "format": "short", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true }, { - "alias": "99th Percentile", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$aggregation" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "hide": false, - "measurement": "jmeter", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT last(\"pct99.0\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", - "rawQuery": true, - "refId": "D", - "resultFormat": "time_series", - "select": [ - [ + "$$hashKey": "object:221", + "format": "short", + "label": null, + "logBase": 1, + "max": "100", + "min": "0", + "show": true + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "jmeterVM", + "description": "CPU usage of JMeter VM", + "fieldConfig": { + "defaults": { + "custom": { + "align": null + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ { - "params": [ - "pct99.0" - ], - "type": "field" + "color": "green", + "value": null }, { - "params": [], - "type": "last" + "color": "red", + "value": 80 } ] - ], - "tags": [ - { - "key": "transaction", - "operator": "=~", - "value": "/^$request$/" - } - ] + } }, + "overrides": [] + }, + "fill": 1, + "fillGradient": 0, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 21 + }, + "hiddenSeries": false, + "id": 39, + "legend": { + "avg": false, + "current": false, + "max": false, + "min": false, + "show": true, + "total": false, + "values": false + }, + "lines": true, + "linewidth": 1, + "nullPointMode": "null", + "options": { + "dataLinks": [] + }, + "percentage": false, + "pluginVersion": "7.0.3", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, + "targets": [ { - "alias": "Max", - "dsType": "influxdb", - "groupBy": [ - { - "params": [ - "$aggregation" - ], - "type": "time" - }, - { - "params": [ - "null" - ], - "type": "fill" - } - ], - "measurement": "jmeter", + "alias": "cpu", + "groupBy": [], + "measurement": "cpu_value", "orderByTime": "ASC", "policy": "default", - "query": "SELECT last(\"max\") FROM \"$measurement_name\" WHERE (\"transaction\" =~ /^$transaction$/ AND \"statut\" = 'ok') AND $timeFilter GROUP BY time($__interval) fill(null)", - "rawQuery": true, - "refId": "E", + "query": "SELECT mean(\"value\") FROM \"cpu_value\" WHERE $timeFilter GROUP BY time($__interval) fill(null)", + "rawQuery": false, + "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ - "max" + "value" ], "type": "field" - }, - { - "params": [], - "type": "last" } ] ], - "tags": [ - { - "key": "transaction", - "operator": "=~", - "value": "/^$request$/" - }, - { - "condition": "AND", - "key": "statut", - "operator": "=", - "value": "ok" - } - ] - } - ], - "thresholds": [ - { - "colorMode": "ok", - "fill": true, - "line": true, - "op": "lt", - "value": 500 - }, - { - "colorMode": "warning", - "fill": false, - "line": true, - "op": "gt", - "value": 1500 - }, - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 5000 + "tags": [] } ], + "thresholds": [], "timeFrom": null, + "timeRegions": [], "timeShift": null, - "title": "Response Times - $transaction", + "title": "CPU Usage", "tooltip": { - "msResolution": false, "shared": true, "sort": 0, "value_type": "individual" @@ -2334,22 +1669,29 @@ }, "yaxes": [ { - "format": "ms", - "label": null, + "$$hashKey": "object:60", + "decimals": null, + "format": "short", + "label": "", "logBase": 1, - "max": null, - "min": null, + "max": "100", + "min": "0", "show": true }, { + "$$hashKey": "object:61", "format": "short", "label": null, "logBase": 1, - "max": null, - "min": null, - "show": false + "max": "100", + "min": "0", + "show": true } - ] + ], + "yaxis": { + "align": false, + "alignLevel": null + } } ], "refresh": "5s", @@ -2373,6 +1715,7 @@ "name": "data_source", "options": [], "query": "influxdb", + "queryValue": "", "refresh": 1, "regex": "", "skipUrlSync": false, @@ -2381,7 +1724,7 @@ { "allValue": null, "current": { - "selected": false, + "selected": true, "text": "ves", "value": "ves" }, @@ -2407,7 +1750,7 @@ { "allValue": null, "current": { - "selected": false, + "selected": true, "text": "HTTP Request", "value": "HTTP Request" }, @@ -2440,6 +1783,7 @@ "name": "measurement_name", "options": [ { + "selected": true, "text": "jmeter", "value": "jmeter" } @@ -2458,6 +1802,7 @@ "name": "send_interval", "options": [ { + "selected": true, "text": "5", "value": "5" } @@ -2469,7 +1814,7 @@ ] }, "time": { - "from": "now-15m", + "from": "now-30m", "to": "now" }, "timepicker": { @@ -2497,7 +1842,7 @@ ] }, "timezone": "browser", - "title": "JMeter Dashboard", + "title": "JMeter test results & metrics", "uid": "symhaxzMz", "version": 1 }
\ No newline at end of file diff --git a/performanceTests/environment/k8s/grafana/dashboards/jmeter-vm-metrics.json b/performanceTests/environment/k8s/grafana/dashboards/jmeter-vm-metrics.json deleted file mode 100644 index d2deb774..00000000 --- a/performanceTests/environment/k8s/grafana/dashboards/jmeter-vm-metrics.json +++ /dev/null @@ -1,296 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "jmeterVM", - "description": "CPU usage of JMeter VM", - "fieldConfig": { - "defaults": { - "custom": { - "align": null - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pluginVersion": "7.0.3", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "cpu", - "groupBy": [], - "measurement": "cpu_value", - "orderByTime": "ASC", - "policy": "default", - "query": "SELECT mean(\"value\") FROM \"cpu_value\" WHERE $timeFilter GROUP BY time($__interval) fill(null)", - "rawQuery": false, - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - } - ] - ], - "tags": [] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:60", - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "$$hashKey": "object:61", - "format": "short", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "jmeterVM", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "alias": "RAM", - "groupBy": [], - "measurement": "memory_value", - "orderByTime": "ASC", - "policy": "default", - "refId": "A", - "resultFormat": "time_series", - "select": [ - [ - { - "params": [ - "value" - ], - "type": "field" - } - ] - ], - "tags": [ - { - "key": "type_instance", - "operator": "=", - "value": "used" - } - ] - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RAM usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "$$hashKey": "object:220", - "format": "short", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - }, - { - "$$hashKey": "object:221", - "format": "short", - "label": null, - "logBase": 1, - "max": "100", - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "5s", - "schemaVersion": 25, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "JMeter CPU & RAM", - "uid": "3vqG7iiGz", - "version": 1 -}
\ No newline at end of file diff --git a/performanceTests/environment/k8s/grafana/dashboards/ves-metrics.json b/performanceTests/environment/k8s/grafana/dashboards/ves-metrics.json index 24020ea0..b1b4a517 100644 --- a/performanceTests/environment/k8s/grafana/dashboards/ves-metrics.json +++ b/performanceTests/environment/k8s/grafana/dashboards/ves-metrics.json @@ -26,11 +26,11 @@ } ] }, - "description": "Dashboard for Micrometer instrumented applications (Java, Spring Boot, Micronaut)", + "description": "", "editable": true, "gnetId": 4701, "graphTooltip": 1, - "iteration": 1591286065121, + "iteration": 1592483337437, "links": [], "panels": [ { @@ -462,7 +462,7 @@ "y": 5 }, "hiddenSeries": false, - "id": 111, + "id": 141, "legend": { "avg": false, "current": true, @@ -489,18 +489,29 @@ "steppedLine": false, "targets": [ { - "expr": "sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\"}[1m]))", + "expr": "sum(rate(http_server_requests_seconds_sum{exception=\"None\",method=\"POST\",outcome=\"SUCCESS\",status=\"202\",uri=\"/eventListener/{version}\"}[1h]))/sum(rate(http_server_requests_seconds_count{exception=\"None\",method=\"POST\",outcome=\"SUCCESS\",status=\"202\",uri=\"/eventListener/{version}\"}[1h]))", "format": "time_series", + "hide": false, + "interval": "", "intervalFactor": 1, - "legendFormat": "HTTP", + "legendFormat": "AVG", "refId": "A" + }, + { + "expr": "max(http_server_requests_seconds_max{exception=\"None\",method=\"POST\",outcome=\"SUCCESS\",status=\"202\",uri=\"/eventListener/{version}\"})", + "format": "time_series", + "hide": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "MAX", + "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Rate", + "title": "Processing time - eventListener endpoint", "tooltip": { "shared": true, "sort": 0, @@ -516,8 +527,8 @@ }, "yaxes": [ { - "decimals": null, - "format": "ops", + "$$hashKey": "object:204", + "format": "s", "label": null, "logBase": 1, "max": null, @@ -525,6 +536,7 @@ "show": true }, { + "$$hashKey": "object:205", "format": "short", "label": null, "logBase": 1, @@ -539,10 +551,7 @@ } }, { - "aliasColors": { - "HTTP": "#890f02", - "HTTP - 5xx": "#bf1b00" - }, + "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, @@ -562,7 +571,7 @@ "y": 5 }, "hiddenSeries": false, - "id": 112, + "id": 111, "legend": { "avg": false, "current": true, @@ -589,10 +598,10 @@ "steppedLine": false, "targets": [ { - "expr": "sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\", status=~\"5..\"}[1m]))", + "expr": "sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\"}[1m]))", "format": "time_series", "intervalFactor": 1, - "legendFormat": "HTTP - 5xx", + "legendFormat": "HTTP", "refId": "A" } ], @@ -600,7 +609,7 @@ "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Errors", + "title": "Rate", "tooltip": { "shared": true, "sort": 0, @@ -616,6 +625,7 @@ }, "yaxes": [ { + "$$hashKey": "object:297", "decimals": null, "format": "ops", "label": null, @@ -625,6 +635,7 @@ "show": true }, { + "$$hashKey": "object:298", "format": "short", "label": null, "logBase": 1, @@ -722,6 +733,7 @@ }, "yaxes": [ { + "$$hashKey": "object:269", "format": "s", "label": null, "logBase": 1, @@ -730,6 +742,7 @@ "show": true }, { + "$$hashKey": "object:270", "format": "short", "label": null, "logBase": 1, @@ -744,12 +757,14 @@ } }, { - "aliasColors": {}, + "aliasColors": { + "HTTP": "#890f02", + "HTTP - 5xx": "#bf1b00" + }, "bars": false, "dashLength": 10, "dashes": false, "datasource": "prometheus", - "description": "", "fieldConfig": { "defaults": { "custom": {} @@ -765,9 +780,8 @@ "y": 5 }, "hiddenSeries": false, - "id": 119, + "id": 112, "legend": { - "alignAsTable": false, "avg": false, "current": true, "max": false, @@ -793,59 +807,25 @@ "steppedLine": false, "targets": [ { - "expr": "tomcat_threads_busy_threads{application=\"$application\", instance=\"$instance\"}", + "expr": "sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\", status=~\"4..\"}[1m]))", "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "TOMCAT - BSY", + "interval": "", + "intervalFactor": 1, + "legendFormat": "HTTP - 4xx", "refId": "A" }, { - "expr": "tomcat_threads_current_threads{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "TOMCAT - CUR", + "expr": "sum(rate(http_server_requests_seconds_count{application=\"$application\", instance=\"$instance\", status=~\"5..\"}[1m]))", + "interval": "", + "legendFormat": "HTTP - 5xx", "refId": "B" - }, - { - "expr": "tomcat_threads_config_max_threads{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "TOMCAT - MAX", - "refId": "C" - }, - { - "expr": "jetty_threads_busy{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "JETTY - BSY", - "refId": "D" - }, - { - "expr": "jetty_threads_current{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "JETTY - CUR", - "refId": "E" - }, - { - "expr": "jetty_threads_config_max{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "JETTY - MAX", - "refId": "F" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, - "title": "Utilisation", + "title": "Errors", "tooltip": { "shared": true, "sort": 0, @@ -861,7 +841,9 @@ }, "yaxes": [ { - "format": "short", + "$$hashKey": "object:328", + "decimals": null, + "format": "ops", "label": null, "logBase": 1, "max": null, @@ -869,6 +851,7 @@ "show": true }, { + "$$hashKey": "object:329", "format": "short", "label": null, "logBase": 1, @@ -957,6 +940,7 @@ { "expr": "sum(jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", area=\"heap\"})", "format": "time_series", + "interval": "", "intervalFactor": 2, "legendFormat": "used", "metric": "", @@ -974,6 +958,7 @@ { "expr": "sum(jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", area=\"heap\"})", "format": "time_series", + "interval": "", "intervalFactor": 2, "legendFormat": "max", "refId": "C", @@ -1007,6 +992,7 @@ ], "yaxes": [ { + "$$hashKey": "object:96", "format": "bytes", "label": null, "logBase": 1, @@ -1015,6 +1001,7 @@ "show": true }, { + "$$hashKey": "object:97", "format": "short", "label": null, "logBase": 1, @@ -1139,6 +1126,7 @@ ], "yaxes": [ { + "$$hashKey": "object:444", "format": "bytes", "label": null, "logBase": 1, @@ -1147,6 +1135,7 @@ "show": true }, { + "$$hashKey": "object:445", "format": "short", "label": null, "logBase": 1, @@ -1271,6 +1260,7 @@ ], "yaxes": [ { + "$$hashKey": "object:503", "format": "bytes", "label": "", "logBase": 1, @@ -1279,143 +1269,7 @@ "show": true }, { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 13 - }, - "hiddenSeries": false, - "id": 86, - "legend": { - "avg": false, - "current": true, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_memory_vss_bytes{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "vss", - "metric": "", - "refId": "A", - "step": 2400 - }, - { - "expr": "process_memory_rss_bytes{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "rss", - "refId": "B" - }, - { - "expr": "process_memory_swap_bytes{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "swap", - "refId": "C" - }, - { - "expr": "process_memory_rss_bytes{application=\"$application\", instance=\"$instance\"} + process_memory_swap_bytes{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "total", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "JVM Process Memory", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { + "$$hashKey": "object:504", "format": "short", "label": null, "logBase": 1, @@ -1555,6 +1409,7 @@ ], "yaxes": [ { + "$$hashKey": "object:687", "decimals": 1, "format": "percentunit", "label": "", @@ -1564,6 +1419,7 @@ "show": true }, { + "$$hashKey": "object:688", "format": "short", "label": null, "logBase": 1, @@ -1678,6 +1534,7 @@ ], "yaxes": [ { + "$$hashKey": "object:746", "decimals": 1, "format": "short", "label": "", @@ -1687,6 +1544,7 @@ "show": true }, { + "$$hashKey": "object:747", "format": "short", "label": null, "logBase": 1, @@ -1820,6 +1678,7 @@ ], "yaxes": [ { + "$$hashKey": "object:805", "decimals": 0, "format": "short", "label": null, @@ -1829,6 +1688,7 @@ "show": true }, { + "$$hashKey": "object:806", "format": "short", "label": null, "logBase": 1, @@ -1926,6 +1786,7 @@ }, "yaxes": [ { + "$$hashKey": "object:864", "format": "short", "label": null, "logBase": 1, @@ -1934,6 +1795,7 @@ "show": true }, { + "$$hashKey": "object:865", "format": "short", "label": null, "logBase": 1, @@ -1946,2409 +1808,6 @@ "align": false, "alignLevel": null } - }, - { - "aliasColors": { - "debug": "#1F78C1", - "error": "#BF1B00", - "info": "#508642", - "trace": "#6ED0E0", - "warn": "#EAB839" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 18, - "x": 0, - "y": 28 - }, - "height": "", - "hiddenSeries": false, - "id": 91, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": false, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": true, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "error", - "yaxis": 1 - }, - { - "alias": "warn", - "yaxis": 1 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "increase(logback_events_total{application=\"$application\", instance=\"$instance\"}[1m])", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{level}}", - "metric": "", - "refId": "A", - "step": 1200 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Log Events", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "short", - "short" - ], - "yaxes": [ - { - "decimals": 0, - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 28 - }, - "hiddenSeries": false, - "id": 61, - "legend": { - "avg": false, - "current": true, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_files_open_files{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "open", - "metric": "", - "refId": "A", - "step": 2400 - }, - { - "expr": "process_files_max_files{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "B", - "step": 2400 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "File Descriptors", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "short", - "short" - ], - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 10, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 35 - }, - "id": 129, - "panels": [], - "repeat": "persistence_counts", - "title": "JVM Memory Pools (Heap)", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 36 - }, - "id": 3, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": "jvm_memory_pool_heap", - "scopedVars": { - "jvm_memory_pool_heap": { - "selected": false, - "text": "Eden Space", - "value": "Eden Space" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_heap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 36 - }, - "id": 134, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatIteration": 1591286065121, - "repeatPanelId": 3, - "scopedVars": { - "jvm_memory_pool_heap": { - "selected": false, - "text": "Survivor Space", - "value": "Survivor Space" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_heap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 36 - }, - "id": 135, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatIteration": 1591286065121, - "repeatPanelId": 3, - "scopedVars": { - "jvm_memory_pool_heap": { - "selected": false, - "text": "Tenured Gen", - "value": "Tenured Gen" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_heap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_heap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 43 - }, - "id": 130, - "panels": [], - "repeat": null, - "title": "JVM Memory Pools (Non-Heap)", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 44 - }, - "id": 78, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": "jvm_memory_pool_nonheap", - "scopedVars": { - "jvm_memory_pool_nonheap": { - "selected": false, - "text": "Metaspace", - "value": "Metaspace" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_nonheap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 44 - }, - "id": 136, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatIteration": 1591286065121, - "repeatPanelId": 78, - "scopedVars": { - "jvm_memory_pool_nonheap": { - "selected": false, - "text": "Compressed Class Space", - "value": "Compressed Class Space" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_nonheap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 44 - }, - "id": 137, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatIteration": 1591286065121, - "repeatPanelId": 78, - "scopedVars": { - "jvm_memory_pool_nonheap": { - "selected": false, - "text": "CodeHeap 'profiled nmethods'", - "value": "CodeHeap 'profiled nmethods'" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_nonheap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 51 - }, - "id": 138, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatIteration": 1591286065121, - "repeatPanelId": 78, - "scopedVars": { - "jvm_memory_pool_nonheap": { - "selected": false, - "text": "CodeHeap 'non-profiled nmethods'", - "value": "CodeHeap 'non-profiled nmethods'" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_nonheap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 51 - }, - "id": 139, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 3, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatIteration": 1591286065121, - "repeatPanelId": 78, - "scopedVars": { - "jvm_memory_pool_nonheap": { - "selected": false, - "text": "CodeHeap 'non-nmethods'", - "value": "CodeHeap 'non-nmethods'" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 1800 - }, - { - "expr": "jvm_memory_committed_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "commited", - "metric": "", - "refId": "B", - "step": 1800 - }, - { - "expr": "jvm_memory_max_bytes{application=\"$application\", instance=\"$instance\", id=~\"$jvm_memory_pool_nonheap\"}", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "C", - "step": 1800 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "$jvm_memory_pool_nonheap", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "mbytes", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 58 - }, - "id": 131, - "panels": [], - "repeat": null, - "title": "Garbage Collection", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 59 - }, - "id": 98, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(jvm_gc_pause_seconds_count{application=\"$application\", instance=\"$instance\"}[1m])", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{action}} ({{cause}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Collections", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 59 - }, - "id": 101, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(jvm_gc_pause_seconds_sum{application=\"$application\", instance=\"$instance\"}[1m])/rate(jvm_gc_pause_seconds_count{application=\"$application\", instance=\"$instance\"}[1m])", - "format": "time_series", - "hide": false, - "instant": false, - "intervalFactor": 1, - "legendFormat": "avg {{action}} ({{cause}})", - "refId": "A" - }, - { - "expr": "jvm_gc_pause_seconds_max{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "hide": false, - "instant": false, - "intervalFactor": 1, - "legendFormat": "max {{action}} ({{cause}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Pause Durations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 59 - }, - "id": 99, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(jvm_gc_memory_allocated_bytes_total{application=\"$application\", instance=\"$instance\"}[1m])", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "allocated", - "refId": "A" - }, - { - "expr": "rate(jvm_gc_memory_promoted_bytes_total{application=\"$application\", instance=\"$instance\"}[1m])", - "format": "time_series", - "interval": "", - "intervalFactor": 1, - "legendFormat": "promoted", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Allocated/Promoted", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 66 - }, - "id": 132, - "panels": [], - "repeat": null, - "title": "Classloading", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 67 - }, - "id": 37, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_classes_loaded_classes{application=\"$application\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "loaded", - "metric": "", - "refId": "A", - "step": 1200 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Classes loaded", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "short", - "short" - ], - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 67 - }, - "id": 38, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "delta(jvm_classes_loaded_classes{application=\"$application\",instance=\"$instance\"}[1m])", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "delta-1m", - "metric": "", - "refId": "A", - "step": 1200 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Class delta", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "ops", - "short" - ], - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "collapsed": false, - "datasource": null, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 74 - }, - "id": 133, - "panels": [], - "repeat": null, - "title": "Buffer Pools", - "type": "row" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 75 - }, - "id": 33, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_buffer_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"direct\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 2400 - }, - { - "expr": "jvm_buffer_total_capacity_bytes{application=\"$application\", instance=\"$instance\", id=\"direct\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "capacity", - "metric": "", - "refId": "B", - "step": 2400 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Direct Buffers", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "short", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 6, - "y": 75 - }, - "id": 83, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_buffer_count_buffers{application=\"$application\", instance=\"$instance\", id=\"direct\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "count", - "metric": "", - "refId": "A", - "step": 2400 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Direct Buffers", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "short", - "short" - ], - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 12, - "y": 75 - }, - "id": 85, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_buffer_memory_used_bytes{application=\"$application\", instance=\"$instance\", id=\"mapped\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "used", - "metric": "", - "refId": "A", - "step": 2400 - }, - { - "expr": "jvm_buffer_total_capacity_bytes{application=\"$application\", instance=\"$instance\", id=\"mapped\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "capacity", - "metric": "", - "refId": "B", - "step": 2400 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Mapped Buffers", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "short", - "short" - ], - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 1, - "grid": { - "leftLogBase": 1, - "leftMax": null, - "leftMin": null, - "rightLogBase": 1, - "rightMax": null, - "rightMin": null - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 75 - }, - "id": 84, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "jvm_buffer_count_buffers{application=\"$application\", instance=\"$instance\", id=\"mapped\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "count", - "metric": "", - "refId": "A", - "step": 2400 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Mapped Buffers", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "x-axis": true, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "y-axis": true, - "y_formats": [ - "short", - "short" - ], - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] } ], "refresh": "5s", @@ -4471,13 +1930,12 @@ ] }, "time": { - "from": "now-15m", + "from": "now-1h", "to": "now" }, "timepicker": { "now": true, "refresh_intervals": [ - "5s", "10s", "30s", "1m", @@ -4501,7 +1959,7 @@ ] }, "timezone": "browser", - "title": "JVM (Ves dashboard)", + "title": "VES metrics", "uid": "UnTwUiiGz", "version": 1 }
\ No newline at end of file diff --git a/performanceTests/environment/k8s/prometheus/configmap.yaml b/performanceTests/environment/k8s/prometheus/configmap.yaml index d2db2610..f0450b14 100644 --- a/performanceTests/environment/k8s/prometheus/configmap.yaml +++ b/performanceTests/environment/k8s/prometheus/configmap.yaml @@ -39,6 +39,12 @@ data: static_configs: - targets: ['dcae-ves-collector.onap:8443'] + - job_name: 'ves-dmaap-simulator' + metrics_path: '/actuator/prometheus' + scheme: http + static_configs: + - targets: ['ves-dmaap-simulator.onap:3904'] + - job_name: 'kubernetes-cadvisor' scheme: https |