Git Product home page Git Product logo

jmeter-operator's People

Contributors

ashleyschuett avatar awadodeh avatar infinitydon avatar muellermh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jmeter-operator's Issues

Cannot get to work with minikube

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

MSSQL

How would one go about connecting this to a MSSQL server instance? (Azure SQL specifically)

No applications in the grafana dropdown

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"

error: the path "deploy/crds/loadtest_v1alpha1_jmeter_crd.yaml" does not exist

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 throws error

./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?

Current hits per second is 0.

Hi guys,
First of all i would say thanks for your great work.
In grafana "Currents hits per Second" doesn't work.
I don't know the reason.
Do you know the reason ?
Thanks in advance.
image

no matches for kind "Jmeter" in version "loadtest.jmeter.com/v1alpha1"

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

JMeter Master Stops Responding

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?

No License available

There is currently no information about your licensing available. Is it Apache 2.0 similar to kubernauts/jmeter-kubernetes?

Grafana link not working

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!!

  1. My assumption is that every user who wants to run a test should clone the repo and add the test script in there? Is that correct?
  2. Currently i have done this entire setup on my local with minikube but the same can be replicated with kubernetes running on the cloud?
  3. Grafana link for jmeter service is accessible to all users or any kind of set up needs to be done for any user? The idea is to get the cluster running and folks can just come in and execute the test by starting the ./start_test.sh (once i have initialized the cluster then they should not have to repeat this).

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

InfluxDB not starting on OpenShift due to permission error

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?

Steps for replicating the same on AWS kubernetes

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.

  1. My assumption is that i have to create the kubernetes cluster 1st and then copy over the jmeter-kubernetes folder into the cluster and then follow the steps mentioned to deploy the jmeter yaml file and then follow the steps to create the pods for influx etc?
  2. Does Influx persist the data or does it only store the data while the cluster is up? if not, then how can we save the data?
    3.. Is there a way to integrate this setup with terraform for the same so that the cluster can be created and destroyed on the fly?

Failed to connect to InfluxDB

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

Pin influxdb to 1.8 or update invocation

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.

How to provide path

While installing ./initialize_cluster.sh command, im getting below issue. Please help me on this.
Untitled

How to shut down?

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?

Which file do i need to edit to edit the test execution

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!!

Automation to create InfluxDB fails

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

apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+

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"}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.