12.5. 심각한 경고 문제 해결

12.5.1. Elasticsearch 클러스터 상태가 빨간색임

하나 이상의 기본 shard와 해당 복제본이 노드에 할당되지 않습니다.

문제 해결

  1. Elasticsearch 클러스터 상태를 확인하고 클러스터 status가 빨간색인지 확인합니다.

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- health
  2. 클러스터에 참여한 노드를 나열합니다.

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/nodes?v
  3. Elasticsearch pod를 나열하고 이전 단계의 명령 출력의 노드와 비교합니다.

    oc -n openshift-logging get pods -l component=elasticsearch
  4. 일부 Elasticsearch 노드가 클러스터에 참여하지 않은 경우 다음 단계를 수행합니다.

    1. Elasticsearch에 선택한 컨트롤 플레인 노드가 있는지 확인합니다.

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/master?v
    2. 선택한 컨트롤 플레인 노드의 Pod 로그를 검토하여 문제가 있는지 확인합니다.

      oc logs <elasticsearch_master_pod_name> -c elasticsearch -n openshift-logging
    3. 클러스터에 참여하지 않은 노드의 로그에서 문제가 있는지 검토합니다.

      oc logs <elasticsearch_node_name> -c elasticsearch -n openshift-logging
  5. 모든 노드가 클러스터에 참여한 경우 다음 단계를 수행하여 클러스터가 복구 프로세스 중인지 확인합니다.

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/recovery?active_only=true

    명령 출력이 없는 경우 복구 프로세스가 보류 중인 작업에서 지연되거나 중단될 수 있습니다.

  6. 보류 중인 작업이 있는지 확인합니다.

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- health |grep  number_of_pending_tasks
  7. 보류 중인 작업이 있는 경우 상태를 모니터링합니다.

    상태가 변경되고 클러스터가 복구 중임을 나타내는 경우 계속 대기합니다. 복구 시간은 클러스터의 크기와 기타 요인에 따라 다릅니다.

    그렇지 않으면 보류 중인 작업의 상태가 변경되지 않는 경우 복구가 중지되었음을 나타냅니다.

  8. 복구가 중단된 것처럼 보이는 경우 cluster.routing.allocation.enablenone으로 설정되어 있는지 확인합니다.

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cluster/settings?pretty
  9. cluster.routing.allocation.enablenone으로 설정되어 있으면 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"}}'
  10. 어떤 인덱스가 아직 빨간색인지 확인합니다.

    oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/indices?v
  11. 인덱스가 빨간색이면 다음 단계를 수행하여 지웁니다.

    1. 캐시를 지웁니다.

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name>/_cache/clear?pretty
    2. 최대 할당 재시도 횟수를 늘립니다.

      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}'
    3. 모든 스크롤 항목을 삭제합니다.

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_search/scroll/_all -X DELETE
    4. 시간 제한을 늘립니다.

      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"}'
  12. 이전 단계에서 빨간색 인덱스를 지우지 않으면 인덱스를 개별적으로 삭제합니다.

    1. 빨간색 인덱스 이름을 확인합니다.

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cat/indices?v
    2. 빨간색 인덱스를 삭제합니다.

      oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_red_index_name> -X DELETE
  13. 빨간색 인덱스가 없고 클러스터 상태가 빨간색이면 데이터 노드에서 지속적으로 처리 로드가 높은지 확인합니다.

    1. 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 힙 사용량을 확인합니다.

    2. CPU 사용률이 높은지 확인합니다.

추가 리소스