To troubleshoot Kangal you will need access to your Kubernetes cluster.
- Log in to the cluster where Kangal is installed
- Check if Kangal Proxy and Controller pods are up and running
- Check logs of Kangal Proxy and Kangal Controller
Kangal backends usually run their load tests using Kubernetes Jobs. Jobs will spawn Pods, to perform the workload until:
- The expected number of completions (usually the same as distributed pods spec);
- The backoff limit is reached (subject to backends that can recover from failures);
The Pods created by Jobs are ephemeral resources subject to the lifecycle of the Node they were scheduled. Which means they won't survive an eviction in case of lack of resources or Node maintenance.
In case a load test was interrupted, and the backend can't recover from a failure, you should run a new test.
You can make basic troubleshooting using Kangal API endpoints or either exploring load test Pods if is the case of your backend.
- Get status of the load test
curl -X GET 'http://${KANGAL_PROXY_ADDRESS}/load-test/loadtest-random-name/' - Get logs from the master pod
curl -X GET 'http://${KANGAL_PROXY_ADDRESS}/load-test/loadtest-random-name/logs' - Get logs from the worker pod
curl -X GET 'http://${KANGAL_PROXY_ADDRESS}/load-test/loadtest-random-name/logs/0' I want to use a specific version of docker image for my backend but another version is used automatically
If you want to use a custom docker image for your load tests, as describe here, check the following:
- you have
ALLOWED_CUSTOM_IMAGES=trueenvironment variable set for your Kangal Proxy deployment. If not - no custom images are allowed
The default images and tags are specified as constants in /pkg/backends/your_backend_name/backend.go files. You can find
an example of K6 here.
If you want to redefine the default images and tags - use deployment environment variables for Proxy and Controller.
JMETER_MASTER_IMAGE_NAMEandJMETER_MASTER_IMAGE_TAGfor JMeter master pods andJMETER_WORKER_IMAGE_NAMEandJMETER_WORKER_IMAGE_TAGfor JMeter worker podsLOCUST_IMAGE_NAMEandLOCUST_IMAGE_TAGfor LocustGHZ_IMAGE_NAMEandGHZ_IMAGE_TAGfor GhzK6_IMAGE_NAMEandK6_IMAGE_TAGfor K6