Menu Close
Settings Close

Language and Page Formatting Options

12.5. Critical Alerts のトラブルシューティング

12.5.1. Elasticsearch クラスターの正常性が赤である

1 つ以上のプライマリーシャードとそのレプリカがノードに割り当てられません。

トラブルシューティング

  1. Elasticsearch クラスターの正常性を確認し、クラスターの ステータス が赤であることを確認します。

    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 を一覧表示し、この 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 がないかを確認します。

関連情報