Amazon Elasticsearch Service ドメインで Kibana の状態が赤いのはなぜですか?

最終更新日: 2019 年 11 月 6 日

Amazon Elasticsearch Service (Amazon ES) ドメインで Kibana の状態が赤い問題をトラブルシューティングする方法を教えてください。

簡単な説明

Elasticsearch クラスターのすべてのノードでのヘルスチェックにすべて合格すると、Kibana が緑の状態を報告します。ヘルスチェックが失敗すると、Kibana の状態が赤になります。Elasticsearch クラスターの状態が赤である場合も、Kibana の状態が赤になります。Kibana が赤くなる一般的な理由は次のとおりです。

  • Amazon Elastic Compute Cloud (Amazon EC2) インスタンスまたは Amazon Elastic Block Store (Amazon EBS) ボリュームに問題があるため、ノードが失敗します。詳細については、Elasticsearch ノードがクラッシュした理由を参照してください。
  • 1 つ以上のノードでメモリが不足しています。
  • すでに、新しい Elasticsearch バージョンアップグレードしています。
  • Kibana と Elasticsearch のバージョンには互換性がありません。
  • 高負荷で、専有マスターノードがない (または専有マスターノードに到達できない) シングルノードクラスターを実行しています。

解決方法

Amazon ES ドメインで Kibana の状態が赤色になる問題を解決するには、次の方法を 1 つ以上使用します。

注意: Elasticsearch クラスターにサーキットブレーカーの例外が表示される場合は、この記事の最後で説明するように、最初にサーキットブレーカーの制限を引き上げます。サーキットブレーカーの例外がない場合は、サーキットブレーカーの制限を引き上げる前に他の方法をお試しください。

クエリを調整する

重い集約などの複雑なクエリを実行している場合は、クエリを調整してパフォーマンスを最大化します。集計クエリに使用されるフィールドデータまたはリクエストごとのデータ構造によって、ヒープメモリ消費の急上昇が発生する可能性があります。

次の API 呼び出しの出力を確認して、急上昇の原因を特定します。es-endpoint を Amazon ES ドメインエンドポイントに置き換えます。

$curl es-endpoint/_nodes/stats/breaker?pretty
$curl "es-endpoint/_nodes/stats/indices/fielddata?level=indices&fields=*"

詳細については、Elasticsearch ドキュメントの検索速度を調整メモリ使用量の制限を参照してください。

専有マスターノードを使用する

本番稼働 Amazon ES ドメインごとに 3 つの専有マスターノードを割り当てるのがベストプラクティスです。詳細については、専有マスターインスタンスを使用してクラスターの安定性を向上させるをご覧ください。

スケールアップ

これには 2 つの方法があります。ノードの数を増やすか、メモリの多い EC2 インスタンスタイプを選択します。詳細については、Amazon ES ドメインをスケールアップする方法を教えてくださいを参照してください。

シャードディストリビューションを確認する

取り込み対象であるインデックスのシャードがデータノード間で均等に分散されていることを確認します。そうしないと、1 つ以上のデータノードでストレージスペースが不足する可能性があります。次の式を用いて、シャードが均等に分散されていることを確認します。

インデックスのシャード数 = k * (データノードの数) 。このとき、 k はノードごとのシャード数を表します。

たとえば、インデックスに 24 個のシャードと 8 個のデータノードがある場合、ノードごとには 3 つのシャードが存在します。詳細については、Amazon Elasticsearch Service をはじめよう: シャード数の算出方法をご参照ください。

バージョンを確認する

Kibana と Elasticsearch のバージョンには互換性が必要です。次の API 呼び出しを実行して確認します。es-endpoint を Amazon ES ドメインエンドポイントに置き換えます。

$curl es-endpoint/.kibana/config/_search?pretty

コマンドが成功した場合、Kibana バージョンと Elasticsearch バージョンには互換性があります。

リソースを監視する

特定のしきい値を超えてリソースを使用したときに通知する Amazon CloudWatch アラームを設定します。たとえば、JVM メモリのプレッシャーに対してアラームを設定した場合、プレッシャーが 100% に達する前に操作を実行できます。詳細については、推奨される CloudWatch アラームAmazon CloudWatch を使用した自動アラームによる Amazon Elasticsearch Service ドメインの運用効率を向上を参照してください。

サーキットブレーカーの制限を引き上げる

親データまたはフィールドデータのサーキットブレーカー制限を引き上げて、クラスターのメモリ不足を防ぐことにより、一時的に問題を解決できる場合があります。詳細については、Elasticsearch のドキュメントでサーキットブレーカーをご参照ください。