16.5. Critical Alerts のトラブルシューティング
16.5.1. Elasticsearch クラスターの正常性が赤である
1 つ以上のプライマリーシャードとそのレプリカがノードに割り当てられません。
トラブルシューティング
Elasticsearch クラスターの正常性を確認し、クラスターの
ステータス
が赤であることを確認します。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 をリスト表示し、この 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" と検索し、クラスターのステータスが赤または黄色の問題を修正します。
16.5.2. Elasticsearch クラスターの正常性が黄色である
1 つ以上のプライマリーシャードのレプリカシャードがノードに割り当てられません。
トラブルシューティング
-
ClusterLogging
CR でnodeCount
を調整してノード数を増やします。
関連情報
- クラスターロギングカスタムリソースについて
- ログストアの永続ストレージの設定
- Elasticsearch で "Free up or increase disk space" と検索し、クラスターのステータスが赤または黄色の問題を修正します。
16.5.3. Elasticsearch Node Disk Low Watermark Reached (Elasticsearch ノードのディスクで低い基準値に達する)
Elasticsearch で、低基準値に到達した ノードにシャードが割り当てられません。
トラブルシューティング
Elasticsearch のデプロイ先のノードを特定します。
oc -n openshift-logging get po -o wide
未割り当てのシャード
があるかどうかを確認します。oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cluster/health?pretty | grep unassigned_shards
未割り当てのシャードがある場合は、各ノードのディスク領域を確認します。
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
nodes.node_name.fs
フィールドで、対象のノードの空きディスク領域を確認します。使用済みディスクの割合が 85% を超える場合は、ノードは低基準値を超えており、シャードがこのノードに割り当てられなくなります。
- すべてのノードでディスク領域を増やしてみてください。
- ディスク領域を増やせない場合は、新しいデータノードをクラスターに追加してみてください。
新規データノードの追加に問題がある場合は、クラスターの冗長性ポリシー総数を減らします。
現在の
redundancyPolicy
を確認します。oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'
注記ClusterLogging
CR を使用している場合は、以下を入力します。oc -n openshift-logging get cl -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'
-
クラスター
redundancyPolicy
がSingleRedundancy
よりも大きい場合は、SingleRedundancy
に設定し、この変更を保存します。
前述の手順で問題が解決しない場合は、古いインデックスを削除します。
Elasticsearch の全インデックスのステータスを確認します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- indices
- 古いインデックスで削除できるものを特定します。
インデックスを削除します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name> -X DELETE
関連情報
-
クラスターロギングカスタムリソースについて の「
ClusterLogging
カスタムリソース (CR) のサンプル」で「redundancyPolicy」を参照します。
16.5.4. Elasticsearch Node Disk High Watermark Reached (Elasticsearch ノードのディスクで高い基準値に達する)
Elasticsearch が 高基準値に達した ノードからシャードを移動しようとします。
トラブルシューティング
Elasticsearch のデプロイ先のノードを特定します。
oc -n openshift-logging get po -o wide
各ノードのディスク容量を確認します。
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
クラスターがリバランスされているかどうかを確認します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_cluster/health?pretty | grep relocating_shards
コマンドの出力でシャードの再配置が表示される場合は、高い基準値を超過しています。高い基準値のデフォルト値は 90% です。
基準値のしきい値上限を超えておらず、ディスクの使用量が少ないノードに、シャードを移動します。
- シャードを特定ノードに割り当てるには、領域の一部を解放します。
- すべてのノードでディスク領域を増やしてみてください。
- ディスク領域を増やせない場合は、新しいデータノードをクラスターに追加してみてください。
新規データノードの追加に問題がある場合は、クラスターの冗長性ポリシー総数を減らします。
現在の
redundancyPolicy
を確認します。oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'
注記ClusterLogging
CR を使用している場合は、以下を入力します。oc -n openshift-logging get cl -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'
-
クラスター
redundancyPolicy
がSingleRedundancy
よりも大きい場合は、SingleRedundancy
に設定し、この変更を保存します。
前述の手順で問題が解決しない場合は、古いインデックスを削除します。
Elasticsearch の全インデックスのステータスを確認します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- indices
- 古いインデックスで削除できるものを特定します。
インデックスを削除します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name> -X DELETE
関連情報
-
クラスターロギングカスタムリソースについて の「
ClusterLogging
カスタムリソース (CR) のサンプル」で「redundancyPolicy」を参照します。
16.5.5. Elasticsearch Node Disk Flood Watermark Reached (Elasticsearch ノードのディスクがいっぱいの基準値に達する)
Elasticsearch は、両条件が含まれるすべてのインデックスに対して読み取り専用のインデックスブロックを強制的に適用します。
- 1 つ以上のシャードがノードに割り当てられます。
- 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
nodes.node_name.fs
フィールドで、対象のノードの空きディスク領域を確認します。- 使用済みディスクの割合が 95% を超える場合は、ノードがいっぱいの基準値が越えたことを意味します。この特定のノードに割り当てられたシャードへの書き込みは、ブロックされます。
- すべてのノードでディスク領域を増やしてみてください。
- ディスク領域を増やせない場合は、新しいデータノードをクラスターに追加してみてください。
新規データノードの追加に問題がある場合は、クラスターの冗長性ポリシー総数を減らします。
現在の
redundancyPolicy
を確認します。oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'
注記ClusterLogging
CR を使用している場合は、以下を入力します。oc -n openshift-logging get cl -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'
-
クラスター
redundancyPolicy
がSingleRedundancy
よりも大きい場合は、SingleRedundancy
に設定し、この変更を保存します。
前述の手順で問題が解決しない場合は、古いインデックスを削除します。
Elasticsearch の全インデックスのステータスを確認します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- indices
- 古いインデックスで削除できるものを特定します。
インデックスを削除します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name> -X DELETE
ディスク使用領域が 90% 未満になるまで、このままディスク領域を解放して監視します。次に、この特定のノードへの書き込み禁止を解除します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=_all/_settings?pretty -X PUT -d '{"index.blocks.read_only_allow_delete": null}'
関連情報
-
クラスターロギングカスタムリソースについて の「
ClusterLogging
カスタムリソース (CR) のサンプル」で「redundancyPolicy」を参照します。
16.5.6. Elasticsearch JVM ヒープの使用量が高い
Elasticsearch ノードで使用済みの JVM ヒープメモリーが 75% を超えます。
トラブルシューティング
ヒープサイズを増やす ことを検討してください。
16.5.7. 集計ロギングシステムの CPU が高い
ノード上のシステムの CPU 使用量が高くなります。
トラブルシューティング
クラスターノードの CPU を確認します。ノードへ割り当てる CPU リソースを増やすことを検討してください。
16.5.8. Elasticsearch プロセスの CPU が高い
ノードでの Elasticsearch プロセスの CPU 使用量が高くなります。
トラブルシューティング
クラスターノードの CPU を確認します。ノードへ割り当てる CPU リソースを増やすことを検討してください。
16.5.9. Elasticsearch ディスク領域が不足している
Elasticsearch クラスターは、現在のディスク使用量に基づいて次の 6 時間以内にディスク領域が不足することが予想します。
トラブルシューティング
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
-
コマンド出力の
nodes.node_name.fs
フィールドで、対象ノードの空きディスク領域を確認します。 - すべてのノードでディスク領域を増やしてみてください。
- ディスク領域を増やせない場合は、新しいデータノードをクラスターに追加してみてください。
新規データノードの追加に問題がある場合は、クラスターの冗長性ポリシー総数を減らします。
現在の
redundancyPolicy
を確認します。oc -n openshift-logging get es elasticsearch -o jsonpath='{.spec.redundancyPolicy}'
注記ClusterLogging
CR を使用している場合は、以下を入力します。oc -n openshift-logging get cl -o jsonpath='{.items[*].spec.logStore.elasticsearch.redundancyPolicy}'
-
クラスター
redundancyPolicy
がSingleRedundancy
よりも大きい場合は、SingleRedundancy
に設定し、この変更を保存します。
前述の手順で問題が解決しない場合は、古いインデックスを削除します。
Elasticsearch の全インデックスのステータスを確認します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- indices
- 古いインデックスで削除できるものを特定します。
インデックスを削除します。
oc exec -n openshift-logging -c elasticsearch <elasticsearch_pod_name> -- es_util --query=<elasticsearch_index_name> -X DELETE
関連情報
-
クラスターロギングカスタムリソースについて の「
ClusterLogging
カスタムリソース (CR) のサンプル」で「redundancyPolicy」を参照します。 - Elasticsearch アラートルール で "ElasticsearchDiskSpaceRunningLow" を参照します。
- Elasticsearch で "Free up or increase disk space" と検索し、クラスターのステータスが赤または黄色の問題を修正します。
16.5.10. Elasticsearch FileDescriptor の使用量が高い
現在の使用傾向に基づいて、ノードで予測されるファイル記述子の数は十分ではありません。
トラブルシューティング
必要に応じて、Elasticsearch ファイル記述子 のトピックで説明されているように、各ノードの max_file_descriptors
の値を確認して設定します。
関連情報
- Elasticsearch アラートルール で "ElasticsearchHighFileDescriptorUsage" を参照します。
- OpenShift Logging ダッシュボード で "File Descriptors In Use" を参照します。