kubernauts / jmeter-operator Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
Hi, I've been trying to work on a Proof of Concept for jmeter-operator but need to first install on minikube and it fails at the first step:
kubectl apply -f deploy/crds/loadtest_v1alpha1_jmeter_crd.yaml
Error from server (NotFound): the server could not find the requested resource
Can you please give instructions on minikube?
Thanks
How would one go about connecting this to a MSSQL server instance? (Azure SQL specifically)
If I updated the dashboard to pull the applications from the jmeter table instead of the process table, it seems to work.
For example:
$app | SHOW TAG VALUES FROM "jmeter" WITH KEY = "application"
Hi,
So i followed the steps and i am running this in my local virtualbox. I see that the cluster was running and my pod is running as well ( i exposed the service and was able to get the URL as well). When i follow the steps after cloning it in my terminal i am getting the above error. Can you help me fix this issue?
s-MacBook-Air:~ $ git clone https://github.com/kubernauts/jmeter-operator.git
Cloning into 'jmeter-operator'...
remote: Enumerating objects: 145, done.
remote: Counting objects: 100% (145/145), done.
remote: Compressing objects: 100% (87/87), done.
remote: Total 145 (delta 53), reused 124 (delta 38), pack-reused 0
Receiving objects: 100% (145/145), 108.10 KiB | 1.69 MiB/s, done.
Resolving deltas: 100% (53/53), done.
s-MacBook-Air:~ $ kubectl apply -f deploy/crds/loadtest_v1alpha1_jmeter_crd.yaml
error: the path "deploy/crds/loadtest_v1alpha1_jmeter_crd.yaml" does not exist
s-MacBook-Air:~ $ kubectl get crd
No resources found.
./initialize_cluster.sh
When the above command is executed I get the error
Error: unknown shorthand flag: 'e' in -execute
See 'influx -h' for help
command terminated with exit code 1
This error is thrown from the line
kubectl -n $namespace exec -ti $influxdb_pod -- influx -execute 'CREATE DATABASE jmeter'
Any idea about this error?
Hi,
I wanted to know how I can send command line arguments in this configuration. Let's say I want to send a URL on the command line using JUrl
, so how can I do that?
Hello,
I followed steps 1-5 and went to deploy, but got this error message
error: unable to recognize "jmeter-deploy.yaml": no matches for kind "Jmeter" in version "loadtest.jmeter.com/v1alpha1"
Does this look correct?
>kubectl describe crd jmeters.loadtest.jmeter.com
Name: jmeters.loadtest.jmeter.com
Namespace:
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apiextensions.k8s.io/v1beta1","kind":"CustomResourceDefinition","metadata":{"annotations":{},"name":"jmeters.loadtest.jmeter.com","names...
API Version: apiextensions.k8s.io/v1beta1
Kind: CustomResourceDefinition
Metadata:
Creation Timestamp: 2019-04-05T17:14:46Z
Generation: 1
Resource Version: 93079
Self Link: /apis/apiextensions.k8s.io/v1beta1/customresourcedefinitions/jmeters.loadtest.jmeter.com
UID: 4fbd1488-57c6-11e9-afbb-4235bd207d22
Spec:
Additional Printer Columns:
JSON Path: .metadata.creationTimestamp
Description: CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.
Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
Name: Age
Type: date
Group: loadtest.jmeter.com
Names:
Kind: Jmeter
List Kind: JmeterList
Plural: jmeters
Singular: jmeter
Scope: Namespaced
Subresources:
Status:
Version: v1alpha1
Versions:
Name: v1alpha1
Served: true
Storage: true
Status:
Accepted Names:
Kind: Jmeter
List Kind: JmeterList
Plural: jmeters
Singular: jmeter
Conditions:
Last Transition Time: 2019-04-05T17:14:46Z
Message: no conflicts found
Reason: NoConflicts
Status: True
Type: NamesAccepted
Last Transition Time: <nil>
Message: the initial names have been accepted
Reason: InitialNamesAccepted
Status: True
Type: Established
Stored Versions:
v1alpha1
Events: <none>
Kubernetes version v1.12.6
I've configured my tests, and they usually run in 10 pods, with 5 threads each, and 100 loops hitting an API endpoint (so 50 users running a command 100 times = 5000 hits)
My jmeter test starts off ok, I see the summary output for about 3 minutes. Then the console stops responding, and if I try to view the dashboards in Grafana, they all just sit there and spin.
I thought maybe I was overwhelming the pods, so I set resource limits (2 CPU, 2Gi Memory) and requests (500m CPU, 512 Mi Memory). But if I run a kubectl top pods -n tqa, nothing is consuming more than a 3 mCPU and 5xx Mi of Memory (this is mostly the jmeter master).
Any ideas on what may be dragging? I'm not a Linux pro, so I'm not very versed in troubleshooting on a linux pod. Should I be doing something different?
There is currently no information about your licensing available. Is it Apache 2.0 similar to kubernauts/jmeter-kubernetes?
HI,
So looks like all the steps are working for me. I wanted to know which ip/link should i use for accessing Grafana. Also, i have minkube installed but i want the grafana to be accessible to any user who wants to run a test. It would be great if you could answer these questions for me. Really appreciate your help. Thanks!!
Lastly, my original question regarding the grafana link. Below is the output . Could you guide me as to how i can access grafana via the jmeter service?
s-MacBook-Air:jmeter-operator $ ./initialize_cluster.sh
Enter the Jmeter Namespace: tqa
Creating Influxdb jmeter Database
Creating the Influxdb data source
{"datasource":{"id":1,"orgId":1,"name":"jmeterdb","type":"influxdb","typeLogoUrl":"","access":"proxy","url":"http://tqa-loadtest-influxdb:8086","password":"admin","user":"admin","database":"jmeter","basicAuth":false,"basicAuthUser":"","basicAuthPassword":"","withCredentials":false,"isDefault":true,"secureJsonFields":{},"version":1,"readOnly":false},"id":1,"message":"Datasource added","name":"jmeterdb"}s-MacBook-Air:jmeter-operator $ kubectl -n tqa get all
NAME READY STATUS RESTARTS AGE
pod/tqa-loadtest-grafana-7b8db9bdb5-v2rr4 1/1 Running 0 39m
pod/tqa-loadtest-influxdb-745b76b6d6-r6c49 1/1 Running 0 39m
pod/tqa-loadtest-jmeter-master-6cd6d7df46-4mm84 1/1 Running 0 40m
pod/tqa-loadtest-jmeter-slaves-768d8c4dc9-gj9 1/1 Running 0 39m
pod/tqa-loadtest-jmeter-slaves-768d8c4dc9-pbnhl 1/1 Running 0 39m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/tqa-loadtest-grafana LoadBalancer 10.102.185.69 3000:31762/TCP 39m
service/tqa-loadtest-influxdb ClusterIP 10.96.154.198 8083/TCP,8086/TCP,2003/TCP 39m
service/tqa-loadtest-jmeter-slaves-svc ClusterIP None 1099/TCP,50000/TCP 39m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/tqa-loadtest-grafana 1/1 1 1 39m
deployment.apps/tqa-loadtest-influxdb 1/1 1 1 39m
deployment.apps/tqa-loadtest-jmeter-master 1/1 1 1 40m
deployment.apps/tqa-loadtest-jmeter-slaves 2/2 2 2 39m
NAME DESIRED CURRENT READY AGE
replicaset.apps/tqa-loadtest-grafana-7b8db9bdb5 1 1 1 39m
replicaset.apps/tqa-loadtest-influxdb-745b76b6d6 1 1 1 39m
replicaset.apps/tqa-loadtest-jmeter-master-6cd6d7df46 1 1 1 40m
replicaset.apps/tqa-loadtest-jmeter-slaves-768d8c4dc9 2
Replace the word "slave" with "agent"
I'm following the README trying to get everything set up on Openshift, however when creating the deployment based on the jmeter-deploy.yaml, the InfluxDB container goes into a crashloop due to a permissions error
ts=2019-06-21T05:50:01.973379Z lvl=info msg="InfluxDB starting" log_id=0GA9CAyG000 version=1.7.6 branch=1.7 commit=01c8dd416270f424ab0c40f9291e269ac6921964
ts=2019-06-21T05:50:01.973459Z lvl=info msg="Go runtime" log_id=0GA9CAyG000 version=go1.11 maxprocs=8
run: create server: mkdir all: mkdir /var/lib/influxdb/meta: permission denied
I presume that this is because OpenShift runs all containers as a non root user by default. Does anyone have experience setting this up on OpenShift and have a hint on what would be the most elegant way to solve this?
Hi,
Thank you for the article. I was able to replicate the above steps on my local and it works fine but i had a few questions regarding doing the same on AWS.
HI,
I followed the steps and looks like my cluster and pods are running. ./initialize_cluster.sh also worked as expected and i see the correct output as posted on your github. I tried to run the test via ./start_test.sh and that seemed to work fine but looks my grafana data source (jmterdb) is showing up but failing to connect.
I tried the same in my local jmeter and it says Failed to connect to influx db. Please find the log from jmeter below. I did google stuff and i cant connect to InfluxDB via cluster ip and its shows no node port for infuxdb service when i run minikube service list. Any ideas how to troubleshoot this?
Endpoint: http://tqa-loadtest-influxdb:8086/write?db=jmeter
InfluxdConfig file: bind-address = "127.0.0.1:8088" (this is also not reachable via browser)
Log:
ava.util.concurrent.ExecutionException: java.net.UnknownHostException: tqa-loadtest-influxdb
at org.apache.http.concurrent.BasicFuture.getResult(BasicFuture.java:71) ~[httpcore-4.4.11.jar:4.4.11]
at org.apache.http.concurrent.BasicFuture.get(BasicFuture.java:95) ~[httpcore-4.4.11.jar:4.4.11]
at org.apache.http.impl.nio.client.FutureWrapper.get(FutureWrapper.java:75) ~[httpasyncclient-4.1.4.jar:4.1.4]
at org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender.destroy(HttpMetricsSender.java:235) [ApacheJMeter_components.jar:5.1.1 r1855137]
at org.apache.jmeter.visualizers.backend.influxdb.InfluxdbBackendListenerClient.teardownTest(InfluxdbBackendListenerClient.java:413) [ApacheJMeter_components.jar:5.1.1 r1855137]
at org.apache.jmeter.visualizers.backend.BackendListener.testEnded(BackendListener.java:387) [ApacheJMeter_components.jar:5.1.1 r1855137]
at org.apache.jmeter.visualizers.backend.BackendListener.testEnded(BackendListener.java:395) [ApacheJMeter_components.jar:5.1.1 r1855137]
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfEnd(StandardJMeterEngine.java:218) [ApacheJMeter_core.jar:5.1.1 r1855137]
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:492) [ApacheJMeter_core.jar:5.1.1 r18551
The influxdb docker image was recently updated to 2.x, and now requires additional ENV variables to be set.
https://hub.docker.com/_/influxdb
jmeter-operator was not spinning up correctly; Grafana would show "Not authorized" and not able to connect using admin:admin to influxdb. Pinning influxdb_image
to influxdb:1.8
solved the problem.
Following the guide works fine. But when I try to run my own test plan, I get the following:
Engine is busy - please try later Engine is busy - please try later Engine is busy - please try later Engine is busy - please try later Engine is busy - please try later Remote engines have been started Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
How do I shutdown a test?
how can I stop a running test?
Hi,
Which file do i need to edit to edit the test execution. The current config is running with 2 users but i want to exert more load. Can you guide how to do that or is that a change i need to make via the jmeter ui? Thanks!!
The $ curl
not found at Grafana Pod.
bash-5.0$ curl 'http://admin:[email protected]:3000/api/datasources' -X POST -H 'Content-Type: application/json;charset=UTF-8' --data-binary '{"name":"jmeterdb","type":"influxdb","url":"http://'$influxdb_svc':8086","access":"proxy","isDefault":true,"database":"jmeter","user":"admin","password":"admin"}'
bash: curl: command not found
bash-5.0$ cat /etc/issue
Welcome to Alpine Linux 3.12
Kernel \r on an \m (\l)
When you try execute the script initialize_cluster.sh
return a generic error:
./initialize_cluster.sh
Enter the Jmeter Namespace: mynamespace
Creating Influxdb jmeter Database
Creating the Influxdb data source
OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "curl": executable file not found in $PATH: unknown
command terminated with exit code 126
I was following installation steps and I got this deprecation warning:
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
$ kubectl apply -f deploy/crds/loadtest_v1alpha1_jmeter_crd.yaml
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
customresourcedefinition.apiextensions.k8s.io/jmeters.loadtest.jmeter.com created
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.1", GitCommit:"5e58841cce77d4bc13713ad2b91fa0d961e69192", GitTreeState:"clean", BuildDate:"2021-05-12T14:18:45Z", GoVersion:"go1.16.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:51:19Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.