3.3. ログアラートのトラブルシューティング


次の手順を使用して、クラスター上のログアラートのトラブルシューティングを行うことができます。

3.3.1. Elasticsearch クラスターの健全性ステータスが赤になっている

1 つ以上のプライマリーシャードとそのレプリカがノードに割り当てられません。このアラートのトラブルシューティングを行うには、次の手順を使用します。

ヒント

このドキュメントの一部のコマンドは、$ES_POD_NAME シェル変数を使用して Elasticsearch Pod を参照します。このドキュメントからコマンドを直接コピーして貼り付ける場合は、この変数を Elasticsearch クラスターに有効な値に設定する必要があります。

次のコマンドを実行すると、利用可能な Elasticsearch Pod をリスト表示できます。

$ oc -n openshift-logging get pods -l component=elasticsearch

リストされている Pod のいずれかを選択し、次のコマンドを実行して $ES_POD_NAME 変数を設定します。

$ export ES_POD_NAME=<elasticsearch_pod_name>

コマンドで $ES_POD_NAME 変数を使用できるようになりました。

手順

  1. 次のコマンドを実行して、Elasticsearch クラスターの健全性をチェックし、クラスターの status の色が赤であることを確認します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- health
  2. 次のコマンドを実行して、クラスターに参加しているノードをリスト表示します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_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 $ES_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 $ES_POD_NAME \
      -- es_util --query=_cat/recovery?active_only=true

    コマンドの出力がない場合は、リカバリープロセスが保留中のタスクによって遅延しているか、停止している可能性があります。

  6. 次のコマンドを実行し、出力を確認して、保留中のタスクがあるかどうかを確認します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
      -- health | grep number_of_pending_tasks
  7. 保留中のタスクがある場合は、そのステータスを監視します。そのステータスが変化し、クラスターがリカバリー中の場合は、そのまま待機します。リカバリー時間は、クラスターのサイズや他の要素により異なります。保留中のタスクのステータスが変更されない場合は、リカバリーが停止していることがわかります。
  8. リカバリーが停止しているように見える場合は、次のコマンドを実行して出力を確認し、cluster.routing.allocation.enable 値が none に設定されているかどうかを確認します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
      -- es_util --query=_cluster/settings?pretty
  9. cluster.routing.allocation.enable 値が none に設定されている場合は、次のコマンドを実行して all に設定します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_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 $ES_POD_NAME \
      -- es_util --query=_cat/indices?v
  11. インデックスがまだ赤い場合は、以下の手順を実行して赤のインデックスをなくします。

    1. 次のコマンドを実行してキャッシュをクリアします。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
        -- es_util --query=<elasticsearch_index_name>/_cache/clear?pretty
    2. 次のコマンドを実行して、割り当ての最大再試行回数を増やします。

      $ oc exec -n openshift-logging -c elasticsearch $ES_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 $ES_POD_NAME \
        -- es_util --query=_search/scroll/_all -X DELETE
    4. 次のコマンドを実行してタイムアウトを増やします。

      $ oc exec -n openshift-logging -c elasticsearch $ES_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 $ES_POD_NAME \
        -- es_util --query=_cat/indices?v
    2. 次のコマンドを実行して、赤いインデックスを削除します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
        -- es_util --query=<elasticsearch_red_index_name> -X DELETE
  13. 赤色のインデックスがなく、クラスターのステータスが赤の場合は、データノードで継続的に過剰な処理負荷がかかっていないかを確認します。

    1. 次のコマンドを実行して、Elasticsearch JVM ヒープの使用率が高いかどうかを確認します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
        -- es_util --query=_nodes/stats?pretty

      コマンド出力で node_name.jvm.mem.heap_used_percent フィールドを確認し、JVM ヒープ使用量を判別します。

    2. 使用量が多い CPU がないかを確認します。CPU 使用率の詳細は、OpenShift Container Platform ドキュメント「モニタリングダッシュボードの確認」を参照してください。

3.3.2. Elasticsearch クラスターの正常性が黄色である

1 つ以上のプライマリーシャードのレプリカシャードがノードに割り当てられません。ClusterLogging カスタムリソース (CR) の nodeCount 値を調整して、ノード数を増やします。

3.3.3. Elasticsearch ノードのディスクの最低水準点に達した

Elasticsearch は、最低水準点に達するノードにシャードを割り当てません。

ヒント

このドキュメントの一部のコマンドは、$ES_POD_NAME シェル変数を使用して Elasticsearch Pod を参照します。このドキュメントからコマンドを直接コピーして貼り付ける場合は、この変数を Elasticsearch クラスターに有効な値に設定する必要があります。

次のコマンドを実行すると、利用可能な Elasticsearch Pod をリスト表示できます。

$ oc -n openshift-logging get pods -l component=elasticsearch

リストされている Pod のいずれかを選択し、次のコマンドを実行して $ES_POD_NAME 変数を設定します。

$ export ES_POD_NAME=<elasticsearch_pod_name>

コマンドで $ES_POD_NAME 変数を使用できるようになりました。

手順

  1. 次のコマンドを実行して、Elasticsearch がデプロイされているノードを特定します。

    $ oc -n openshift-logging get po -o wide
  2. 次のコマンドを実行して、未割り当てのシャードがあるかどうかを確認します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
      -- es_util --query=_cluster/health?pretty | grep unassigned_shards
  3. 未割り当てのシャードがある場合は、次のコマンドを実行して、各ノードのディスク容量を確認します。

    $ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \
      do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \
      -- df -h /elasticsearch/persistent; done
  4. コマンド出力で、Use 列を確認して、そのノードで使用されているディスクの割合を確認します。

    出力例

    elasticsearch-cdm-kcrsda6l-1-586cc95d4f-h8zq8
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme1n1     19G  522M   19G   3% /elasticsearch/persistent
    elasticsearch-cdm-kcrsda6l-2-5b548fc7b-cwwk7
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme2n1     19G  522M   19G   3% /elasticsearch/persistent
    elasticsearch-cdm-kcrsda6l-3-5dfc884d99-59tjw
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme3n1     19G  528M   19G   3% /elasticsearch/persistent

    使用済みディスクの割合が 85% を超える場合は、ノードは低基準値を超えており、シャードがこのノードに割り当てられなくなります。

  5. 現在の redundancyPolicy を確認するには、次のコマンドを実行します。

    $ oc -n openshift-logging get es elasticsearch \
      -o jsonpath='{.spec.redundancyPolicy}'

    クラスターで ClusterLogging リソースを使用している場合は、次のコマンドを実行します。

    $ oc -n openshift-logging get cl \
      -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'

    クラスター redundancyPolicy 値が SingleRedundancy 値より大きい場合は、それを SingleRedundancy 値に設定し、この変更を保存します。

  6. 前述の手順で問題が解決しない場合は、古いインデックスを削除します。

    1. 次のコマンドを実行して、Elasticsearch 上のすべてのインデックスのステータスを確認します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
    2. 古いインデックスで削除できるものを特定します。
    3. 次のコマンドを実行してインデックスを削除します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
        -- es_util --query=<elasticsearch_index_name> -X DELETE

3.3.4. Elasticsearch ノードのディスク最高水準点に達した

Elasticsearch は、高基準値に達したノードから、基準値のしきい値制限を超えていないディスク使用量の低いノードにシャードを再配置しようとします。

シャードを特定のノードに割り当てるには、そのノード上のスペースを解放する必要があります。ディスク容量を増やすことができない場合は、新しいデータノードをクラスターに追加するか、クラスターの合計冗長性ポリシーを減らしてみてください。

ヒント

このドキュメントの一部のコマンドは、$ES_POD_NAME シェル変数を使用して Elasticsearch Pod を参照します。このドキュメントからコマンドを直接コピーして貼り付ける場合は、この変数を Elasticsearch クラスターに有効な値に設定する必要があります。

次のコマンドを実行すると、利用可能な Elasticsearch Pod をリスト表示できます。

$ oc -n openshift-logging get pods -l component=elasticsearch

リストされている Pod のいずれかを選択し、次のコマンドを実行して $ES_POD_NAME 変数を設定します。

$ export ES_POD_NAME=<elasticsearch_pod_name>

コマンドで $ES_POD_NAME 変数を使用できるようになりました。

手順

  1. 次のコマンドを実行して、Elasticsearch がデプロイされているノードを特定します。

    $ oc -n openshift-logging get po -o wide
  2. 各ノードのディスク容量を確認します。

    $ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \
      do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \
      -- df -h /elasticsearch/persistent; done
  3. クラスターがリバランスされているかどうかを確認します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
      -- es_util --query=_cluster/health?pretty | grep relocating_shards

    コマンド出力にシャードの再配置が示されている場合は、最高水準点を超えています。最高水準点のデフォルト値は 90% です。

  4. すべてのノードのディスク容量を増やします。ディスク容量を増やすことができない場合は、新しいデータノードをクラスターに追加するか、クラスターの合計冗長性ポリシーを減らしてみてください。
  5. 現在の redundancyPolicy を確認するには、次のコマンドを実行します。

    $ oc -n openshift-logging get es elasticsearch \
      -o jsonpath='{.spec.redundancyPolicy}'

    クラスターで ClusterLogging リソースを使用している場合は、次のコマンドを実行します。

    $ oc -n openshift-logging get cl \
      -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'

    クラスター redundancyPolicy 値が SingleRedundancy 値より大きい場合は、それを SingleRedundancy 値に設定し、この変更を保存します。

  6. 前述の手順で問題が解決しない場合は、古いインデックスを削除します。

    1. 次のコマンドを実行して、Elasticsearch 上のすべてのインデックスのステータスを確認します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
    2. 古いインデックスで削除できるものを特定します。
    3. 次のコマンドを実行してインデックスを削除します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
        -- es_util --query=<elasticsearch_index_name> -X DELETE

3.3.5. Elasticsearch ノードのディスクがいっぱいの基準値に達した

Elasticsearch は、両条件が含まれるすべてのインデックスに対して読み取り専用のインデックスブロックを強制的に適用します。

  • 1 つ以上のシャードがノードに割り当てられます。
  • 1 つ以上のディスクが いっぱいの段階 を超えています。

このアラートのトラブルシューティングを行うには、次の手順を使用します。

ヒント

このドキュメントの一部のコマンドは、$ES_POD_NAME シェル変数を使用して Elasticsearch Pod を参照します。このドキュメントからコマンドを直接コピーして貼り付ける場合は、この変数を Elasticsearch クラスターに有効な値に設定する必要があります。

次のコマンドを実行すると、利用可能な Elasticsearch Pod をリスト表示できます。

$ oc -n openshift-logging get pods -l component=elasticsearch

リストされている Pod のいずれかを選択し、次のコマンドを実行して $ES_POD_NAME 変数を設定します。

$ export ES_POD_NAME=<elasticsearch_pod_name>

コマンドで $ES_POD_NAME 変数を使用できるようになりました。

手順

  1. Elasticsearch ノードのディスク領域を取得します。

    $ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \
      do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \
      -- df -h /elasticsearch/persistent; done
  2. コマンド出力で、Avail 列を確認して、そのノード上の空きディスク容量を確認します。

    出力例

    elasticsearch-cdm-kcrsda6l-1-586cc95d4f-h8zq8
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme1n1     19G  522M   19G   3% /elasticsearch/persistent
    elasticsearch-cdm-kcrsda6l-2-5b548fc7b-cwwk7
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme2n1     19G  522M   19G   3% /elasticsearch/persistent
    elasticsearch-cdm-kcrsda6l-3-5dfc884d99-59tjw
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme3n1     19G  528M   19G   3% /elasticsearch/persistent

  3. すべてのノードのディスク容量を増やします。ディスク容量を増やすことができない場合は、新しいデータノードをクラスターに追加するか、クラスターの合計冗長性ポリシーを減らしてみてください。
  4. 現在の redundancyPolicy を確認するには、次のコマンドを実行します。

    $ oc -n openshift-logging get es elasticsearch \
      -o jsonpath='{.spec.redundancyPolicy}'

    クラスターで ClusterLogging リソースを使用している場合は、次のコマンドを実行します。

    $ oc -n openshift-logging get cl \
      -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'

    クラスター redundancyPolicy 値が SingleRedundancy 値より大きい場合は、それを SingleRedundancy 値に設定し、この変更を保存します。

  5. 前述の手順で問題が解決しない場合は、古いインデックスを削除します。

    1. 次のコマンドを実行して、Elasticsearch 上のすべてのインデックスのステータスを確認します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
    2. 古いインデックスで削除できるものを特定します。
    3. 次のコマンドを実行してインデックスを削除します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
        -- es_util --query=<elasticsearch_index_name> -X DELETE
  6. ディスク領域の解放と監視を続けます。使用されているディスク容量が 90% を下回ったら、次のコマンドを実行して、このノードへの書き込みのブロックを解除します。

    $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
      -- es_util --query=_all/_settings?pretty \
      -X PUT -d '{"index.blocks.read_only_allow_delete": null}'

3.3.6. Elasticsearch JVM ヒープ使用量が多い

Elasticsearch ノードの Java 仮想マシン (JVM) ヒープメモリーの使用量が 75% を超えています。ヒープサイズを増やす ことを検討してください。

3.3.7. 集計ロギングシステムの CPU が高い

ノード上のシステムの CPU 使用量が高くなります。クラスターノードの CPU を確認します。ノードへ割り当てる CPU リソースを増やすことを検討してください。

3.3.8. Elasticsearch プロセスの CPU が高い

ノードでの Elasticsearch プロセスの CPU 使用量が高くなります。クラスターノードの CPU を確認します。ノードへ割り当てる CPU リソースを増やすことを検討してください。

3.3.9. Elasticsearch ディスク領域が不足している

現在のディスク使用量に基づいて、Elasticsearch は今後 6 時間以内にディスク容量が不足すると予測されています。このアラートのトラブルシューティングを行うには、次の手順を使用します。

手順

  1. Elasticsearch ノードのディスク領域を取得します。

    $ for pod in `oc -n openshift-logging get po -l component=elasticsearch -o jsonpath='{.items[*].metadata.name}'`; \
      do echo $pod; oc -n openshift-logging exec -c elasticsearch $pod \
      -- df -h /elasticsearch/persistent; done
  2. コマンド出力で、Avail 列を確認して、そのノード上の空きディスク容量を確認します。

    出力例

    elasticsearch-cdm-kcrsda6l-1-586cc95d4f-h8zq8
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme1n1     19G  522M   19G   3% /elasticsearch/persistent
    elasticsearch-cdm-kcrsda6l-2-5b548fc7b-cwwk7
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme2n1     19G  522M   19G   3% /elasticsearch/persistent
    elasticsearch-cdm-kcrsda6l-3-5dfc884d99-59tjw
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/nvme3n1     19G  528M   19G   3% /elasticsearch/persistent

  3. すべてのノードのディスク容量を増やします。ディスク容量を増やすことができない場合は、新しいデータノードをクラスターに追加するか、クラスターの合計冗長性ポリシーを減らしてみてください。
  4. 現在の redundancyPolicy を確認するには、次のコマンドを実行します。

    $ oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'

    クラスターで ClusterLogging リソースを使用している場合は、次のコマンドを実行します。

    $ oc -n openshift-logging get cl \
      -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'

    クラスター redundancyPolicy 値が SingleRedundancy 値より大きい場合は、それを SingleRedundancy 値に設定し、この変更を保存します。

  5. 前述の手順で問題が解決しない場合は、古いインデックスを削除します。

    1. 次のコマンドを実行して、Elasticsearch 上のすべてのインデックスのステータスを確認します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME -- indices
    2. 古いインデックスで削除できるものを特定します。
    3. 次のコマンドを実行してインデックスを削除します。

      $ oc exec -n openshift-logging -c elasticsearch $ES_POD_NAME \
        -- es_util --query=<elasticsearch_index_name> -X DELETE

3.3.10. Elasticsearch FileDescriptor の使用量が高い

現在の使用傾向に基づいて、ノードで予測されるファイル記述子の数は十分ではありません。Elasticsearch ファイル記述子 のドキュメントの説明に従って、各ノードの max_file_descriptors の値を確認します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.