Keycloak의 간단한 상태 확인

5000 단어 keycloakmonitoring

Today we will see how to add a simple and not intrusive health check based on shell script for your Keycloak



언젠가 나는 메인 클러스터에서 알려진 이유 없이 사용자 세션이 매우 빠르게 증가한다는 (나쁜) 경험을 했습니다.

그 결과 최대 힙 메모리 점유에 도달했기 때문에 CPU를 계속 사용하는 사용자 세션이 증가했습니다. 약간 수다스러운 상태 확인 프로브에 의해 전용 Keycloak 클라이언트에서 50,000개 이상의 사용자 세션이 생성되었습니다 😇

오늘의 교훈, 토큰 설정을 미세 조정했다면 테스트 사용자를 로그인하고 로그아웃하는 것을 잊지 마십시오.

간단한 프로브



유일한 전제 조건은 스크립트가 실행되는 환경에서 jq 명령을 사용할 수 있어야 한다는 것입니다.

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


내가 해봐



https://gist.github.com/ulrich/aa04a793d54703998ecb015a0e2ff803

신용 사진 : https://pixabay.com/fr/users/jackmac34-483877/

좋은 웹페이지 즐겨찾기