36.13.3. Kibana
다음과 같은 문제 해결 문제는 EFK 스택의 Kibana 구성 요소에 적용됩니다.
Kibana에 로그인 반복
Kibana 콘솔을 시작하고 성공적으로 로그인하면 잘못 Kibana로 리디렉션되어 로그인 화면으로 즉시 리디렉션됩니다.
이 문제의 원인은 Kibana 앞의 OAuth2 프록시가 유효한 클라이언트로 식별하기 위해 마스터의 OAuth2 서버와 시크릿을 공유해야 한다는 것입니다. 이 문제는 보안이 일치하지 않음을 나타낼 수 있습니다. 노출될 수 있는 방식으로 이 문제를 보고하지 않습니다.
이 문제는 로깅을 두 번 이상 배포할 때 발생할 수 있습니다. 예를 들어 초기 배포를 수정하고 Kibana에서 사용하는 시크릿
이 교체되는 동안 일치하는 마스터 oauthclient
항목이 교체되지 않습니다.
다음을 수행할 수 있습니다.
$ oc delete oauthclient/kibana-proxy
openshift-ansible
지침에 따라 openshift_logging
역할을 다시 실행합니다. 이렇게 하면 oauthclient가 대체되고 다음에 성공적으로 로그인한 다음 로그인이 반복되지 않아야 합니다.
*"error":"invalid\_request" on login*
Kibana의 로그인 오류
Kibana 콘솔을 방문하려고 하면 대신 브라우저 오류가 발생할 수 있습니다.
{"error":"invalid_request","error_description":"The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed."}
이 문제는 OAuth2 클라이언트와 서버 간의 불일치로 인해 발생할 수 있습니다. 클라이언트의 반환 주소는 허용 목록에 있어야 로그인 후 서버가 안전하게 다시 리디렉션될 수 있습니다. 불일치가 있는 경우 오류 메시지가 표시됩니다.
이 문제는 이전 배포에서 oauthclient
항목 링링으로 인해 발생할 수 있습니다. 이 경우 대체할 수 있습니다.
$ oc delete oauthclient/kibana-proxy
openshift-ansible
지침에 따라 openshift_logging
역할을 다시 실행하면 oauthclient
항목이 대체됩니다. Kibana 콘솔로 돌아가서 다시 로그인합니다.
문제가 지속되면 OAuth 클라이언트에 나열된 URL에서 Kibana에 액세스하고 있는지 확인하십시오. 이 문제는 표준 443 HTTPS 포트 대신 1443과 같은 전달 포트에서 URL에 액세스하면 발생할 수 있습니다.
oauthclient
를 편집하여 서버 화이트리스트를 조정할 수 있습니다.
$ oc edit oauthclient/kibana-proxy
실제로 사용 중인 주소를 포함하도록 수락된 리디렉션 URI 목록을 편집합니다. 저장하고 종료한 후 오류가 해결됩니다.
Kibana 액세스에 503 오류 표시
Kibana 콘솔을 볼 때 프록시 오류가 발생하면 다음 두 가지 문제 중 하나로 인해 발생할 수 있습니다.
Kibana가 Pod를 인식하지 못할 수 있습니다. ElasticSearch가 시작 속도가 느리면 Kibana가 ElasticSearch에 도달하려고 할 수 있으며 Kibana가 활성 상태라고 생각하지 않습니다. 관련 서비스에 끝점이 있는지 확인할 수 있습니다.
$ oc describe service logging-kibana Name: logging-kibana [...] Endpoints: <none>
Kibana Pod가 활성화되어 있으면 끝점이 나열되어야 합니다. 그렇지 않은 경우 Kibana Pod 및 배포 상태를 확인합니다.
Kibana 서비스에 액세스하기 위한 명명된 경로가 마스킹될 수 있습니다.
하나의 프로젝트에서 테스트 배포를 수행한 다음 첫 번째 배포를 완전히 제거하지 않고 다른 프로젝트에 배포할 경우에 발생할 수 있습니다. 여러 경로가 동일한 대상으로 전송되면 기본 라우터는 처음 생성된 대상으로만 라우팅합니다. 문제가 있는 경로가 여러 위치에 정의되어 있는지 확인하십시오.
$ oc get route --all-namespaces --selector logging-infra=support NAMESPACE NAME HOST/PORT PATH SERVICE logging kibana kibana.example.com logging-kibana logging kibana-ops kibana-ops.example.com logging-kibana-ops
이 예에서는 중복되는 경로가 없습니다.