Today we will see how to add a simple and not intrusive health check based on shell script for your Keycloak
Sometime ago I did the (bad) experience to note the user sessions increase very faster without known reason on the main cluster.
The result of this was a rise of the user sessions which keep busy the CPU because we reached the maximum of heap memory occupation. More of 50k user sessions have been created on a dedicated Keycloak client by a health check probe a bit chatty 😇
Lesson of the day, if you fine-tuned your token settings don't forget to login AND logout test users.
A simple probe
The only prerequisite is to have jq
command available on the environment where the script runs.
#!/bin/bash login_access=$(curl -k -X POST \ -H "Content-Type:application/x-www-form-urlencoded" \ -d "grant_type=password" \ -d "client_id=admin-cli" \ -d "username=alive" \ -d "password=[REDACTED]" \ 'https://keyclaok.company.com/auth/realms/[REALM]/protocol/openid-connect/token') error=$(jq -r .error <<< $login_access) if [ $error == "null" ]; then echo "Login successful for test user." else echo "Unable to login test user ($error)." exit 1 fi access_token=$(jq -r '.access_token' <<< "${login_access}") refresh_token=$(jq -r '.refresh_token' <<< "${login_access}") logout_response=$(curl -s -o /dev/null -w '%{http_code}' -k -X POST \ -H "Content-Type:application/x-www-form-urlencoded" \ -H "Authorization: Bearer $access_token" \ -d "client_id=[CLIENT_ID]" \ -d "refresh_token=$refresh_token" \ 'https://keycloak.company.com/auth/realms/[REALM]/protocol/openid-connect/logout') if [ $logout_response -eq 204 ]; then echo "Logout successful for test user." else echo "Unable to logout test user ($logout_response)." exit 1 fi
Le me try it
https://gist.github.com/ulrich/aa04a793d54703998ecb015a0e2ff803
Crédit photo : https://pixabay.com/fr/users/jackmac34-483877/
Top comments (0)