12.5. 심각한 경고 문제 해결
12.5.1. Elasticsearch 클러스터 상태가 빨간색임
하나 이상의 기본 shard와 해당 복제본이 노드에 할당되지 않습니다.
문제 해결
Elasticsearch 클러스터 상태를 확인하고 클러스터
status
가 빨간색인지 확인합니다.oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- health
클러스터에 참여한 노드를 나열합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/nodes?v
Elasticsearch pod를 나열하고 이전 단계의 명령 출력의 노드와 비교합니다.
oc -n openshift-logging get pods -l component=elasticsearch
일부 Elasticsearch 노드가 클러스터에 참여하지 않은 경우 다음 단계를 수행합니다.
Elasticsearch에 선택한 컨트롤 플레인 노드가 있는지 확인합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/master?v
선택한 컨트롤 플레인 노드의 Pod 로그를 검토하여 문제가 있는지 확인합니다.
oc logs <elasticsearch_master_pod_name> -c elasticsearch -n openshift-logging
클러스터에 참여하지 않은 노드의 로그에서 문제가 있는지 검토합니다.
oc logs <elasticsearch_node_name> -c elasticsearch -n openshift-logging
모든 노드가 클러스터에 참여한 경우 다음 단계를 수행하여 클러스터가 복구 프로세스 중인지 확인합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/recovery?active_only=true
명령 출력이 없는 경우 복구 프로세스가 보류 중인 작업에서 지연되거나 중단될 수 있습니다.
보류 중인 작업이 있는지 확인합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- health |grep number_of_pending_tasks
보류 중인 작업이 있는 경우 상태를 모니터링합니다.
상태가 변경되고 클러스터가 복구 중임을 나타내는 경우 계속 대기합니다. 복구 시간은 클러스터의 크기와 기타 요인에 따라 다릅니다.
그렇지 않으면 보류 중인 작업의 상태가 변경되지 않는 경우 복구가 중지되었음을 나타냅니다.
복구가 중단된 것처럼 보이는 경우
cluster.routing.allocation.enable
이none
으로 설정되어 있는지 확인합니다.oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cluster/settings?pretty
cluster.routing.allocation.enable
이none
으로 설정되어 있으면all
로 설정합니다.oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cluster/settings?pretty -X PUT -d '{"persistent": {"cluster.routing.allocation.enable":"all"}}'
어떤 인덱스가 아직 빨간색인지 확인합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/indices?v
인덱스가 빨간색이면 다음 단계를 수행하여 지웁니다.
캐시를 지웁니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name>/_cache/clear?pretty
최대 할당 재시도 횟수를 늘립니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name>/_settings?pretty -X PUT -d '{"index.allocation.max_retries":10}'
모든 스크롤 항목을 삭제합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_search/scroll/_all -X DELETE
시간 제한을 늘립니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name>/_settings?pretty -X PUT -d '{"index.unassigned.node_left.delayed_timeout":"10m"}'
이전 단계에서 빨간색 인덱스를 지우지 않으면 인덱스를 개별적으로 삭제합니다.
빨간색 인덱스 이름을 확인합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/indices?v
빨간색 인덱스를 삭제합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_red_index_name> -X DELETE
빨간색 인덱스가 없고 클러스터 상태가 빨간색이면 데이터 노드에서 지속적으로 처리 로드가 높은지 확인합니다.
Elasticsearch JVM 힙 사용량이 높은지 확인합니다.
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_nodes/stats?pretty
명령 출력에서
node_name.jvm.mem.heap_used_percent
필드를 검토하여 JVM 힙 사용량을 확인합니다.- CPU 사용률이 높은지 확인합니다.
추가 리소스
- Elasticsearch 주제에서 "Free up or increase disk space"를 검색하고 빨간색 또는 노란색 클러스터 상태를 수정합니다.